@pendle/core-v2 2.20.0 → 2.21.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 (665) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol/ExcessivelySafeCall.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.json +2 -2
  10. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  12. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  13. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  15. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
  17. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.json +2 -2
  19. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  21. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  22. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  23. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  24. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  25. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  26. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  29. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  30. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  31. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  32. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  33. package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  36. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
  38. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  40. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  42. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  44. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.json +0 -19
  46. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -21
  48. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  50. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  53. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.json +2 -2
  54. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/StandardizedYield/SYUtils.sol/SYUtils.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.json +2 -2
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.dbg.json +1 -1
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.json +2 -2
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.dbg.json +1 -1
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.json +2 -2
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.json +2 -2
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.json +2 -2
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +1 -1
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.dbg.json +1 -1
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.dbg.json +1 -1
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +1 -1
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol/PendleAuraBalancerStableLPSYV2.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +1 -1
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  83. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  84. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  85. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  86. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol/CamelotRewardHelper.dbg.json +1 -1
  87. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol/CamelotV1VolatileCommon.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileLpHelper.sol/CamelotV1VolatileLpHelper.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol/CamelotV1VolatilePreview.dbg.json +1 -1
  90. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.json +2 -2
  92. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  93. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  94. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  95. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  96. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  97. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  98. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
  99. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  100. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.dbg.json +1 -1
  101. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
  102. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +2 -2
  103. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.dbg.json +1 -1
  104. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.json +2 -2
  105. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  106. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  107. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.dbg.json +1 -1
  108. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.json +2 -2
  109. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.dbg.json +1 -1
  110. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.json +2 -2
  111. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  112. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  113. package/build/artifacts/contracts/core/TradingBot/DecisionHelper/BotDecisionHelperBase.sol/BotDecisionHelperBase.dbg.json +4 -0
  114. package/build/artifacts/contracts/core/TradingBot/DecisionHelper/BotDecisionHelperBase.sol/BotDecisionHelperBase.json +816 -0
  115. package/build/artifacts/contracts/core/TradingBot/DecisionHelper/LongYieldDecisionHelper.sol/LongYieldDecisionHelper.dbg.json +4 -0
  116. package/build/artifacts/contracts/core/TradingBot/DecisionHelper/LongYieldDecisionHelper.sol/LongYieldDecisionHelper.json +1411 -0
  117. package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.dbg.json +4 -0
  118. package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.json +2240 -0
  119. package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.dbg.json +4 -0
  120. package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.json +1641 -0
  121. package/build/artifacts/contracts/core/TradingBot/libraries/BotSimulationLib.sol/BotSimulationLib.dbg.json +4 -0
  122. package/build/artifacts/contracts/core/TradingBot/libraries/BotSimulationLib.sol/BotSimulationLib.json +10 -0
  123. package/build/artifacts/contracts/core/TradingBot/libraries/LongYieldActionLib.sol/LongYieldActionLib.dbg.json +4 -0
  124. package/build/artifacts/contracts/core/TradingBot/libraries/LongYieldActionLib.sol/LongYieldActionLib.json +154 -0
  125. package/build/artifacts/contracts/core/TradingBot/libraries/MarketExtLib.sol/MarketExtLib.dbg.json +4 -0
  126. package/build/artifacts/contracts/core/TradingBot/libraries/MarketExtLib.sol/MarketExtLib.json +24 -0
  127. package/build/artifacts/contracts/core/TradingBot/libraries/SpecSegmentLib.sol/SpecSegmentLib.dbg.json +4 -0
  128. package/build/artifacts/contracts/core/TradingBot/libraries/SpecSegmentLib.sol/SpecSegmentLib.json +10 -0
  129. package/build/artifacts/contracts/core/TradingBot/libraries/TvlLib.sol/TvlLib.dbg.json +4 -0
  130. package/build/artifacts/contracts/core/TradingBot/libraries/TvlLib.sol/TvlLib.json +262 -0
  131. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  132. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  133. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  134. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  135. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  136. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  137. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  138. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +1 -1
  139. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +1 -1
  140. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.json +2 -2
  141. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +1 -1
  142. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +2 -2
  143. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +1 -1
  144. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +2 -2
  145. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  146. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  147. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  148. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +1 -1
  149. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +1 -1
  150. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
  151. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
  152. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  153. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +151 -2
  154. package/build/artifacts/contracts/core/libraries/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  155. package/build/artifacts/contracts/core/libraries/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  156. package/build/artifacts/contracts/core/libraries/StringLib.sol/StringLib.dbg.json +1 -1
  157. package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.dbg.json +4 -0
  158. package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.json +10 -0
  159. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  160. package/build/artifacts/contracts/core/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  161. package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.dbg.json +1 -1
  162. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +1 -1
  163. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +1 -1
  164. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
  165. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +1 -1
  166. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +1 -1
  167. package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.dbg.json +1 -1
  168. package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +1 -1
  169. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +1 -1
  170. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +1 -1
  171. package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +1 -1
  172. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
  173. package/build/artifacts/contracts/interfaces/Camelot/ICamelotFactory.sol/ICamelotFactory.dbg.json +1 -1
  174. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTFactory.sol/ICamelotNFTFactory.dbg.json +1 -1
  175. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTHandler.sol/ICamelotNFTHandler.dbg.json +1 -1
  176. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTPool.sol/ICamelotNFTPool.dbg.json +1 -1
  177. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPool.sol/ICamelotNitroPool.dbg.json +1 -1
  178. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPoolFactory.sol/ICamelotNitroPoolFactory.dbg.json +1 -1
  179. package/build/artifacts/contracts/interfaces/Camelot/ICamelotPair.sol/ICamelotPair.dbg.json +1 -1
  180. package/build/artifacts/contracts/interfaces/Camelot/ICamelotRouter.sol/ICamelotRouter.dbg.json +1 -1
  181. package/build/artifacts/contracts/interfaces/Camelot/ICamelotYieldBooster.sol/ICamelotYieldBooster.dbg.json +1 -1
  182. package/build/artifacts/contracts/interfaces/Camelot/IXGrail.sol/IXGrail.dbg.json +1 -1
  183. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +1 -1
  184. package/build/artifacts/contracts/interfaces/ConvexCurve/ICrvDepositor.sol/ICrvDepositor.dbg.json +1 -1
  185. package/build/artifacts/contracts/interfaces/ConvexCurve/ICvxCrv.sol/ICvxCrv.dbg.json +1 -1
  186. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
  187. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
  188. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +1 -1
  189. package/build/artifacts/contracts/interfaces/Frax/IFrxEthMinter.sol/IFrxEthMinter.dbg.json +1 -1
  190. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.dbg.json +1 -1
  191. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.dbg.json +1 -1
  192. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.dbg.json +1 -1
  193. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.dbg.json +1 -1
  194. package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.dbg.json +1 -1
  195. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
  196. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  197. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  198. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.dbg.json +1 -1
  199. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.dbg.json +1 -1
  200. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  201. package/build/artifacts/contracts/interfaces/ILayerZeroEndpoint.sol/ILayerZeroEndpoint.dbg.json +1 -1
  202. package/build/artifacts/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +1 -1
  203. package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.dbg.json +1 -1
  204. package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.dbg.json +1 -1
  205. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  206. package/build/artifacts/contracts/interfaces/IPActionInfoStatic.sol/IPActionInfoStatic.dbg.json +1 -1
  207. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  208. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.json +6 -82
  209. package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
  210. package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.json +22 -22
  211. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  212. package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.dbg.json +1 -1
  213. package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.json +4 -42
  214. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
  215. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  216. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  217. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  218. package/build/artifacts/contracts/interfaces/IPActionVePendleStatic.sol/IPActionVePendleStatic.dbg.json +1 -1
  219. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  220. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  221. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
  222. package/build/artifacts/contracts/interfaces/IPBulkSellerSYCallback.sol/IPBulkSellerCallback.dbg.json +1 -1
  223. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  224. package/build/artifacts/contracts/interfaces/IPFeeDistributorV2.sol/IPFeeDistributorV2.dbg.json +1 -1
  225. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
  226. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.json +0 -19
  227. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  228. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  229. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  230. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.dbg.json +1 -1
  231. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  232. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +0 -19
  233. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  234. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  235. package/build/artifacts/contracts/interfaces/IPMiniDiamond.sol/IPMiniDiamond.dbg.json +1 -1
  236. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
  237. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
  238. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  239. package/build/artifacts/contracts/interfaces/IPPtOracle.sol/IPPtOracle.dbg.json +1 -1
  240. package/build/artifacts/contracts/interfaces/IPRouterHelper.sol/IPRouterHelper.dbg.json +1 -1
  241. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  242. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +32 -146
  243. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  244. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  245. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  246. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  247. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  248. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.dbg.json +1 -1
  249. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  250. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  251. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  252. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  253. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  254. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  255. package/build/artifacts/contracts/interfaces/IStargateLP.sol/IStargateLP.dbg.json +1 -1
  256. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  257. package/build/artifacts/contracts/interfaces/IStargateStaking.sol/IStargateStaking.dbg.json +1 -1
  258. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  259. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  260. package/build/artifacts/contracts/interfaces/TradingBot/IBotDecisionHelper.sol/IBotDecisionHelper.dbg.json +4 -0
  261. package/build/artifacts/contracts/interfaces/TradingBot/IBotDecisionHelper.sol/IBotDecisionHelper.json +679 -0
  262. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldDecisionHelper.sol/ILongYieldDecisionHelper.dbg.json +4 -0
  263. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldDecisionHelper.sol/ILongYieldDecisionHelper.json +698 -0
  264. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.dbg.json +4 -0
  265. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.json +745 -0
  266. package/build/artifacts/contracts/interfaces/TradingBot/IShortYieldDecisionHelper.sol/IShortYieldDecisionHelper.dbg.json +4 -0
  267. package/build/artifacts/contracts/interfaces/TradingBot/IShortYieldDecisionHelper.sol/IShortYieldDecisionHelper.json +679 -0
  268. package/build/artifacts/contracts/interfaces/TradingBot/IShortYieldTradingBot.sol/IShortYieldTradingBot.dbg.json +4 -0
  269. package/build/artifacts/contracts/interfaces/TradingBot/IShortYieldTradingBot.sol/IShortYieldTradingBot.json +794 -0
  270. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.dbg.json +4 -0
  271. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.json +351 -0
  272. package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.dbg.json +1 -1
  273. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
  274. package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.dbg.json +1 -1
  275. package/build/artifacts/contracts/offchain-helpers/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
  276. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
  277. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.json +2 -2
  278. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  279. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  280. package/build/artifacts/contracts/offchain-helpers/EmptyUUPS.sol/EmptyUUPS.dbg.json +1 -1
  281. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.dbg.json +1 -1
  282. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.json +2 -2
  283. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +1 -1
  284. package/build/artifacts/contracts/offchain-helpers/PendleMulticallV1.sol/PendleMulticallV1.dbg.json +1 -1
  285. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  286. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
  287. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  288. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
  289. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  290. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +8 -84
  291. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  292. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +24 -24
  293. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  294. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +6 -44
  295. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  296. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -2
  297. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  298. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
  299. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  300. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
  301. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.json +2 -2
  302. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.dbg.json +1 -1
  303. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.json +2 -2
  304. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.dbg.json +1 -1
  305. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.json +2 -2
  306. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.dbg.json +1 -1
  307. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.json +2 -2
  308. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.dbg.json +1 -1
  309. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.json +2 -2
  310. package/build/artifacts/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol/PendlePtUsdChainlinkOracle.dbg.json +1 -1
  311. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  312. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
  313. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  314. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
  315. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  316. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  317. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
  318. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  319. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
  320. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  321. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  322. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.dbg.json +1 -1
  323. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.json +2 -2
  324. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +1 -1
  325. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  326. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  327. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  328. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  329. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  330. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  331. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +1 -1
  332. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
  333. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +1 -1
  334. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol/IExecutorHelper.dbg.json +1 -1
  335. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IHashflow.sol/IHashflow.dbg.json +1 -1
  336. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +1 -1
  337. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberInputScalingHelper.sol/KyberInputScalingHelper.dbg.json +1 -1
  338. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.dbg.json +1 -1
  339. package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +0 -4
  340. package/contracts/core/Market/PendleGauge.sol +2 -3
  341. package/contracts/core/StandardizedYield/PYIndex.sol +14 -0
  342. package/contracts/core/TradingBot/DecisionHelper/BotDecisionHelperBase.sol +265 -0
  343. package/contracts/core/TradingBot/DecisionHelper/LongYieldDecisionHelper.sol +333 -0
  344. package/contracts/core/TradingBot/LongYieldTradingBot.sol +144 -0
  345. package/contracts/core/TradingBot/TradingBotBase.sol +253 -0
  346. package/contracts/core/TradingBot/libraries/BotSimulationLib.sol +99 -0
  347. package/contracts/core/TradingBot/libraries/LongYieldActionLib.sol +308 -0
  348. package/contracts/core/TradingBot/libraries/MarketExtLib.sol +272 -0
  349. package/contracts/core/TradingBot/libraries/SpecSegmentLib.sol +78 -0
  350. package/contracts/core/TradingBot/libraries/TvlLib.sol +69 -0
  351. package/contracts/core/libraries/Errors.sol +12 -0
  352. package/contracts/core/libraries/TokenAmountLib.sol +47 -0
  353. package/contracts/interfaces/IPActionInfoStatic.sol +7 -8
  354. package/contracts/interfaces/IPActionMarketAuxStatic.sol +14 -21
  355. package/contracts/interfaces/IPActionMarketCoreStatic.sol +67 -70
  356. package/contracts/interfaces/IPActionMintRedeemStatic.sol +11 -23
  357. package/contracts/interfaces/IPGauge.sol +0 -3
  358. package/contracts/interfaces/IPRouterStatic.sol +1 -5
  359. package/contracts/interfaces/IStandardizedYield.sol +10 -15
  360. package/contracts/interfaces/TradingBot/IBotDecisionHelper.sol +76 -0
  361. package/contracts/interfaces/TradingBot/ILongYieldDecisionHelper.sol +8 -0
  362. package/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol +74 -0
  363. package/contracts/interfaces/TradingBot/IShortYieldDecisionHelper.sol +7 -0
  364. package/contracts/interfaces/TradingBot/IShortYieldTradingBot.sol +27 -0
  365. package/contracts/interfaces/TradingBot/ITradingBotBase.sol +54 -0
  366. package/contracts/offchain-helpers/BulkSellerOffchain.sol +8 -11
  367. package/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol +11 -14
  368. package/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol +37 -96
  369. package/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol +80 -88
  370. package/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol +14 -43
  371. package/contracts/oracles/PendleLpOracleLib.sol +1 -1
  372. package/deployments/core.ts +29 -0
  373. package/deployments/index.ts +4 -0
  374. package/deployments/markets/ape-june-29-2023.ts +3 -0
  375. package/deployments/markets/balancer-reth-dec-28-2023.ts +3 -0
  376. package/deployments/markets/balancer-wsteth-jun-27-2024.ts +3 -0
  377. package/deployments/markets/curve-fraxusdc-march-30-2023.ts +3 -0
  378. package/deployments/markets/index.ts +17 -0
  379. package/deployments/markets/looks-march-30-2023.ts +3 -0
  380. package/deployments/markets/steth-june-29-2023.ts +3 -0
  381. package/deployments/markets/steth-march-30-2023.ts +3 -0
  382. package/deployments/markets/types.ts +9 -0
  383. package/deployments/misc.ts +23 -0
  384. package/package.json +1 -1
  385. package/typechain-types/ActionMarketAuxStatic.ts +38 -191
  386. package/typechain-types/ActionMarketCoreStatic.ts +134 -600
  387. package/typechain-types/ActionMintRedeemStatic.ts +26 -92
  388. package/typechain-types/AuraEthxBbAWethSY.ts +1532 -0
  389. package/typechain-types/AuraSwEthBbAWethSYV2.ts +1532 -0
  390. package/typechain-types/AutomateReady.ts +102 -0
  391. package/typechain-types/AutomationBase.ts +57 -0
  392. package/typechain-types/AutomationCompatible.ts +140 -0
  393. package/typechain-types/AutomationCompatibleInterface.ts +141 -0
  394. package/typechain-types/BotDecisionHelperBase.ts +508 -0
  395. package/typechain-types/ChainlinkRelayerAutomation.ts +305 -0
  396. package/typechain-types/ChainlinkRelayerGelato.ts +311 -0
  397. package/typechain-types/ComposableStablePreviewProxy.ts +352 -0
  398. package/typechain-types/ComposableStablePreviewV4.ts +217 -0
  399. package/typechain-types/ComposableStablePreviewV5.ts +217 -0
  400. package/typechain-types/{CamelotV1Preview.ts → HLPPricingHelper.ts} +50 -84
  401. package/typechain-types/IAnkrBNB.ts +150 -0
  402. package/typechain-types/IAnkrLiquidStaking.ts +253 -0
  403. package/typechain-types/IAutomate.ts +203 -0
  404. package/typechain-types/IBotDecisionHelper.ts +208 -239
  405. package/typechain-types/IEUSD.ts +194 -0
  406. package/typechain-types/IFluxErc20.ts +298 -0
  407. package/typechain-types/IFluxInterestRateModel.ts +113 -0
  408. package/typechain-types/IHLPStaking.ts +154 -0
  409. package/typechain-types/IHMXCalculator.ts +96 -0
  410. package/typechain-types/IHMXCompounder.ts +122 -0
  411. package/typechain-types/IHMXStaking.ts +165 -0
  412. package/typechain-types/IHMXVester.ts +163 -0
  413. package/typechain-types/IInterestUSTP.ts +156 -0
  414. package/typechain-types/IKyberElasticFactory.ts +734 -0
  415. package/typechain-types/IKyberElasticPool.ts +514 -0
  416. package/typechain-types/IKyberElasticRouter.ts +315 -0
  417. package/typechain-types/IKyberLiquidityMining.ts +968 -0
  418. package/typechain-types/IKyberMathHelper.ts +231 -0
  419. package/typechain-types/IKyberPositionManager.ts +773 -0
  420. package/typechain-types/ILongYieldDecisionHelper.ts +512 -0
  421. package/typechain-types/ILongYieldTradingBot.ts +197 -502
  422. package/typechain-types/IOpsProxyFactory.ts +93 -0
  423. package/typechain-types/IPActionMarketAuxStatic.ts +38 -191
  424. package/typechain-types/IPActionMarketCoreStatic.ts +134 -600
  425. package/typechain-types/IPActionMintRedeemStatic.ts +26 -92
  426. package/typechain-types/IPComposableStablePreview.ts +217 -0
  427. package/typechain-types/IPExternalRewardDistributor.ts +198 -0
  428. package/typechain-types/IPGauge.ts +3 -23
  429. package/typechain-types/IPMarket.ts +0 -18
  430. package/typechain-types/IPMarketFactoryV2.ts +253 -0
  431. package/typechain-types/{ICamelotSY.ts → IPOracleForSy.ts} +13 -26
  432. package/typechain-types/IPRouterStatic.ts +197 -888
  433. package/typechain-types/IRebasingUSTP.ts +133 -0
  434. package/typechain-types/IShortYieldDecisionHelper.ts +476 -0
  435. package/typechain-types/IShortYieldTradingBot.ts +574 -0
  436. package/typechain-types/IStaderStakeManager.ts +700 -0
  437. package/typechain-types/{IExecutorHelper2.ts → ISwETH.ts} +40 -32
  438. package/typechain-types/ITaskTreasuryUpgradable.ts +160 -0
  439. package/typechain-types/ITradingBotBase.ts +97 -247
  440. package/typechain-types/IUSTP.ts +127 -0
  441. package/typechain-types/IVersion.ts +81 -0
  442. package/typechain-types/KyberMathHelper.ts +583 -0
  443. package/typechain-types/KyberNftManagerBase.ts +364 -0
  444. package/typechain-types/LegacyNFTHelper.ts +87 -0
  445. package/typechain-types/LongYieldActionLib.ts +57 -0
  446. package/typechain-types/LongYieldDecisionHelper.ts +663 -0
  447. package/typechain-types/LongYieldTradingBot.ts +1374 -437
  448. package/typechain-types/PendleAnkrBNBSY.ts +1235 -0
  449. package/typechain-types/PendleAuraWethVethSY.ts +1511 -0
  450. package/typechain-types/PendleAuraWstethAnkreth.ts +1511 -0
  451. package/typechain-types/PendleBridgedLSDSY.ts +1222 -0
  452. package/typechain-types/PendleChainlinkReceiver.ts +239 -0
  453. package/typechain-types/PendleChainlinkRelayer.ts +158 -0
  454. package/typechain-types/{PendleBinanceEth.ts → PendleERC4626SY.ts} +18 -31
  455. package/typechain-types/PendleETHXSY.ts +1231 -0
  456. package/typechain-types/PendleEUSDSY.ts +1216 -0
  457. package/typechain-types/PendleExternalRewardDistributor.ts +596 -0
  458. package/typechain-types/PendleFluxLendingSY.ts +1232 -0
  459. package/typechain-types/PendleGauge.ts +3 -23
  460. package/typechain-types/PendleGaugeV2.ts +225 -0
  461. package/typechain-types/PendleHlpSY.ts +1517 -0
  462. package/typechain-types/PendleIUSTPSY.ts +1255 -0
  463. package/typechain-types/{PendleCamelotV1SY.ts → PendleKyberElasticSY.ts} +385 -516
  464. package/typechain-types/PendleMantleStakedEthSY.ts +1222 -0
  465. package/typechain-types/PendleMarket.ts +0 -18
  466. package/typechain-types/PendleMarketFactoryV2.ts +932 -0
  467. package/typechain-types/PendleMarketV2.ts +1311 -0
  468. package/typechain-types/PendleMulticallV2.ts +241 -0
  469. package/typechain-types/PendleOracleForSyProxy.ts +275 -0
  470. package/typechain-types/SDKErrorsDirectory.ts +57 -0
  471. package/typechain-types/StarNFTV1.ts +880 -0
  472. package/typechain-types/SwETHSY.ts +1216 -0
  473. package/typechain-types/TradingBotBase.ts +1275 -157
  474. package/typechain-types/TvlLib.ts +215 -0
  475. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
  476. package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
  477. package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +7 -83
  478. package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +23 -23
  479. package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +5 -43
  480. package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
  481. package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -1
  482. package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
  483. package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
  484. package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
  485. package/typechain-types/factories/AuraEthxBbAWethSY__factory.ts +1240 -0
  486. package/typechain-types/factories/AuraSwEthBbAWethSYV2__factory.ts +1244 -0
  487. package/typechain-types/factories/{ICamelotSY__factory.ts → AutomateReady__factory.ts} +9 -9
  488. package/typechain-types/factories/AutomationBase__factory.ts +69 -0
  489. package/typechain-types/factories/AutomationCompatibleInterface__factory.ts +67 -0
  490. package/typechain-types/factories/AutomationCompatible__factory.ts +72 -0
  491. package/typechain-types/factories/BotDecisionHelperBase__factory.ts +835 -0
  492. package/typechain-types/factories/Broadcaster__factory.ts +1 -1
  493. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  494. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  495. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  496. package/typechain-types/factories/ChainlinkRelayerAutomation__factory.ts +238 -0
  497. package/typechain-types/factories/ChainlinkRelayerGelato__factory.ts +263 -0
  498. package/typechain-types/factories/ComposableStablePreviewProxy__factory.ts +288 -0
  499. package/typechain-types/factories/ComposableStablePreviewV4__factory.ts +190 -0
  500. package/typechain-types/factories/ComposableStablePreviewV5__factory.ts +190 -0
  501. package/typechain-types/factories/Errors__factory.ts +150 -1
  502. package/typechain-types/factories/HLPPricingHelper__factory.ts +311 -0
  503. package/typechain-types/factories/IAnkrBNB__factory.ts +74 -0
  504. package/typechain-types/factories/IAnkrLiquidStaking__factory.ts +123 -0
  505. package/typechain-types/factories/IAutomate__factory.ts +126 -0
  506. package/typechain-types/factories/IBotDecisionHelper__factory.ts +377 -615
  507. package/typechain-types/factories/IEUSD__factory.ts +101 -0
  508. package/typechain-types/factories/IFluxErc20__factory.ts +178 -0
  509. package/typechain-types/factories/{IExecutorHelper2__factory.ts → IFluxInterestRateModel__factory.ts} +19 -15
  510. package/typechain-types/factories/IHLPStaking__factory.ts +67 -0
  511. package/typechain-types/factories/IHMXCalculator__factory.ts +45 -0
  512. package/typechain-types/factories/IHMXCompounder__factory.ts +59 -0
  513. package/typechain-types/factories/IHMXStaking__factory.ts +78 -0
  514. package/typechain-types/factories/IHMXVester__factory.ts +85 -0
  515. package/typechain-types/factories/IInterestUSTP__factory.ts +75 -0
  516. package/typechain-types/factories/IKyberElasticFactory__factory.ts +455 -0
  517. package/typechain-types/factories/IKyberElasticPool__factory.ts +315 -0
  518. package/typechain-types/factories/IKyberElasticRouter__factory.ts +240 -0
  519. package/typechain-types/factories/IKyberLiquidityMining__factory.ts +913 -0
  520. package/typechain-types/factories/IKyberMathHelper__factory.ts +143 -0
  521. package/typechain-types/factories/IKyberPositionManager__factory.ts +633 -0
  522. package/typechain-types/factories/ILongYieldDecisionHelper__factory.ts +717 -0
  523. package/typechain-types/factories/ILongYieldTradingBot__factory.ts +250 -658
  524. package/typechain-types/factories/IOpsProxyFactory__factory.ts +50 -0
  525. package/typechain-types/factories/IPActionMarketAuxStatic__factory.ts +6 -82
  526. package/typechain-types/factories/IPActionMarketCoreStatic__factory.ts +22 -22
  527. package/typechain-types/factories/IPActionMintRedeemStatic__factory.ts +4 -42
  528. package/typechain-types/factories/IPComposableStablePreview__factory.ts +152 -0
  529. package/typechain-types/factories/IPExternalRewardDistributor__factory.ts +128 -0
  530. package/typechain-types/factories/IPGauge__factory.ts +0 -19
  531. package/typechain-types/factories/IPMarketFactoryV2__factory.ts +181 -0
  532. package/typechain-types/factories/IPMarket__factory.ts +0 -19
  533. package/typechain-types/factories/IPOracleForSy__factory.ts +36 -0
  534. package/typechain-types/factories/IPRouterStatic__factory.ts +32 -146
  535. package/typechain-types/factories/IRebasingUSTP__factory.ts +49 -0
  536. package/typechain-types/factories/IShortYieldDecisionHelper__factory.ts +698 -0
  537. package/typechain-types/factories/IShortYieldTradingBot__factory.ts +813 -0
  538. package/typechain-types/factories/IStaderStakeManager__factory.ts +435 -0
  539. package/typechain-types/factories/ISwETH__factory.ts +53 -0
  540. package/typechain-types/factories/ITaskTreasuryUpgradable__factory.ts +76 -0
  541. package/typechain-types/factories/ITradingBotBase__factory.ts +138 -227
  542. package/typechain-types/factories/IUSTP__factory.ts +46 -0
  543. package/typechain-types/factories/IVersion__factory.ts +36 -0
  544. package/typechain-types/factories/KyberMathHelper__factory.ts +417 -0
  545. package/typechain-types/factories/KyberNftManagerBase__factory.ts +279 -0
  546. package/typechain-types/factories/LegacyNFTHelper__factory.ts +83 -0
  547. package/typechain-types/factories/LongYieldActionLib__factory.ts +207 -0
  548. package/typechain-types/factories/LongYieldDecisionHelper__factory.ts +1468 -0
  549. package/typechain-types/factories/LongYieldTradingBot__factory.ts +1153 -748
  550. package/typechain-types/factories/MarketExtLib__factory.ts +1 -1
  551. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  552. package/typechain-types/factories/PendleAnkrBNBSY__factory.ts +1100 -0
  553. package/typechain-types/factories/PendleArbitrumStakedEthSY__factory.ts +1 -1
  554. package/typechain-types/factories/PendleAuraBbAWethSwethSY__factory.ts +1 -1
  555. package/typechain-types/factories/PendleAuraWethAnkrethSYV2__factory.ts +1 -1
  556. package/typechain-types/factories/PendleAuraWethRocketEthSYV2__factory.ts +1 -1
  557. package/typechain-types/factories/PendleAuraWethStafiEthSY__factory.ts +1 -1
  558. package/typechain-types/factories/PendleAuraWethVethSY__factory.ts +1231 -0
  559. package/typechain-types/factories/PendleAuraWethWstethSYV2__factory.ts +1 -1
  560. package/typechain-types/factories/PendleAuraWstethAnkreth__factory.ts +1244 -0
  561. package/typechain-types/factories/PendleBridgedLSDSY__factory.ts +1064 -0
  562. package/typechain-types/factories/PendleCamelotV1VolatileSY__factory.ts +1 -1
  563. package/typechain-types/factories/PendleChainlinkReceiver__factory.ts +216 -0
  564. package/typechain-types/factories/PendleChainlinkRelayer__factory.ts +180 -0
  565. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  566. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  567. package/typechain-types/factories/PendleERC4626SY__factory.ts +1030 -0
  568. package/typechain-types/factories/PendleETHXSY__factory.ts +1059 -0
  569. package/typechain-types/factories/PendleEUSDSY__factory.ts +1022 -0
  570. package/typechain-types/factories/PendleExternalRewardDistributor__factory.ts +437 -0
  571. package/typechain-types/factories/PendleFeeDistributorV2__factory.ts +1 -1
  572. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  573. package/typechain-types/factories/PendleFluxLendingSY__factory.ts +1049 -0
  574. package/typechain-types/factories/PendleGDaiSY__factory.ts +1 -1
  575. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  576. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  577. package/typechain-types/factories/{CamelotV1LpHelper__factory.ts → PendleGaugeV2__factory.ts} +50 -53
  578. package/typechain-types/factories/PendleGauge__factory.ts +0 -19
  579. package/typechain-types/factories/PendleGlpSY__factory.ts +1 -1
  580. package/typechain-types/factories/PendleHlpSY__factory.ts +1283 -0
  581. package/typechain-types/factories/PendleIUSTPSY__factory.ts +1061 -0
  582. package/typechain-types/factories/PendleKyberElasticSY__factory.ts +1512 -0
  583. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  584. package/typechain-types/factories/PendleLpGlpOracle__factory.ts +1 -1
  585. package/typechain-types/factories/PendleMantleStakedEthSY__factory.ts +1068 -0
  586. package/typechain-types/factories/PendleMarketFactoryV2__factory.ts +770 -0
  587. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  588. package/typechain-types/factories/PendleMarketV2__factory.ts +1299 -0
  589. package/typechain-types/factories/PendleMarket__factory.ts +1 -20
  590. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  591. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  592. package/typechain-types/factories/PendleMulticallV2__factory.ts +212 -0
  593. package/typechain-types/factories/PendleOracleForSyProxy__factory.ts +211 -0
  594. package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +1 -1
  595. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  596. package/typechain-types/factories/PendlePtGlpOracle__factory.ts +1 -1
  597. package/typechain-types/factories/PendlePtOracle__factory.ts +1 -1
  598. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  599. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  600. package/typechain-types/factories/PendleRouterHelper__factory.ts +1 -1
  601. package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
  602. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  603. package/typechain-types/factories/PendleSfrxEthSY__factory.ts +1 -1
  604. package/typechain-types/factories/PendleStargateLPSY__factory.ts +1 -1
  605. package/typechain-types/factories/PendleThenaSY__factory.ts +1 -1
  606. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  607. package/typechain-types/factories/PendleWbEthSY__factory.ts +1 -1
  608. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  609. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +1 -1
  610. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  611. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1 -1
  612. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  613. package/typechain-types/factories/PtAndLpToAsset__factory.ts +1 -1
  614. package/typechain-types/factories/SAPE__factory.ts +1 -1
  615. package/typechain-types/factories/SDKErrorsDirectory__factory.ts +1596 -0
  616. package/typechain-types/factories/StarNFTV1__factory.ts +584 -0
  617. package/typechain-types/factories/SwETHSY__factory.ts +1022 -0
  618. package/typechain-types/factories/ThenaPreview__factory.ts +1 -1
  619. package/typechain-types/factories/TradingBotBase__factory.ts +1258 -230
  620. package/typechain-types/factories/TvlLib__factory.ts +309 -0
  621. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  622. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  623. package/typechain-types/hardhat.d.ts +115 -232
  624. package/typechain-types/index.ts +34 -50
  625. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol/PendleArbitrumStakedEthSY.dbg.json +0 -4
  626. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol/PendleArbitrumStakedEthSY.json +0 -976
  627. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWbEthSY.sol/PendleWbEthSY.dbg.json +0 -4
  628. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWbEthSY.sol/PendleWbEthSY.json +0 -979
  629. package/build/artifacts/contracts/interfaces/BinanceEth/IWBETH.sol/IWBETH.dbg.json +0 -4
  630. package/build/artifacts/contracts/interfaces/BinanceEth/IWBETH.sol/IWBETH.json +0 -42
  631. package/build/artifacts/contracts/offchain-helpers/PtAndLpToAsset.sol/PtAndLpToAsset.dbg.json +0 -4
  632. package/build/artifacts/contracts/offchain-helpers/PtAndLpToAsset.sol/PtAndLpToAsset.json +0 -97
  633. package/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol +0 -120
  634. package/contracts/core/StandardizedYield/implementations/PendleWbEthSY.sol +0 -108
  635. package/contracts/interfaces/BinanceEth/IWBETH.sol +0 -9
  636. package/contracts/offchain-helpers/PtAndLpToAsset.sol +0 -62
  637. package/deployments/42161-markets/RETH-ARBITRUM-JUNE2025.json +0 -10
  638. package/deployments/42161-markets/WSTETH-ARBITRUM-JUNE2024.json +0 -10
  639. package/deployments/42161-markets/WSTETH-ARBITRUM-JUNE2025.json +0 -10
  640. package/deployments/56-core.json +0 -28
  641. package/deployments/56-markets/THENA-FRXETH-ETH-JUNE2024.json +0 -10
  642. package/deployments/56-markets/WBETH-DEC2024.json +0 -10
  643. package/deployments/56-offchain-helper.json +0 -4
  644. package/typechain-types/BotActionCallback.ts +0 -763
  645. package/typechain-types/BotActionHelper.ts +0 -763
  646. package/typechain-types/BotDecisionHelper.ts +0 -527
  647. package/typechain-types/BotDecisionLib.ts +0 -335
  648. package/typechain-types/CamelotV1LpHelper.ts +0 -203
  649. package/typechain-types/IExecutorHelper1.ts +0 -643
  650. package/typechain-types/IExecutorHelperEthereum1.ts +0 -643
  651. package/typechain-types/PendleSwapArbitrum.ts +0 -126
  652. package/typechain-types/PendleSwapEthereum.ts +0 -126
  653. package/typechain-types/TradingBotOffchain.ts +0 -568
  654. package/typechain-types/factories/BotActionCallback__factory.ts +0 -678
  655. package/typechain-types/factories/BotActionHelper__factory.ts +0 -678
  656. package/typechain-types/factories/BotDecisionHelper__factory.ts +0 -1123
  657. package/typechain-types/factories/BotDecisionLib__factory.ts +0 -642
  658. package/typechain-types/factories/CamelotV1Preview__factory.ts +0 -309
  659. package/typechain-types/factories/IExecutorHelper1__factory.ts +0 -403
  660. package/typechain-types/factories/IExecutorHelperEthereum1__factory.ts +0 -407
  661. package/typechain-types/factories/PendleBinanceEth__factory.ts +0 -1052
  662. package/typechain-types/factories/PendleCamelotV1SY__factory.ts +0 -1595
  663. package/typechain-types/factories/PendleSwapArbitrum__factory.ts +0 -129
  664. package/typechain-types/factories/PendleSwapEthereum__factory.ts +0 -129
  665. package/typechain-types/factories/TradingBotOffchain__factory.ts +0 -1133
@@ -18,244 +18,85 @@ const _abi = [
18
18
  },
19
19
  {
20
20
  internalType: "address",
21
- name: "_PENDLE",
21
+ name: "_router",
22
22
  type: "address",
23
23
  },
24
24
  {
25
25
  internalType: "address",
26
- name: "_decisionHelper",
26
+ name: "_PENDLE",
27
27
  type: "address",
28
28
  },
29
- ],
30
- stateMutability: "nonpayable",
31
- type: "constructor",
32
- },
33
- {
34
- inputs: [],
35
- name: "ApproxFail",
36
- type: "error",
37
- },
38
- {
39
- inputs: [
40
- {
41
- internalType: "uint256",
42
- name: "guessMin",
43
- type: "uint256",
44
- },
45
- {
46
- internalType: "uint256",
47
- name: "guessMax",
48
- type: "uint256",
49
- },
50
- {
51
- internalType: "uint256",
52
- name: "eps",
53
- type: "uint256",
54
- },
55
- ],
56
- name: "ApproxParamsInvalid",
57
- type: "error",
58
- },
59
- {
60
- inputs: [
61
29
  {
62
30
  internalType: "address",
63
- name: "caller",
31
+ name: "_decisionHelper",
64
32
  type: "address",
65
33
  },
66
34
  ],
67
- name: "BotCallbackNotMarket",
68
- type: "error",
69
- },
70
- {
71
- inputs: [
72
- {
73
- internalType: "uint256",
74
- name: "actualLpToRemove",
75
- type: "uint256",
76
- },
77
- {
78
- internalType: "uint256",
79
- name: "limitLpToRemove",
80
- type: "uint256",
81
- },
82
- ],
83
- name: "BotExceededLimitLpToRemove",
84
- type: "error",
85
- },
86
- {
87
- inputs: [
88
- {
89
- internalType: "uint256",
90
- name: "actualSyIn",
91
- type: "uint256",
92
- },
93
- {
94
- internalType: "uint256",
95
- name: "limitSyIn",
96
- type: "uint256",
97
- },
98
- ],
99
- name: "BotExceededLimitSyIn",
100
- type: "error",
101
- },
102
- {
103
- inputs: [
104
- {
105
- internalType: "uint256",
106
- name: "actualYtIn",
107
- type: "uint256",
108
- },
109
- {
110
- internalType: "uint256",
111
- name: "limitYtIn",
112
- type: "uint256",
113
- },
114
- ],
115
- name: "BotExceededLimitYtIn",
116
- type: "error",
117
- },
118
- {
119
- inputs: [
120
- {
121
- internalType: "uint256",
122
- name: "actualLpOut",
123
- type: "uint256",
124
- },
125
- {
126
- internalType: "uint256",
127
- name: "requiredLpOut",
128
- type: "uint256",
129
- },
130
- ],
131
- name: "BotInsufficientLpOut",
132
- type: "error",
35
+ stateMutability: "nonpayable",
36
+ type: "constructor",
133
37
  },
134
38
  {
135
39
  inputs: [
136
40
  {
137
41
  internalType: "uint256",
138
- name: "actualSyOut",
42
+ name: "actualSharesOut",
139
43
  type: "uint256",
140
44
  },
141
45
  {
142
46
  internalType: "uint256",
143
- name: "requiredSyOut",
47
+ name: "requiredSharesOut",
144
48
  type: "uint256",
145
49
  },
146
50
  ],
147
- name: "BotInsufficientSyOut",
51
+ name: "SYInsufficientSharesOut",
148
52
  type: "error",
149
53
  },
150
54
  {
151
55
  inputs: [
152
56
  {
153
57
  internalType: "uint256",
154
- name: "actualYtOut",
58
+ name: "actualTokenOut",
155
59
  type: "uint256",
156
60
  },
157
61
  {
158
62
  internalType: "uint256",
159
- name: "requiredYtOut",
63
+ name: "requiredTokenOut",
160
64
  type: "uint256",
161
65
  },
162
66
  ],
163
- name: "BotInsufficientYtOut",
164
- type: "error",
165
- },
166
- {
167
- inputs: [
168
- {
169
- internalType: "int256",
170
- name: "exchangeRate",
171
- type: "int256",
172
- },
173
- ],
174
- name: "MarketExchangeRateBelowOne",
175
- type: "error",
176
- },
177
- {
178
- inputs: [],
179
- name: "MarketExpired",
180
- type: "error",
181
- },
182
- {
183
- inputs: [
184
- {
185
- internalType: "int256",
186
- name: "currentAmount",
187
- type: "int256",
188
- },
189
- {
190
- internalType: "int256",
191
- name: "requiredAmount",
192
- type: "int256",
193
- },
194
- ],
195
- name: "MarketInsufficientPtForTrade",
196
- type: "error",
197
- },
198
- {
199
- inputs: [],
200
- name: "MarketProportionMustNotEqualOne",
67
+ name: "SYInsufficientTokenOut",
201
68
  type: "error",
202
69
  },
203
70
  {
204
71
  inputs: [
205
72
  {
206
- internalType: "int256",
207
- name: "proportion",
208
- type: "int256",
209
- },
210
- {
211
- internalType: "int256",
212
- name: "maxProportion",
213
- type: "int256",
73
+ internalType: "address",
74
+ name: "token",
75
+ type: "address",
214
76
  },
215
77
  ],
216
- name: "MarketProportionTooHigh",
78
+ name: "SYInvalidTokenIn",
217
79
  type: "error",
218
80
  },
219
81
  {
220
82
  inputs: [
221
83
  {
222
- internalType: "int256",
223
- name: "rateScalar",
224
- type: "int256",
84
+ internalType: "address",
85
+ name: "token",
86
+ type: "address",
225
87
  },
226
88
  ],
227
- name: "MarketRateScalarBelowZero",
228
- type: "error",
229
- },
230
- {
231
- inputs: [],
232
- name: "MarketZeroAmountsInput",
89
+ name: "SYInvalidTokenOut",
233
90
  type: "error",
234
91
  },
235
92
  {
236
93
  inputs: [],
237
- name: "MarketZeroAmountsOutput",
94
+ name: "SYZeroDeposit",
238
95
  type: "error",
239
96
  },
240
97
  {
241
98
  inputs: [],
242
- name: "MarketZeroLnImpliedRate",
243
- type: "error",
244
- },
245
- {
246
- inputs: [
247
- {
248
- internalType: "int256",
249
- name: "totalPt",
250
- type: "int256",
251
- },
252
- {
253
- internalType: "int256",
254
- name: "totalAsset",
255
- type: "int256",
256
- },
257
- ],
258
- name: "MarketZeroTotalPtOrTotalAsset",
99
+ name: "SYZeroRedeem",
259
100
  type: "error",
260
101
  },
261
102
  {
@@ -294,70 +135,6 @@ const _abi = [
294
135
  name: "botParams",
295
136
  type: "tuple",
296
137
  },
297
- {
298
- indexed: false,
299
- internalType: "uint256",
300
- name: "maxSyIn",
301
- type: "uint256",
302
- },
303
- {
304
- indexed: false,
305
- internalType: "uint256",
306
- name: "netSyIn",
307
- type: "uint256",
308
- },
309
- {
310
- indexed: false,
311
- internalType: "uint256",
312
- name: "netLpOut",
313
- type: "uint256",
314
- },
315
- ],
316
- name: "AddLiqFromSy",
317
- type: "event",
318
- },
319
- {
320
- anonymous: false,
321
- inputs: [
322
- {
323
- components: [
324
- {
325
- internalType: "uint256",
326
- name: "guessMin",
327
- type: "uint256",
328
- },
329
- {
330
- internalType: "uint256",
331
- name: "guessMax",
332
- type: "uint256",
333
- },
334
- {
335
- internalType: "uint256",
336
- name: "guessOffchain",
337
- type: "uint256",
338
- },
339
- {
340
- internalType: "uint256",
341
- name: "maxIteration",
342
- type: "uint256",
343
- },
344
- {
345
- internalType: "uint256",
346
- name: "eps",
347
- type: "uint256",
348
- },
349
- ],
350
- indexed: false,
351
- internalType: "struct ApproxParams",
352
- name: "botParams",
353
- type: "tuple",
354
- },
355
- {
356
- indexed: false,
357
- internalType: "uint256",
358
- name: "maxYtIn",
359
- type: "uint256",
360
- },
361
138
  {
362
139
  indexed: false,
363
140
  internalType: "uint256",
@@ -377,45 +154,6 @@ const _abi = [
377
154
  {
378
155
  anonymous: false,
379
156
  inputs: [
380
- {
381
- components: [
382
- {
383
- internalType: "uint256",
384
- name: "guessMin",
385
- type: "uint256",
386
- },
387
- {
388
- internalType: "uint256",
389
- name: "guessMax",
390
- type: "uint256",
391
- },
392
- {
393
- internalType: "uint256",
394
- name: "guessOffchain",
395
- type: "uint256",
396
- },
397
- {
398
- internalType: "uint256",
399
- name: "maxIteration",
400
- type: "uint256",
401
- },
402
- {
403
- internalType: "uint256",
404
- name: "eps",
405
- type: "uint256",
406
- },
407
- ],
408
- indexed: false,
409
- internalType: "struct ApproxParams",
410
- name: "botParams",
411
- type: "tuple",
412
- },
413
- {
414
- indexed: false,
415
- internalType: "uint256",
416
- name: "maxSyIn",
417
- type: "uint256",
418
- },
419
157
  {
420
158
  indexed: false,
421
159
  internalType: "uint256",
@@ -463,32 +201,113 @@ const _abi = [
463
201
  {
464
202
  indexed: true,
465
203
  internalType: "address",
466
- name: "beacon",
204
+ name: "owner",
467
205
  type: "address",
468
206
  },
469
- ],
470
- name: "BeaconUpgraded",
471
- type: "event",
472
- },
473
- {
474
- anonymous: false,
475
- inputs: [
476
207
  {
477
- indexed: false,
208
+ indexed: true,
209
+ internalType: "address",
210
+ name: "spender",
211
+ type: "address",
212
+ },
213
+ {
214
+ indexed: false,
478
215
  internalType: "uint256",
479
- name: "netSyOut",
216
+ name: "value",
480
217
  type: "uint256",
481
218
  },
219
+ ],
220
+ name: "Approval",
221
+ type: "event",
222
+ },
223
+ {
224
+ anonymous: false,
225
+ inputs: [
226
+ {
227
+ indexed: true,
228
+ internalType: "address",
229
+ name: "beacon",
230
+ type: "address",
231
+ },
232
+ ],
233
+ name: "BeaconUpgraded",
234
+ type: "event",
235
+ },
236
+ {
237
+ anonymous: false,
238
+ inputs: [
482
239
  {
483
240
  indexed: false,
484
241
  internalType: "uint256",
485
- name: "netPendleOut",
242
+ name: "netSyOut",
486
243
  type: "uint256",
487
244
  },
488
245
  ],
489
246
  name: "ClaimAndCompound",
490
247
  type: "event",
491
248
  },
249
+ {
250
+ anonymous: false,
251
+ inputs: [
252
+ {
253
+ indexed: true,
254
+ internalType: "address",
255
+ name: "user",
256
+ type: "address",
257
+ },
258
+ {
259
+ indexed: false,
260
+ internalType: "address[]",
261
+ name: "rewardTokens",
262
+ type: "address[]",
263
+ },
264
+ {
265
+ indexed: false,
266
+ internalType: "uint256[]",
267
+ name: "rewardAmounts",
268
+ type: "uint256[]",
269
+ },
270
+ ],
271
+ name: "ClaimRewards",
272
+ type: "event",
273
+ },
274
+ {
275
+ anonymous: false,
276
+ inputs: [
277
+ {
278
+ indexed: true,
279
+ internalType: "address",
280
+ name: "caller",
281
+ type: "address",
282
+ },
283
+ {
284
+ indexed: true,
285
+ internalType: "address",
286
+ name: "receiver",
287
+ type: "address",
288
+ },
289
+ {
290
+ indexed: true,
291
+ internalType: "address",
292
+ name: "tokenIn",
293
+ type: "address",
294
+ },
295
+ {
296
+ indexed: false,
297
+ internalType: "uint256",
298
+ name: "amountDeposited",
299
+ type: "uint256",
300
+ },
301
+ {
302
+ indexed: false,
303
+ internalType: "uint256",
304
+ name: "amountSyOut",
305
+ type: "uint256",
306
+ },
307
+ ],
308
+ name: "Deposit",
309
+ type: "event",
310
+ },
492
311
  {
493
312
  anonymous: false,
494
313
  inputs: [
@@ -557,58 +376,50 @@ const _abi = [
557
376
  anonymous: false,
558
377
  inputs: [
559
378
  {
560
- components: [
561
- {
562
- internalType: "uint256",
563
- name: "guessMin",
564
- type: "uint256",
565
- },
566
- {
567
- internalType: "uint256",
568
- name: "guessMax",
569
- type: "uint256",
570
- },
571
- {
572
- internalType: "uint256",
573
- name: "guessOffchain",
574
- type: "uint256",
575
- },
576
- {
577
- internalType: "uint256",
578
- name: "maxIteration",
579
- type: "uint256",
580
- },
581
- {
582
- internalType: "uint256",
583
- name: "eps",
584
- type: "uint256",
585
- },
586
- ],
587
379
  indexed: false,
588
- internalType: "struct ApproxParams",
589
- name: "botParams",
590
- type: "tuple",
380
+ internalType: "address",
381
+ name: "account",
382
+ type: "address",
383
+ },
384
+ ],
385
+ name: "Paused",
386
+ type: "event",
387
+ },
388
+ {
389
+ anonymous: false,
390
+ inputs: [
391
+ {
392
+ indexed: true,
393
+ internalType: "address",
394
+ name: "caller",
395
+ type: "address",
591
396
  },
592
397
  {
593
- indexed: false,
594
- internalType: "uint256",
595
- name: "maxLpRemoved",
596
- type: "uint256",
398
+ indexed: true,
399
+ internalType: "address",
400
+ name: "receiver",
401
+ type: "address",
402
+ },
403
+ {
404
+ indexed: true,
405
+ internalType: "address",
406
+ name: "tokenOut",
407
+ type: "address",
597
408
  },
598
409
  {
599
410
  indexed: false,
600
411
  internalType: "uint256",
601
- name: "netLpIn",
412
+ name: "amountSyToRedeem",
602
413
  type: "uint256",
603
414
  },
604
415
  {
605
416
  indexed: false,
606
417
  internalType: "uint256",
607
- name: "netYtOut",
418
+ name: "amountTokenOut",
608
419
  type: "uint256",
609
420
  },
610
421
  ],
611
- name: "RemoveLiqToYt",
422
+ name: "Redeem",
612
423
  type: "event",
613
424
  },
614
425
  {
@@ -650,23 +461,55 @@ const _abi = [
650
461
  {
651
462
  indexed: false,
652
463
  internalType: "uint256",
653
- name: "maxSyIn",
464
+ name: "netLpIn",
654
465
  type: "uint256",
655
466
  },
656
467
  {
657
468
  indexed: false,
658
469
  internalType: "uint256",
659
- name: "exactYtOut",
470
+ name: "netYtOut",
660
471
  type: "uint256",
661
472
  },
473
+ ],
474
+ name: "RemoveLiqToYt",
475
+ type: "event",
476
+ },
477
+ {
478
+ anonymous: false,
479
+ inputs: [
480
+ {
481
+ indexed: true,
482
+ internalType: "address",
483
+ name: "from",
484
+ type: "address",
485
+ },
486
+ {
487
+ indexed: true,
488
+ internalType: "address",
489
+ name: "to",
490
+ type: "address",
491
+ },
662
492
  {
663
493
  indexed: false,
664
494
  internalType: "uint256",
665
- name: "netSyIn",
495
+ name: "value",
666
496
  type: "uint256",
667
497
  },
668
498
  ],
669
- name: "SwapSyToYt",
499
+ name: "Transfer",
500
+ type: "event",
501
+ },
502
+ {
503
+ anonymous: false,
504
+ inputs: [
505
+ {
506
+ indexed: false,
507
+ internalType: "address",
508
+ name: "account",
509
+ type: "address",
510
+ },
511
+ ],
512
+ name: "Unpaused",
670
513
  type: "event",
671
514
  },
672
515
  {
@@ -701,6 +544,19 @@ const _abi = [
701
544
  name: "WithdrawFunds",
702
545
  type: "event",
703
546
  },
547
+ {
548
+ inputs: [],
549
+ name: "DOMAIN_SEPARATOR",
550
+ outputs: [
551
+ {
552
+ internalType: "bytes32",
553
+ name: "",
554
+ type: "bytes32",
555
+ },
556
+ ],
557
+ stateMutability: "view",
558
+ type: "function",
559
+ },
704
560
  {
705
561
  inputs: [],
706
562
  name: "PENDLE",
@@ -753,52 +609,83 @@ const _abi = [
753
609
  stateMutability: "view",
754
610
  type: "function",
755
611
  },
612
+ {
613
+ inputs: [
614
+ {
615
+ internalType: "address",
616
+ name: "user",
617
+ type: "address",
618
+ },
619
+ ],
620
+ name: "accruedRewards",
621
+ outputs: [
622
+ {
623
+ internalType: "uint256[]",
624
+ name: "rewardAmounts",
625
+ type: "uint256[]",
626
+ },
627
+ ],
628
+ stateMutability: "view",
629
+ type: "function",
630
+ },
756
631
  {
757
632
  inputs: [
758
633
  {
759
634
  components: [
760
635
  {
761
- internalType: "uint256",
762
- name: "guessMin",
763
- type: "uint256",
764
- },
765
- {
766
- internalType: "uint256",
767
- name: "guessMax",
768
- type: "uint256",
636
+ components: [
637
+ {
638
+ internalType: "uint256",
639
+ name: "guessMin",
640
+ type: "uint256",
641
+ },
642
+ {
643
+ internalType: "uint256",
644
+ name: "guessMax",
645
+ type: "uint256",
646
+ },
647
+ {
648
+ internalType: "uint256",
649
+ name: "guessOffchain",
650
+ type: "uint256",
651
+ },
652
+ {
653
+ internalType: "uint256",
654
+ name: "maxIteration",
655
+ type: "uint256",
656
+ },
657
+ {
658
+ internalType: "uint256",
659
+ name: "eps",
660
+ type: "uint256",
661
+ },
662
+ ],
663
+ internalType: "struct ApproxParams",
664
+ name: "botParams",
665
+ type: "tuple",
769
666
  },
770
667
  {
771
668
  internalType: "uint256",
772
- name: "guessOffchain",
669
+ name: "minLpOut",
773
670
  type: "uint256",
774
671
  },
775
672
  {
776
673
  internalType: "uint256",
777
- name: "maxIteration",
674
+ name: "targetIy",
778
675
  type: "uint256",
779
676
  },
780
677
  {
781
- internalType: "uint256",
782
- name: "eps",
783
- type: "uint256",
678
+ internalType: "int256",
679
+ name: "currentBin",
680
+ type: "int256",
784
681
  },
785
682
  ],
786
- internalType: "struct ApproxParams",
787
- name: "botParams",
683
+ internalType: "struct ILongYieldTradingBot.AddLiqFromYtInput",
684
+ name: "inputParams",
788
685
  type: "tuple",
789
686
  },
790
- {
791
- internalType: "uint256",
792
- name: "minLpOut",
793
- type: "uint256",
794
- },
795
- {
796
- internalType: "uint256",
797
- name: "maxSyIn",
798
- type: "uint256",
799
- },
800
687
  ],
801
- name: "addLiqFromSy",
688
+ name: "addLiqFromYt",
802
689
  outputs: [
803
690
  {
804
691
  internalType: "uint256",
@@ -812,7 +699,7 @@ const _abi = [
812
699
  },
813
700
  {
814
701
  internalType: "uint256",
815
- name: "netSyIn",
702
+ name: "netYtIn",
816
703
  type: "uint256",
817
704
  },
818
705
  ],
@@ -822,36 +709,9 @@ const _abi = [
822
709
  {
823
710
  inputs: [
824
711
  {
825
- components: [
826
- {
827
- internalType: "uint256",
828
- name: "guessMin",
829
- type: "uint256",
830
- },
831
- {
832
- internalType: "uint256",
833
- name: "guessMax",
834
- type: "uint256",
835
- },
836
- {
837
- internalType: "uint256",
838
- name: "guessOffchain",
839
- type: "uint256",
840
- },
841
- {
842
- internalType: "uint256",
843
- name: "maxIteration",
844
- type: "uint256",
845
- },
846
- {
847
- internalType: "uint256",
848
- name: "eps",
849
- type: "uint256",
850
- },
851
- ],
852
- internalType: "struct ApproxParams",
853
- name: "botParams",
854
- type: "tuple",
712
+ internalType: "uint256",
713
+ name: "netSyIn",
714
+ type: "uint256",
855
715
  },
856
716
  {
857
717
  internalType: "uint256",
@@ -860,17 +720,12 @@ const _abi = [
860
720
  },
861
721
  {
862
722
  internalType: "uint256",
863
- name: "maxYtIn",
723
+ name: "minYtOut",
864
724
  type: "uint256",
865
725
  },
866
726
  ],
867
- name: "addLiqFromYt",
727
+ name: "addLiqKeepYt",
868
728
  outputs: [
869
- {
870
- internalType: "uint256",
871
- name: "netPtFromSwap",
872
- type: "uint256",
873
- },
874
729
  {
875
730
  internalType: "uint256",
876
731
  name: "netLpOut",
@@ -878,7 +733,7 @@ const _abi = [
878
733
  },
879
734
  {
880
735
  internalType: "uint256",
881
- name: "netYtIn",
736
+ name: "netYtOut",
882
737
  type: "uint256",
883
738
  },
884
739
  ],
@@ -889,99 +744,126 @@ const _abi = [
889
744
  inputs: [
890
745
  {
891
746
  internalType: "address",
892
- name: "router",
747
+ name: "owner",
893
748
  type: "address",
894
749
  },
895
750
  {
896
- components: [
897
- {
898
- internalType: "uint256",
899
- name: "guessMin",
900
- type: "uint256",
901
- },
902
- {
903
- internalType: "uint256",
904
- name: "guessMax",
905
- type: "uint256",
906
- },
907
- {
908
- internalType: "uint256",
909
- name: "guessOffchain",
910
- type: "uint256",
911
- },
912
- {
913
- internalType: "uint256",
914
- name: "maxIteration",
915
- type: "uint256",
916
- },
917
- {
918
- internalType: "uint256",
919
- name: "eps",
920
- type: "uint256",
921
- },
922
- ],
923
- internalType: "struct ApproxParams",
924
- name: "botParams",
925
- type: "tuple",
751
+ internalType: "address",
752
+ name: "spender",
753
+ type: "address",
926
754
  },
755
+ ],
756
+ name: "allowance",
757
+ outputs: [
927
758
  {
928
759
  internalType: "uint256",
929
- name: "maxSyIn",
760
+ name: "",
930
761
  type: "uint256",
931
762
  },
763
+ ],
764
+ stateMutability: "view",
765
+ type: "function",
766
+ },
767
+ {
768
+ inputs: [
932
769
  {
933
- internalType: "uint256",
934
- name: "minLpOut",
935
- type: "uint256",
770
+ internalType: "address",
771
+ name: "spender",
772
+ type: "address",
936
773
  },
937
774
  {
938
775
  internalType: "uint256",
939
- name: "minYtOut",
776
+ name: "amount",
940
777
  type: "uint256",
941
778
  },
942
779
  ],
943
- name: "addLiqKeepYt",
780
+ name: "approve",
944
781
  outputs: [
945
782
  {
946
- internalType: "uint256",
947
- name: "netSyIn",
948
- type: "uint256",
783
+ internalType: "bool",
784
+ name: "",
785
+ type: "bool",
949
786
  },
787
+ ],
788
+ stateMutability: "nonpayable",
789
+ type: "function",
790
+ },
791
+ {
792
+ inputs: [
950
793
  {
951
- internalType: "uint256",
952
- name: "netLpOut",
953
- type: "uint256",
794
+ internalType: "address",
795
+ name: "token",
796
+ type: "address",
954
797
  },
955
798
  {
956
- internalType: "uint256",
957
- name: "netYtOut",
958
- type: "uint256",
799
+ internalType: "address",
800
+ name: "to",
801
+ type: "address",
959
802
  },
960
803
  ],
804
+ name: "approveInf",
805
+ outputs: [],
961
806
  stateMutability: "nonpayable",
962
807
  type: "function",
963
808
  },
809
+ {
810
+ inputs: [],
811
+ name: "assetInfo",
812
+ outputs: [
813
+ {
814
+ internalType: "enum IStandardizedYield.AssetType",
815
+ name: "assetType",
816
+ type: "uint8",
817
+ },
818
+ {
819
+ internalType: "address",
820
+ name: "assetAddress",
821
+ type: "address",
822
+ },
823
+ {
824
+ internalType: "uint8",
825
+ name: "assetDecimals",
826
+ type: "uint8",
827
+ },
828
+ ],
829
+ stateMutability: "view",
830
+ type: "function",
831
+ },
964
832
  {
965
833
  inputs: [
966
834
  {
967
- components: [
968
- {
969
- internalType: "address[]",
970
- name: "tokens",
971
- type: "address[]",
972
- },
973
- {
974
- internalType: "address",
975
- name: "spender",
976
- type: "address",
977
- },
978
- ],
979
- internalType: "struct ITradingBotBase.MultiApproval[]",
980
- name: "arr",
981
- type: "tuple[]",
835
+ internalType: "address",
836
+ name: "account",
837
+ type: "address",
982
838
  },
983
839
  ],
984
- name: "approveInf",
840
+ name: "balanceOf",
841
+ outputs: [
842
+ {
843
+ internalType: "uint256",
844
+ name: "",
845
+ type: "uint256",
846
+ },
847
+ ],
848
+ stateMutability: "view",
849
+ type: "function",
850
+ },
851
+ {
852
+ inputs: [],
853
+ name: "buyBins",
854
+ outputs: [
855
+ {
856
+ internalType: "uint256",
857
+ name: "",
858
+ type: "uint256",
859
+ },
860
+ ],
861
+ stateMutability: "view",
862
+ type: "function",
863
+ },
864
+ {
865
+ inputs: [],
866
+ name: "claimOwnership",
985
867
  outputs: [],
986
868
  stateMutability: "nonpayable",
987
869
  type: "function",
@@ -990,9 +872,23 @@ const _abi = [
990
872
  inputs: [
991
873
  {
992
874
  internalType: "address",
993
- name: "router",
875
+ name: "user",
994
876
  type: "address",
995
877
  },
878
+ ],
879
+ name: "claimRewards",
880
+ outputs: [
881
+ {
882
+ internalType: "uint256[]",
883
+ name: "rewardAmounts",
884
+ type: "uint256[]",
885
+ },
886
+ ],
887
+ stateMutability: "nonpayable",
888
+ type: "function",
889
+ },
890
+ {
891
+ inputs: [
996
892
  {
997
893
  components: [
998
894
  {
@@ -1048,9 +944,9 @@ const _abi = [
1048
944
  type: "tuple",
1049
945
  },
1050
946
  ],
1051
- internalType: "struct TokenInput[]",
1052
- name: "inps",
1053
- type: "tuple[]",
947
+ internalType: "struct TokenInput",
948
+ name: "inp",
949
+ type: "tuple",
1054
950
  },
1055
951
  {
1056
952
  internalType: "uint256",
@@ -1058,52 +954,28 @@ const _abi = [
1058
954
  type: "uint256",
1059
955
  },
1060
956
  ],
1061
- name: "claimAndCompound",
957
+ name: "compound",
1062
958
  outputs: [
1063
959
  {
1064
960
  internalType: "uint256",
1065
961
  name: "netSyOut",
1066
962
  type: "uint256",
1067
963
  },
1068
- {
1069
- internalType: "uint256",
1070
- name: "netPendleOut",
1071
- type: "uint256",
1072
- },
1073
964
  ],
1074
965
  stateMutability: "nonpayable",
1075
966
  type: "function",
1076
967
  },
1077
968
  {
1078
969
  inputs: [],
1079
- name: "claimOwnership",
1080
- outputs: [],
1081
- stateMutability: "nonpayable",
1082
- type: "function",
1083
- },
1084
- {
1085
- inputs: [],
1086
- name: "claimWithoutCompound",
970
+ name: "decimals",
1087
971
  outputs: [
1088
972
  {
1089
- components: [
1090
- {
1091
- internalType: "address",
1092
- name: "token",
1093
- type: "address",
1094
- },
1095
- {
1096
- internalType: "uint256",
1097
- name: "amount",
1098
- type: "uint256",
1099
- },
1100
- ],
1101
- internalType: "struct TokenAmount[]",
1102
- name: "rewards",
1103
- type: "tuple[]",
973
+ internalType: "uint8",
974
+ name: "",
975
+ type: "uint8",
1104
976
  },
1105
977
  ],
1106
- stateMutability: "nonpayable",
978
+ stateMutability: "view",
1107
979
  type: "function",
1108
980
  },
1109
981
  {
@@ -1121,92 +993,120 @@ const _abi = [
1121
993
  },
1122
994
  {
1123
995
  inputs: [
996
+ {
997
+ internalType: "address",
998
+ name: "receiver",
999
+ type: "address",
1000
+ },
1001
+ {
1002
+ internalType: "address",
1003
+ name: "tokenIn",
1004
+ type: "address",
1005
+ },
1124
1006
  {
1125
1007
  internalType: "uint256",
1126
- name: "netSyIn",
1008
+ name: "amountTokenToDeposit",
1009
+ type: "uint256",
1010
+ },
1011
+ {
1012
+ internalType: "uint256",
1013
+ name: "minSharesOut",
1127
1014
  type: "uint256",
1128
1015
  },
1129
1016
  ],
1130
- name: "depositSy",
1131
- outputs: [],
1132
- stateMutability: "nonpayable",
1017
+ name: "deposit",
1018
+ outputs: [
1019
+ {
1020
+ internalType: "uint256",
1021
+ name: "amountSharesOut",
1022
+ type: "uint256",
1023
+ },
1024
+ ],
1025
+ stateMutability: "payable",
1133
1026
  type: "function",
1134
1027
  },
1135
1028
  {
1136
- inputs: [
1029
+ inputs: [],
1030
+ name: "exchangeRate",
1031
+ outputs: [
1137
1032
  {
1138
- internalType: "address",
1139
- name: "router",
1140
- type: "address",
1033
+ internalType: "uint256",
1034
+ name: "",
1035
+ type: "uint256",
1141
1036
  },
1037
+ ],
1038
+ stateMutability: "view",
1039
+ type: "function",
1040
+ },
1041
+ {
1042
+ inputs: [],
1043
+ name: "getMaxAmountSharesToRedeem",
1044
+ outputs: [
1142
1045
  {
1143
- components: [
1144
- {
1145
- internalType: "address",
1146
- name: "tokenIn",
1147
- type: "address",
1148
- },
1149
- {
1150
- internalType: "uint256",
1151
- name: "netTokenIn",
1152
- type: "uint256",
1153
- },
1154
- {
1155
- internalType: "address",
1156
- name: "tokenMintSy",
1157
- type: "address",
1158
- },
1159
- {
1160
- internalType: "address",
1161
- name: "bulk",
1162
- type: "address",
1163
- },
1164
- {
1165
- internalType: "address",
1166
- name: "pendleSwap",
1167
- type: "address",
1168
- },
1169
- {
1170
- components: [
1171
- {
1172
- internalType: "enum SwapType",
1173
- name: "swapType",
1174
- type: "uint8",
1175
- },
1176
- {
1177
- internalType: "address",
1178
- name: "extRouter",
1179
- type: "address",
1180
- },
1181
- {
1182
- internalType: "bytes",
1183
- name: "extCalldata",
1184
- type: "bytes",
1185
- },
1186
- {
1187
- internalType: "bool",
1188
- name: "needScale",
1189
- type: "bool",
1190
- },
1191
- ],
1192
- internalType: "struct SwapData",
1193
- name: "swapData",
1194
- type: "tuple",
1195
- },
1196
- ],
1197
- internalType: "struct TokenInput",
1198
- name: "inp",
1199
- type: "tuple",
1046
+ internalType: "uint256",
1047
+ name: "",
1048
+ type: "uint256",
1200
1049
  },
1050
+ ],
1051
+ stateMutability: "view",
1052
+ type: "function",
1053
+ },
1054
+ {
1055
+ inputs: [],
1056
+ name: "getRewardTokens",
1057
+ outputs: [
1058
+ {
1059
+ internalType: "address[]",
1060
+ name: "rewardTokens",
1061
+ type: "address[]",
1062
+ },
1063
+ ],
1064
+ stateMutability: "view",
1065
+ type: "function",
1066
+ },
1067
+ {
1068
+ inputs: [],
1069
+ name: "getTokensIn",
1070
+ outputs: [
1071
+ {
1072
+ internalType: "address[]",
1073
+ name: "res",
1074
+ type: "address[]",
1075
+ },
1076
+ ],
1077
+ stateMutability: "view",
1078
+ type: "function",
1079
+ },
1080
+ {
1081
+ inputs: [],
1082
+ name: "getTokensOut",
1083
+ outputs: [
1084
+ {
1085
+ internalType: "address[]",
1086
+ name: "res",
1087
+ type: "address[]",
1088
+ },
1089
+ ],
1090
+ stateMutability: "view",
1091
+ type: "function",
1092
+ },
1093
+ {
1094
+ inputs: [
1095
+ {
1096
+ internalType: "bool",
1097
+ name: "isLiquidateTvl",
1098
+ type: "bool",
1099
+ },
1100
+ ],
1101
+ name: "getTvl",
1102
+ outputs: [
1201
1103
  {
1202
1104
  internalType: "uint256",
1203
- name: "minSyOut",
1105
+ name: "",
1204
1106
  type: "uint256",
1205
1107
  },
1206
1108
  ],
1207
- name: "depositToken",
1208
- outputs: [],
1209
- stateMutability: "payable",
1109
+ stateMutability: "view",
1210
1110
  type: "function",
1211
1111
  },
1212
1112
  {
@@ -1215,36 +1115,36 @@ const _abi = [
1215
1115
  components: [
1216
1116
  {
1217
1117
  internalType: "uint256",
1218
- name: "lowerIyLimit",
1118
+ name: "buyYtIy",
1219
1119
  type: "uint256",
1220
1120
  },
1221
1121
  {
1222
1122
  internalType: "uint256",
1223
- name: "upperIyLimit",
1123
+ name: "sellYtIy",
1224
1124
  type: "uint256",
1225
1125
  },
1226
1126
  {
1227
1127
  internalType: "uint256",
1228
- name: "floatingSyRatioLimit",
1128
+ name: "targetSyRatio",
1229
1129
  type: "uint256",
1230
1130
  },
1231
1131
  {
1232
1132
  internalType: "uint256",
1233
- name: "floatingSyRatioTarget",
1133
+ name: "bufferSyRatio",
1234
1134
  type: "uint256",
1235
1135
  },
1236
1136
  {
1237
1137
  internalType: "uint256",
1238
- name: "ytPtRatioLimit",
1138
+ name: "minYtPtRatio",
1239
1139
  type: "uint256",
1240
1140
  },
1241
1141
  {
1242
1142
  internalType: "uint256",
1243
- name: "ytPtRatioTarget",
1143
+ name: "numOfBins",
1244
1144
  type: "uint256",
1245
1145
  },
1246
1146
  ],
1247
- internalType: "struct LongTradingSpecs",
1147
+ internalType: "struct TradingSpecs",
1248
1148
  name: "_specs",
1249
1149
  type: "tuple",
1250
1150
  },
@@ -1254,6 +1154,81 @@ const _abi = [
1254
1154
  stateMutability: "nonpayable",
1255
1155
  type: "function",
1256
1156
  },
1157
+ {
1158
+ inputs: [
1159
+ {
1160
+ internalType: "address",
1161
+ name: "token",
1162
+ type: "address",
1163
+ },
1164
+ ],
1165
+ name: "isValidTokenIn",
1166
+ outputs: [
1167
+ {
1168
+ internalType: "bool",
1169
+ name: "",
1170
+ type: "bool",
1171
+ },
1172
+ ],
1173
+ stateMutability: "view",
1174
+ type: "function",
1175
+ },
1176
+ {
1177
+ inputs: [
1178
+ {
1179
+ internalType: "address",
1180
+ name: "token",
1181
+ type: "address",
1182
+ },
1183
+ ],
1184
+ name: "isValidTokenOut",
1185
+ outputs: [
1186
+ {
1187
+ internalType: "bool",
1188
+ name: "",
1189
+ type: "bool",
1190
+ },
1191
+ ],
1192
+ stateMutability: "view",
1193
+ type: "function",
1194
+ },
1195
+ {
1196
+ inputs: [],
1197
+ name: "lastRewardBlock",
1198
+ outputs: [
1199
+ {
1200
+ internalType: "uint256",
1201
+ name: "",
1202
+ type: "uint256",
1203
+ },
1204
+ ],
1205
+ stateMutability: "view",
1206
+ type: "function",
1207
+ },
1208
+ {
1209
+ inputs: [
1210
+ {
1211
+ internalType: "uint256",
1212
+ name: "netLpToRemove",
1213
+ type: "uint256",
1214
+ },
1215
+ {
1216
+ internalType: "uint256",
1217
+ name: "minSyOut",
1218
+ type: "uint256",
1219
+ },
1220
+ ],
1221
+ name: "liquidateLpToSy",
1222
+ outputs: [
1223
+ {
1224
+ internalType: "uint256",
1225
+ name: "netSyOut",
1226
+ type: "uint256",
1227
+ },
1228
+ ],
1229
+ stateMutability: "nonpayable",
1230
+ type: "function",
1231
+ },
1257
1232
  {
1258
1233
  inputs: [],
1259
1234
  name: "market",
@@ -1269,20 +1244,39 @@ const _abi = [
1269
1244
  },
1270
1245
  {
1271
1246
  inputs: [],
1272
- name: "owner",
1247
+ name: "name",
1273
1248
  outputs: [
1274
1249
  {
1275
- internalType: "address",
1250
+ internalType: "string",
1276
1251
  name: "",
1252
+ type: "string",
1253
+ },
1254
+ ],
1255
+ stateMutability: "view",
1256
+ type: "function",
1257
+ },
1258
+ {
1259
+ inputs: [
1260
+ {
1261
+ internalType: "address",
1262
+ name: "owner",
1277
1263
  type: "address",
1278
1264
  },
1279
1265
  ],
1266
+ name: "nonces",
1267
+ outputs: [
1268
+ {
1269
+ internalType: "uint256",
1270
+ name: "",
1271
+ type: "uint256",
1272
+ },
1273
+ ],
1280
1274
  stateMutability: "view",
1281
1275
  type: "function",
1282
1276
  },
1283
1277
  {
1284
1278
  inputs: [],
1285
- name: "pendingOwner",
1279
+ name: "owner",
1286
1280
  outputs: [
1287
1281
  {
1288
1282
  internalType: "address",
@@ -1295,12 +1289,19 @@ const _abi = [
1295
1289
  },
1296
1290
  {
1297
1291
  inputs: [],
1298
- name: "proxiableUUID",
1292
+ name: "pause",
1293
+ outputs: [],
1294
+ stateMutability: "nonpayable",
1295
+ type: "function",
1296
+ },
1297
+ {
1298
+ inputs: [],
1299
+ name: "paused",
1299
1300
  outputs: [
1300
1301
  {
1301
- internalType: "bytes32",
1302
+ internalType: "bool",
1302
1303
  name: "",
1303
- type: "bytes32",
1304
+ type: "bool",
1304
1305
  },
1305
1306
  ],
1306
1307
  stateMutability: "view",
@@ -1308,29 +1309,12 @@ const _abi = [
1308
1309
  },
1309
1310
  {
1310
1311
  inputs: [],
1311
- name: "readBotState",
1312
+ name: "pendingOwner",
1312
1313
  outputs: [
1313
1314
  {
1314
- components: [
1315
- {
1316
- internalType: "uint256",
1317
- name: "lpBalance",
1318
- type: "uint256",
1319
- },
1320
- {
1321
- internalType: "uint256",
1322
- name: "ytBalance",
1323
- type: "uint256",
1324
- },
1325
- {
1326
- internalType: "uint256",
1327
- name: "syBalance",
1328
- type: "uint256",
1329
- },
1330
- ],
1331
- internalType: "struct BotState",
1332
- name: "botState",
1333
- type: "tuple",
1315
+ internalType: "address",
1316
+ name: "",
1317
+ type: "address",
1334
1318
  },
1335
1319
  ],
1336
1320
  stateMutability: "view",
@@ -1340,219 +1324,526 @@ const _abi = [
1340
1324
  inputs: [
1341
1325
  {
1342
1326
  internalType: "address",
1343
- name: "router",
1327
+ name: "owner",
1344
1328
  type: "address",
1345
1329
  },
1330
+ {
1331
+ internalType: "address",
1332
+ name: "spender",
1333
+ type: "address",
1334
+ },
1335
+ {
1336
+ internalType: "uint256",
1337
+ name: "value",
1338
+ type: "uint256",
1339
+ },
1340
+ {
1341
+ internalType: "uint256",
1342
+ name: "deadline",
1343
+ type: "uint256",
1344
+ },
1345
+ {
1346
+ internalType: "uint8",
1347
+ name: "v",
1348
+ type: "uint8",
1349
+ },
1350
+ {
1351
+ internalType: "bytes32",
1352
+ name: "r",
1353
+ type: "bytes32",
1354
+ },
1355
+ {
1356
+ internalType: "bytes32",
1357
+ name: "s",
1358
+ type: "bytes32",
1359
+ },
1346
1360
  ],
1347
- name: "readMarketExtState",
1361
+ name: "permit",
1362
+ outputs: [],
1363
+ stateMutability: "nonpayable",
1364
+ type: "function",
1365
+ },
1366
+ {
1367
+ inputs: [
1368
+ {
1369
+ internalType: "address",
1370
+ name: "tokenIn",
1371
+ type: "address",
1372
+ },
1373
+ {
1374
+ internalType: "uint256",
1375
+ name: "amountTokenToDeposit",
1376
+ type: "uint256",
1377
+ },
1378
+ ],
1379
+ name: "previewDeposit",
1380
+ outputs: [
1381
+ {
1382
+ internalType: "uint256",
1383
+ name: "amountSharesOut",
1384
+ type: "uint256",
1385
+ },
1386
+ ],
1387
+ stateMutability: "view",
1388
+ type: "function",
1389
+ },
1390
+ {
1391
+ inputs: [
1392
+ {
1393
+ internalType: "address",
1394
+ name: "tokenOut",
1395
+ type: "address",
1396
+ },
1397
+ {
1398
+ internalType: "uint256",
1399
+ name: "amountSharesToRedeem",
1400
+ type: "uint256",
1401
+ },
1402
+ ],
1403
+ name: "previewRedeem",
1404
+ outputs: [
1405
+ {
1406
+ internalType: "uint256",
1407
+ name: "amountTokenOut",
1408
+ type: "uint256",
1409
+ },
1410
+ ],
1411
+ stateMutability: "view",
1412
+ type: "function",
1413
+ },
1414
+ {
1415
+ inputs: [],
1416
+ name: "proxiableUUID",
1417
+ outputs: [
1418
+ {
1419
+ internalType: "bytes32",
1420
+ name: "",
1421
+ type: "bytes32",
1422
+ },
1423
+ ],
1424
+ stateMutability: "view",
1425
+ type: "function",
1426
+ },
1427
+ {
1428
+ inputs: [],
1429
+ name: "readStrategyData",
1348
1430
  outputs: [
1349
1431
  {
1350
1432
  components: [
1351
1433
  {
1352
1434
  components: [
1353
1435
  {
1354
- internalType: "int256",
1355
- name: "totalPt",
1356
- type: "int256",
1436
+ internalType: "uint256",
1437
+ name: "lpBalance",
1438
+ type: "uint256",
1357
1439
  },
1358
1440
  {
1359
- internalType: "int256",
1360
- name: "totalSy",
1361
- type: "int256",
1441
+ internalType: "uint256",
1442
+ name: "ytBalance",
1443
+ type: "uint256",
1362
1444
  },
1363
1445
  {
1364
- internalType: "int256",
1365
- name: "totalLp",
1366
- type: "int256",
1446
+ internalType: "uint256",
1447
+ name: "ptBalance",
1448
+ type: "uint256",
1367
1449
  },
1368
1450
  {
1369
- internalType: "address",
1370
- name: "treasury",
1371
- type: "address",
1451
+ internalType: "uint256",
1452
+ name: "syBalance",
1453
+ type: "uint256",
1454
+ },
1455
+ {
1456
+ internalType: "uint256",
1457
+ name: "buyBins",
1458
+ type: "uint256",
1372
1459
  },
1460
+ ],
1461
+ internalType: "struct BotState",
1462
+ name: "botState",
1463
+ type: "tuple",
1464
+ },
1465
+ {
1466
+ components: [
1373
1467
  {
1374
- internalType: "int256",
1375
- name: "scalarRoot",
1376
- type: "int256",
1468
+ components: [
1469
+ {
1470
+ internalType: "int256",
1471
+ name: "totalPt",
1472
+ type: "int256",
1473
+ },
1474
+ {
1475
+ internalType: "int256",
1476
+ name: "totalSy",
1477
+ type: "int256",
1478
+ },
1479
+ {
1480
+ internalType: "int256",
1481
+ name: "totalLp",
1482
+ type: "int256",
1483
+ },
1484
+ {
1485
+ internalType: "address",
1486
+ name: "treasury",
1487
+ type: "address",
1488
+ },
1489
+ {
1490
+ internalType: "int256",
1491
+ name: "scalarRoot",
1492
+ type: "int256",
1493
+ },
1494
+ {
1495
+ internalType: "uint256",
1496
+ name: "expiry",
1497
+ type: "uint256",
1498
+ },
1499
+ {
1500
+ internalType: "uint256",
1501
+ name: "lnFeeRateRoot",
1502
+ type: "uint256",
1503
+ },
1504
+ {
1505
+ internalType: "uint256",
1506
+ name: "reserveFeePercent",
1507
+ type: "uint256",
1508
+ },
1509
+ {
1510
+ internalType: "uint256",
1511
+ name: "lastLnImpliedRate",
1512
+ type: "uint256",
1513
+ },
1514
+ ],
1515
+ internalType: "struct MarketState",
1516
+ name: "state",
1517
+ type: "tuple",
1518
+ },
1519
+ {
1520
+ internalType: "PYIndex",
1521
+ name: "index",
1522
+ type: "uint256",
1377
1523
  },
1378
1524
  {
1379
1525
  internalType: "uint256",
1380
- name: "expiry",
1526
+ name: "blockTime",
1381
1527
  type: "uint256",
1382
1528
  },
1529
+ ],
1530
+ internalType: "struct MarketExtState",
1531
+ name: "marketExt",
1532
+ type: "tuple",
1533
+ },
1534
+ {
1535
+ components: [
1383
1536
  {
1384
1537
  internalType: "uint256",
1385
- name: "lnFeeRateRoot",
1538
+ name: "buyYtIy",
1386
1539
  type: "uint256",
1387
1540
  },
1388
1541
  {
1389
1542
  internalType: "uint256",
1390
- name: "reserveFeePercent",
1543
+ name: "sellYtIy",
1391
1544
  type: "uint256",
1392
1545
  },
1393
1546
  {
1394
1547
  internalType: "uint256",
1395
- name: "lastLnImpliedRate",
1548
+ name: "targetSyRatio",
1549
+ type: "uint256",
1550
+ },
1551
+ {
1552
+ internalType: "uint256",
1553
+ name: "bufferSyRatio",
1554
+ type: "uint256",
1555
+ },
1556
+ {
1557
+ internalType: "uint256",
1558
+ name: "minYtPtRatio",
1559
+ type: "uint256",
1560
+ },
1561
+ {
1562
+ internalType: "uint256",
1563
+ name: "numOfBins",
1396
1564
  type: "uint256",
1397
1565
  },
1398
1566
  ],
1399
- internalType: "struct MarketState",
1400
- name: "state",
1567
+ internalType: "struct TradingSpecs",
1568
+ name: "specs",
1401
1569
  type: "tuple",
1402
1570
  },
1403
- {
1404
- internalType: "PYIndex",
1405
- name: "index",
1406
- type: "uint256",
1407
- },
1408
- {
1409
- internalType: "uint256",
1410
- name: "blockTime",
1411
- type: "uint256",
1412
- },
1413
1571
  ],
1414
- internalType: "struct MarketExtState",
1415
- name: "marketExt",
1572
+ internalType: "struct StrategyData",
1573
+ name: "strategyData",
1416
1574
  type: "tuple",
1417
1575
  },
1418
1576
  ],
1419
- stateMutability: "nonpayable",
1577
+ stateMutability: "view",
1420
1578
  type: "function",
1421
1579
  },
1422
1580
  {
1423
1581
  inputs: [
1424
1582
  {
1425
- components: [
1426
- {
1427
- internalType: "uint256",
1428
- name: "guessMin",
1429
- type: "uint256",
1430
- },
1431
- {
1432
- internalType: "uint256",
1433
- name: "guessMax",
1434
- type: "uint256",
1435
- },
1436
- {
1437
- internalType: "uint256",
1438
- name: "guessOffchain",
1439
- type: "uint256",
1440
- },
1441
- {
1442
- internalType: "uint256",
1443
- name: "maxIteration",
1444
- type: "uint256",
1445
- },
1446
- {
1447
- internalType: "uint256",
1448
- name: "eps",
1449
- type: "uint256",
1450
- },
1451
- ],
1452
- internalType: "struct ApproxParams",
1453
- name: "botParams",
1454
- type: "tuple",
1583
+ internalType: "address",
1584
+ name: "receiver",
1585
+ type: "address",
1586
+ },
1587
+ {
1588
+ internalType: "uint256",
1589
+ name: "amountSharesToRedeem",
1590
+ type: "uint256",
1591
+ },
1592
+ {
1593
+ internalType: "address",
1594
+ name: "tokenOut",
1595
+ type: "address",
1596
+ },
1597
+ {
1598
+ internalType: "uint256",
1599
+ name: "minTokenOut",
1600
+ type: "uint256",
1601
+ },
1602
+ {
1603
+ internalType: "bool",
1604
+ name: "burnFromInternalBalance",
1605
+ type: "bool",
1606
+ },
1607
+ ],
1608
+ name: "redeem",
1609
+ outputs: [
1610
+ {
1611
+ internalType: "uint256",
1612
+ name: "amountTokenOut",
1613
+ type: "uint256",
1455
1614
  },
1615
+ ],
1616
+ stateMutability: "nonpayable",
1617
+ type: "function",
1618
+ },
1619
+ {
1620
+ inputs: [
1456
1621
  {
1457
1622
  components: [
1458
1623
  {
1459
- internalType: "uint256",
1460
- name: "guessMin",
1461
- type: "uint256",
1624
+ components: [
1625
+ {
1626
+ internalType: "uint256",
1627
+ name: "guessMin",
1628
+ type: "uint256",
1629
+ },
1630
+ {
1631
+ internalType: "uint256",
1632
+ name: "guessMax",
1633
+ type: "uint256",
1634
+ },
1635
+ {
1636
+ internalType: "uint256",
1637
+ name: "guessOffchain",
1638
+ type: "uint256",
1639
+ },
1640
+ {
1641
+ internalType: "uint256",
1642
+ name: "maxIteration",
1643
+ type: "uint256",
1644
+ },
1645
+ {
1646
+ internalType: "uint256",
1647
+ name: "eps",
1648
+ type: "uint256",
1649
+ },
1650
+ ],
1651
+ internalType: "struct ApproxParams",
1652
+ name: "botParams",
1653
+ type: "tuple",
1462
1654
  },
1463
1655
  {
1464
- internalType: "uint256",
1465
- name: "guessMax",
1466
- type: "uint256",
1656
+ components: [
1657
+ {
1658
+ internalType: "uint256",
1659
+ name: "guessMin",
1660
+ type: "uint256",
1661
+ },
1662
+ {
1663
+ internalType: "uint256",
1664
+ name: "guessMax",
1665
+ type: "uint256",
1666
+ },
1667
+ {
1668
+ internalType: "uint256",
1669
+ name: "guessOffchain",
1670
+ type: "uint256",
1671
+ },
1672
+ {
1673
+ internalType: "uint256",
1674
+ name: "maxIteration",
1675
+ type: "uint256",
1676
+ },
1677
+ {
1678
+ internalType: "uint256",
1679
+ name: "eps",
1680
+ type: "uint256",
1681
+ },
1682
+ ],
1683
+ internalType: "struct ApproxParams",
1684
+ name: "guessTotalPtToSwap",
1685
+ type: "tuple",
1467
1686
  },
1468
1687
  {
1469
1688
  internalType: "uint256",
1470
- name: "guessOffchain",
1689
+ name: "minYtOut",
1471
1690
  type: "uint256",
1472
1691
  },
1473
1692
  {
1474
1693
  internalType: "uint256",
1475
- name: "maxIteration",
1694
+ name: "targetIy",
1476
1695
  type: "uint256",
1477
1696
  },
1478
1697
  {
1479
- internalType: "uint256",
1480
- name: "eps",
1481
- type: "uint256",
1698
+ internalType: "int256",
1699
+ name: "currentBin",
1700
+ type: "int256",
1482
1701
  },
1483
1702
  ],
1484
- internalType: "struct ApproxParams",
1485
- name: "guessTotalPtToSwap",
1703
+ internalType: "struct ILongYieldTradingBot.RemoveLiqToYtInput",
1704
+ name: "inputParams",
1486
1705
  type: "tuple",
1487
1706
  },
1707
+ ],
1708
+ name: "removeLiqToYt",
1709
+ outputs: [
1488
1710
  {
1489
1711
  internalType: "uint256",
1490
- name: "maxLpRemoved",
1712
+ name: "netLpRemoved",
1491
1713
  type: "uint256",
1492
1714
  },
1493
1715
  {
1494
1716
  internalType: "uint256",
1495
- name: "minYtOut",
1717
+ name: "netYtOut",
1496
1718
  type: "uint256",
1497
1719
  },
1498
1720
  ],
1499
- name: "removeLiqToYt",
1500
- outputs: [
1721
+ stateMutability: "nonpayable",
1722
+ type: "function",
1723
+ },
1724
+ {
1725
+ inputs: [
1501
1726
  {
1502
1727
  internalType: "uint256",
1503
- name: "netLpRemoved",
1728
+ name: "netLpToRemove",
1504
1729
  type: "uint256",
1505
1730
  },
1506
1731
  {
1507
1732
  internalType: "uint256",
1508
- name: "netYtOut",
1733
+ name: "minSyOut",
1509
1734
  type: "uint256",
1510
1735
  },
1736
+ ],
1737
+ name: "removeLiquidityToSy",
1738
+ outputs: [
1511
1739
  {
1512
1740
  internalType: "uint256",
1513
- name: "totalPtToSwap",
1741
+ name: "netSyOut",
1514
1742
  type: "uint256",
1515
1743
  },
1516
1744
  ],
1517
1745
  stateMutability: "nonpayable",
1518
1746
  type: "function",
1519
1747
  },
1748
+ {
1749
+ inputs: [],
1750
+ name: "rewardIndexesCurrent",
1751
+ outputs: [
1752
+ {
1753
+ internalType: "uint256[]",
1754
+ name: "indexes",
1755
+ type: "uint256[]",
1756
+ },
1757
+ ],
1758
+ stateMutability: "nonpayable",
1759
+ type: "function",
1760
+ },
1761
+ {
1762
+ inputs: [],
1763
+ name: "rewardIndexesStored",
1764
+ outputs: [
1765
+ {
1766
+ internalType: "uint256[]",
1767
+ name: "indexes",
1768
+ type: "uint256[]",
1769
+ },
1770
+ ],
1771
+ stateMutability: "view",
1772
+ type: "function",
1773
+ },
1774
+ {
1775
+ inputs: [
1776
+ {
1777
+ internalType: "address",
1778
+ name: "",
1779
+ type: "address",
1780
+ },
1781
+ ],
1782
+ name: "rewardState",
1783
+ outputs: [
1784
+ {
1785
+ internalType: "uint128",
1786
+ name: "index",
1787
+ type: "uint128",
1788
+ },
1789
+ {
1790
+ internalType: "uint128",
1791
+ name: "lastBalance",
1792
+ type: "uint128",
1793
+ },
1794
+ ],
1795
+ stateMutability: "view",
1796
+ type: "function",
1797
+ },
1798
+ {
1799
+ inputs: [],
1800
+ name: "router",
1801
+ outputs: [
1802
+ {
1803
+ internalType: "address",
1804
+ name: "",
1805
+ type: "address",
1806
+ },
1807
+ ],
1808
+ stateMutability: "view",
1809
+ type: "function",
1810
+ },
1520
1811
  {
1521
1812
  inputs: [
1522
1813
  {
1523
1814
  components: [
1524
1815
  {
1525
1816
  internalType: "uint256",
1526
- name: "lowerIyLimit",
1817
+ name: "buyYtIy",
1527
1818
  type: "uint256",
1528
1819
  },
1529
1820
  {
1530
1821
  internalType: "uint256",
1531
- name: "upperIyLimit",
1822
+ name: "sellYtIy",
1532
1823
  type: "uint256",
1533
1824
  },
1534
1825
  {
1535
1826
  internalType: "uint256",
1536
- name: "floatingSyRatioLimit",
1827
+ name: "targetSyRatio",
1537
1828
  type: "uint256",
1538
1829
  },
1539
1830
  {
1540
1831
  internalType: "uint256",
1541
- name: "floatingSyRatioTarget",
1832
+ name: "bufferSyRatio",
1542
1833
  type: "uint256",
1543
1834
  },
1544
1835
  {
1545
1836
  internalType: "uint256",
1546
- name: "ytPtRatioLimit",
1837
+ name: "minYtPtRatio",
1547
1838
  type: "uint256",
1548
1839
  },
1549
1840
  {
1550
1841
  internalType: "uint256",
1551
- name: "ytPtRatioTarget",
1842
+ name: "numOfBins",
1552
1843
  type: "uint256",
1553
1844
  },
1554
1845
  ],
1555
- internalType: "struct LongTradingSpecs",
1846
+ internalType: "struct TradingSpecs",
1556
1847
  name: "_specs",
1557
1848
  type: "tuple",
1558
1849
  },
@@ -1568,32 +1859,32 @@ const _abi = [
1568
1859
  outputs: [
1569
1860
  {
1570
1861
  internalType: "uint256",
1571
- name: "lowerIyLimit",
1862
+ name: "buyYtIy",
1572
1863
  type: "uint256",
1573
1864
  },
1574
1865
  {
1575
1866
  internalType: "uint256",
1576
- name: "upperIyLimit",
1867
+ name: "sellYtIy",
1577
1868
  type: "uint256",
1578
1869
  },
1579
1870
  {
1580
1871
  internalType: "uint256",
1581
- name: "floatingSyRatioLimit",
1872
+ name: "targetSyRatio",
1582
1873
  type: "uint256",
1583
1874
  },
1584
1875
  {
1585
1876
  internalType: "uint256",
1586
- name: "floatingSyRatioTarget",
1877
+ name: "bufferSyRatio",
1587
1878
  type: "uint256",
1588
1879
  },
1589
1880
  {
1590
1881
  internalType: "uint256",
1591
- name: "ytPtRatioLimit",
1882
+ name: "minYtPtRatio",
1592
1883
  type: "uint256",
1593
1884
  },
1594
1885
  {
1595
1886
  internalType: "uint256",
1596
- name: "ytPtRatioTarget",
1887
+ name: "numOfBins",
1597
1888
  type: "uint256",
1598
1889
  },
1599
1890
  ],
@@ -1626,66 +1917,103 @@ const _abi = [
1626
1917
  {
1627
1918
  inputs: [
1628
1919
  {
1629
- internalType: "address",
1630
- name: "router",
1631
- type: "address",
1920
+ internalType: "uint256",
1921
+ name: "netYtToSell",
1922
+ type: "uint256",
1632
1923
  },
1633
1924
  {
1634
- components: [
1635
- {
1636
- internalType: "uint256",
1637
- name: "guessMin",
1638
- type: "uint256",
1639
- },
1640
- {
1641
- internalType: "uint256",
1642
- name: "guessMax",
1643
- type: "uint256",
1644
- },
1645
- {
1646
- internalType: "uint256",
1647
- name: "guessOffchain",
1648
- type: "uint256",
1649
- },
1650
- {
1651
- internalType: "uint256",
1652
- name: "maxIteration",
1653
- type: "uint256",
1654
- },
1655
- {
1656
- internalType: "uint256",
1657
- name: "eps",
1658
- type: "uint256",
1659
- },
1660
- ],
1661
- internalType: "struct ApproxParams",
1662
- name: "botParams",
1663
- type: "tuple",
1925
+ internalType: "uint256",
1926
+ name: "minSyOut",
1927
+ type: "uint256",
1664
1928
  },
1929
+ ],
1930
+ name: "swapYtToSy",
1931
+ outputs: [
1665
1932
  {
1666
1933
  internalType: "uint256",
1667
- name: "minYtOut",
1934
+ name: "netSyOut",
1668
1935
  type: "uint256",
1669
1936
  },
1937
+ ],
1938
+ stateMutability: "nonpayable",
1939
+ type: "function",
1940
+ },
1941
+ {
1942
+ inputs: [],
1943
+ name: "symbol",
1944
+ outputs: [
1945
+ {
1946
+ internalType: "string",
1947
+ name: "",
1948
+ type: "string",
1949
+ },
1950
+ ],
1951
+ stateMutability: "view",
1952
+ type: "function",
1953
+ },
1954
+ {
1955
+ inputs: [],
1956
+ name: "totalSupply",
1957
+ outputs: [
1670
1958
  {
1671
1959
  internalType: "uint256",
1672
- name: "maxSyIn",
1960
+ name: "",
1673
1961
  type: "uint256",
1674
1962
  },
1675
1963
  ],
1676
- name: "swapSyToYt",
1677
- outputs: [
1964
+ stateMutability: "view",
1965
+ type: "function",
1966
+ },
1967
+ {
1968
+ inputs: [
1969
+ {
1970
+ internalType: "address",
1971
+ name: "to",
1972
+ type: "address",
1973
+ },
1678
1974
  {
1679
1975
  internalType: "uint256",
1680
- name: "exactYtOut",
1976
+ name: "amount",
1681
1977
  type: "uint256",
1682
1978
  },
1979
+ ],
1980
+ name: "transfer",
1981
+ outputs: [
1982
+ {
1983
+ internalType: "bool",
1984
+ name: "",
1985
+ type: "bool",
1986
+ },
1987
+ ],
1988
+ stateMutability: "nonpayable",
1989
+ type: "function",
1990
+ },
1991
+ {
1992
+ inputs: [
1993
+ {
1994
+ internalType: "address",
1995
+ name: "from",
1996
+ type: "address",
1997
+ },
1998
+ {
1999
+ internalType: "address",
2000
+ name: "to",
2001
+ type: "address",
2002
+ },
1683
2003
  {
1684
2004
  internalType: "uint256",
1685
- name: "netSyIn",
2005
+ name: "amount",
1686
2006
  type: "uint256",
1687
2007
  },
1688
2008
  ],
2009
+ name: "transferFrom",
2010
+ outputs: [
2011
+ {
2012
+ internalType: "bool",
2013
+ name: "",
2014
+ type: "bool",
2015
+ },
2016
+ ],
1689
2017
  stateMutability: "nonpayable",
1690
2018
  type: "function",
1691
2019
  },
@@ -1712,6 +2040,13 @@ const _abi = [
1712
2040
  stateMutability: "nonpayable",
1713
2041
  type: "function",
1714
2042
  },
2043
+ {
2044
+ inputs: [],
2045
+ name: "unpause",
2046
+ outputs: [],
2047
+ stateMutability: "nonpayable",
2048
+ type: "function",
2049
+ },
1715
2050
  {
1716
2051
  inputs: [
1717
2052
  {
@@ -1747,18 +2082,42 @@ const _abi = [
1747
2082
  inputs: [
1748
2083
  {
1749
2084
  internalType: "address",
1750
- name: "token",
2085
+ name: "",
1751
2086
  type: "address",
1752
2087
  },
1753
2088
  {
1754
- internalType: "uint256",
1755
- name: "amount",
1756
- type: "uint256",
2089
+ internalType: "address",
2090
+ name: "",
2091
+ type: "address",
1757
2092
  },
1758
2093
  ],
1759
- name: "withdrawFunds",
1760
- outputs: [],
1761
- stateMutability: "nonpayable",
2094
+ name: "userReward",
2095
+ outputs: [
2096
+ {
2097
+ internalType: "uint128",
2098
+ name: "index",
2099
+ type: "uint128",
2100
+ },
2101
+ {
2102
+ internalType: "uint128",
2103
+ name: "accrued",
2104
+ type: "uint128",
2105
+ },
2106
+ ],
2107
+ stateMutability: "view",
2108
+ type: "function",
2109
+ },
2110
+ {
2111
+ inputs: [],
2112
+ name: "yieldToken",
2113
+ outputs: [
2114
+ {
2115
+ internalType: "address",
2116
+ name: "",
2117
+ type: "address",
2118
+ },
2119
+ ],
2120
+ stateMutability: "view",
1762
2121
  type: "function",
1763
2122
  },
1764
2123
  {
@@ -1768,34 +2127,73 @@ const _abi = [
1768
2127
  ];
1769
2128
 
1770
2129
  const _bytecode =
1771
- "0x61016060405230610120523480156200001757600080fd5b5060405162006a9138038062006a918339810160408190526200003a91620002e2565b60015483908390600160a81b900460ff161580801562000065575060018054600160a01b900460ff16105b806200009b575062000082306200023760201b62001b1a1760201c565b1580156200009b575060018054600160a01b900460ff16145b620001045760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6001805460ff60a01b1916600160a01b179055801562000132576001805460ff60a81b1916600160a81b1790555b6000806000856001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000176573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019c9190620002e2565b6001600160a01b03808a1660805280841660a05280831660c05280821660e05288166101005291945092509050620001d362000246565b50505080156200021e576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050506001600160a01b03166101405250620003369050565b6001600160a01b03163b151590565b600154600160a81b900460ff16620002b55760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000fb565b600080546001600160a01b03191633179055565b6001600160a01b0381168114620002df57600080fd5b50565b600080600060608486031215620002f857600080fd5b83516200030581620002c9565b60208501519093506200031881620002c9565b60408501519092506200032b81620002c9565b809150509250925092565b60805160a05160c05160e05161010051610120516101405161655c62000535600039600081816105bb01528181610bcb01528181610ea201528181610ffc01528181611312015261197f01526000818161070c0152818161074c01528181610a4301528181610a830152610afb0152600081816102e201528181610de10152610e110152600081816102a101528181610d6d015281816112ac015281816115b801528181611642015281816120290152818161247f015281816128440152818161298201528181612a4001528181612d0401528181612fa901528181612fd20152818161306001528181613081015281816130bd01526131d401526000818161052501528181612f88015261315b015260008181610471015281816109dd01528181610d3f015281816116ed01528181611777015281816120c3015281816124f20152612b2301526000818161031601528181610d14015281816112260152818161181b015281816118a501528181611a7801528181611ef80152818161215701528181612348015281816123ea0152818161251301528181612555015281816125ef015281816127ca015281816127eb0152818161281501528181612865015281816128ed01528181612a1101528181612c6f01528181612df801528181612ec7015281816130ea0152818161317c0152613201015261655c6000f3fe6080604052600436106101615760003560e01c8063078dfbe71461016d5780633659cfe61461018f57806337deed8d146101af5780634e71e0c8146101cf5780634f0364b1146101e45780634f1ef2861461020457806352d1902d146102175780635d108ef71461023f57806365b800e61461026d578063781c18db1461028f5780637cf738d2146102d057806380f55605146103045780638c236640146103385780638d0ff072146103585780638da5cb5b146103875780639f10bf44146103a7578063a7584e5e146103c7578063acdb32df146103e7578063adb7c3f714610407578063afd27bf51461045f578063aff0314d14610493578063bf950872146104c0578063c1075329146104e0578063cabe5ec714610500578063d94073d414610513578063dbeadc0714610547578063e1b50f2914610569578063e30c397814610589578063e82cee79146105a9578063fa483e72146105dd57600080fd5b3661016857005b600080fd5b34801561017957600080fd5b5061018d610188366004615336565b6105fd565b005b34801561019b57600080fd5b5061018d6101aa366004615381565b610702565b3480156101bb57600080fd5b5061018d6101ca36600461540d565b6107ca565b3480156101db57600080fd5b5061018d610903565b3480156101f057600080fd5b5061018d6101ff366004615486565b6109ae565b61018d61021236600461550e565b610a39565b34801561022357600080fd5b5061022c610aee565b6040519081526020015b60405180910390f35b34801561024b57600080fd5b5061025f61025a36600461556f565b610b9c565b6040516102369291906155b5565b34801561027957600080fd5b50610282610ceb565b60405161023691906155dc565b34801561029b57600080fd5b506102c37f000000000000000000000000000000000000000000000000000000000000000081565b60405161023691906155ea565b3480156102dc57600080fd5b506102c37f000000000000000000000000000000000000000000000000000000000000000081565b34801561031057600080fd5b506102c37f000000000000000000000000000000000000000000000000000000000000000081565b34801561034457600080fd5b5061025f610353366004615649565b610d99565b34801561036457600080fd5b506103786103733660046156a4565b610e71565b604051610236939291906156f6565b34801561039357600080fd5b506000546102c3906001600160a01b031681565b3480156103b357600080fd5b506103786103c236600461570c565b610fcb565b3480156103d357600080fd5b5061018d6103e2366004615752565b6110fb565b3480156103f357600080fd5b5061018d61040236600461576e565b61113c565b34801561041357600080fd5b5060325460335460345460355460365460375461043295949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610236565b34801561046b57600080fd5b506102c37f000000000000000000000000000000000000000000000000000000000000000081565b34801561049f57600080fd5b506104b36104ae366004615381565b611207565b604051610236919061582a565b3480156104cc57600080fd5b506103786104db366004615839565b6112e1565b3480156104ec57600080fd5b5061018d6104fb366004615880565b611445565b61018d61050e3660046158ac565b6114d6565b34801561051f57600080fd5b506102c37f000000000000000000000000000000000000000000000000000000000000000081565b34801561055357600080fd5b5061055c611587565b6040516102369190615904565b34801561057557600080fd5b5061037861058436600461570c565b61194e565b34801561059557600080fd5b506001546102c3906001600160a01b031681565b3480156105b557600080fd5b506102c37f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e957600080fd5b5061018d6105f836600461595c565b611a6d565b6000546001600160a01b031633146106305760405162461bcd60e51b8152600401610627906159db565b60405180910390fd5b81156106e1576001600160a01b03831615158061064a5750805b61068e5760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606401610627565b600080546040516001600160a01b03808716939216916000805160206164e083398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361074a5760405162461bcd60e51b815260040161062790615a10565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661077c611b29565b6001600160a01b0316146107a25760405162461bcd60e51b815260040161062790615a4a565b6107ab81611b45565b604080516000808252602082019092526107c791839190611b6f565b50565b600154600160a81b900460ff16158080156107f0575060018054600160a01b900460ff16105b8061081757506107ff30611b1a565b158015610817575060018054600160a01b900460ff16145b61087a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610627565b6001805460ff60a01b1916600160a01b17905580156108a7576001805460ff60a81b1916600160a81b1790555b6108b082611cda565b6108b8611df3565b80156108ff576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001546001600160a01b031633811461095e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606401610627565b600080546040516001600160a01b03808516939216916000805160206164e083398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b031633146109d85760405162461bcd60e51b8152600401610627906159db565b610a037f00000000000000000000000000000000000000000000000000000000000000003383611e74565b6040518181527ffbf5b64cc7bd746fa51ff05d539d45d159c0bd41ae16d90375281f2925062bb19060200160405180910390a150565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a815760405162461bcd60e51b815260040161062790615a10565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ab3611b29565b6001600160a01b031614610ad95760405162461bcd60e51b815260040161062790615a4a565b610ae282611b45565b6108ff82826001611b6f565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b895760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610627565b506000805160206164c083398151915290565b6000805481906001600160a01b03163314610bc95760405162461bcd60e51b8152600401610627906159db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663914185af610c00610ceb565b610c0989611207565b603260008a8b6040518763ffffffff1660e01b8152600401610c3096959493929190615ade565b6040805180830381865afa158015610c4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c709190615b63565b50915083821015610c9857818460405163716d9a5760e11b81526004016106279291906155b5565b610ca3868385611edb565b90507fd93f93776ba10e6009c65ce8b6396dff457709f7f6ee344a93bb91b465c9a09a85848484604051610cda9493929190615b97565b60405180910390a194509492505050565b610d0f60405180606001604052806000815260200160008152602001600081525090565b610d387f0000000000000000000000000000000000000000000000000000000000000000611f87565b8152610d637f0000000000000000000000000000000000000000000000000000000000000000611f87565b6040820152610d917f0000000000000000000000000000000000000000000000000000000000000000611f87565b602082015290565b6000805481906001600160a01b03163314610dc65760405162461bcd60e51b8152600401610627906159db565b610dce612012565b610dda868686866121d3565b9150610e057f0000000000000000000000000000000000000000000000000000000000000000611f87565b600054909150610e40907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031683612261565b7f9fdfc39e9c36ec108e0a3b25ecb0818f9dba6993f27c8ab183d6f707c0a0e3198282604051610cda9291906155b5565b60008054819081906001600160a01b03163314610ea05760405162461bcd60e51b8152600401610627906159db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663914185af610ed7610ceb565b610ee08b611207565b603260018c8d6040518763ffffffff1660e01b8152600401610f0796959493929190615ade565b6040805180830381865afa158015610f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f479190615b63565b50925085831115610f6f578286604051633f20d48560e01b81526004016106279291906155b5565b610f7b8884878761232b565b60405191935091507f2d36f7810b4d3feee3be13b214fc3df9b32d3f6199133929ba1392af47ab55d790610fb89089908990879087908790615bc1565b60405180910390a1955095509592505050565b60008054819081906001600160a01b03163314610ffa5760405162461bcd60e51b8152600401610627906159db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663914185af611031610ceb565b61103a30611207565b603260028b8c6040518763ffffffff1660e01b815260040161106196959493929190615ade565b6040805180830381865afa15801561107d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a19190615b63565b5092506110af8386866123e3565b60405191935091507fa1d369ba11743979eb030e1c2226695ff864bfbecccac08660f69324447ce684906110ea908890879085908790615b97565b60405180910390a193509350939050565b6000546001600160a01b031633146111255760405162461bcd60e51b8152600401610627906159db565b6107c76111373683900383018361540d565b611cda565b6000546001600160a01b031633146111665760405162461bcd60e51b8152600401610627906159db565b60005b818110156106fd573683838381811061118457611184615bf3565b90506020028101906111969190615c09565b905060005b6111a58280615c29565b90508110156111fd576111f56111bb8380615c29565b838181106111cb576111cb615bf3565b90506020020160208101906111e09190615381565b6111f06040850160208601615381565b6126a1565b60010161119b565b5050600101611169565b61120f615291565b60405163794052f360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063794052f39061125b9085906004016155ea565b61012060405180830381865afa158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d9190615c7d565b81526112d16001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661275c565b6020820152426040820152919050565b60008054819081906001600160a01b031633146113105760405162461bcd60e51b8152600401610627906159db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663914185af611347610ceb565b61135030611207565b603260048c8c6040518763ffffffff1660e01b815260040161137796959493929190615ade565b6040805180830381865afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190615b63565b509250848311156113df5782856040516390fe811760e01b81526004016106279291906155b5565b6113f8836113f236899003890189615cff565b866127c2565b60405191935091507f850f9001881eb9b8bb227ded2db0c27646ab4012223509a4c76e9232a4ab40b990611433908990889087908790615b97565b60405180910390a19450945094915050565b6000546001600160a01b0316331461146f5760405162461bcd60e51b8152600401610627906159db565b60001981036114845761148182611f87565b90505b61148f823383612261565b816001600160a01b03167f21901fa892c430ea8bd38b9390225ac8e67eac75ee10ffba16feefc539a288f9826040516114ca91815260200190565b60405180910390a25050565b6000546001600160a01b031633146115005760405162461bcd60e51b8152600401610627906159db565b61151b6115106020840184615381565b338460200135611e74565b61152e8361152884615e15565b83612ad9565b5061153c6020830183615381565b6001600160a01b03167f2d0c0a8842b9944ece1495eb61121621b5e36bd6af3bba0318c695f525aef79f836020013560405161157a91815260200190565b60405180910390a2505050565b6000546060906001600160a01b031633146115b45760405162461bcd60e51b8152600401610627906159db565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611614573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261163c9190810190615ef5565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637d24da4d306001806040518463ffffffff1660e01b815260040161169193929190615f88565b6000604051808303816000875af11580156116b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116d89190810190616011565b91506116e79050838383612bb0565b925060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611749573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117719190810190615ef5565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef5cfb8c306040518263ffffffff1660e01b81526004016117c191906155ea565b6000604051808303816000875af11580156117e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611808919081019061604e565b9050611815858383612bb0565b945060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4f59f9b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611877573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261189f9190810190615ef5565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639262187b306040518263ffffffff1660e01b81526004016118ef91906155ea565b6000604051808303816000875af115801561190e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611936919081019061604e565b9050611943878383612bb0565b965050505050505090565b60008054819081906001600160a01b0316331461197d5760405162461bcd60e51b8152600401610627906159db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663914185af6119b4610ceb565b6119bd30611207565b603260038b8c6040518763ffffffff1660e01b81526004016119e496959493929190615ade565b6040805180830381865afa158015611a00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a249190615b63565b509250611a32838686612c68565b60405191935091507f261d4561f2d421185a1cde2fdfdb4e7104ae819bc4feb5e6ba60ee6c286ec720906110ea908890879085908790615b97565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168114611ab9578060405163719d6b0360e01b815260040161062791906155ea565b82356003816005811115611acf57611acf615a84565b03611ae557611ae086868686612f7e565b611b12565b6004816005811115611af957611af9615a84565b03611b0a57611ae0868686866131b4565b611b12616082565b505050505050565b6001600160a01b03163b151590565b6000805160206164c0833981519152546001600160a01b031690565b6000546001600160a01b031633146107c75760405162461bcd60e51b8152600401610627906159db565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611ba2576106fd83613295565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bfc575060408051601f3d908101601f19168201909252611bf991810190616098565b60015b611c5f5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610627565b6000805160206164c08339815191528114611cce5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610627565b506106fd83838361332f565b602081015181511115611d235760405162461bcd60e51b8152602060048201526011602482015270494e56414c49445f49595f4c494d49545360781b6044820152606401610627565b806060015181604001511015611d775760405162461bcd60e51b8152602060048201526019602482015278494e56414c49445f464c4f4154494e475f53595f524154494f60381b6044820152606401610627565b8060a0015181608001511015611dc55760405162461bcd60e51b8152602060048201526013602482015272494e56414c49445f59545f50545f524154494f60681b6044820152606401610627565b8051603255602081015160335560408101516034556060810151603555608081015160365560a00151603755565b600154600160a81b900460ff16611e605760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610627565b600080546001600160a01b03191633179055565b6001600160a01b038316611ec0578034146106fd5760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b6044820152606401610627565b80156106fd576106fd6001600160a01b038416833084613354565b604051632fc6f50d60e21b81523060048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602483015260448201849052606482018390526000919085169063bf1bd4349060840160408051808303816000875af1158015611f5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7e91906160b1565b50949350505050565b60006001600160a01b0382161561200a576040516370a0823160e01b81526001600160a01b038316906370a0823190611fc49030906004016155ea565b602060405180830381865afa158015611fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120059190616098565b61200c565b475b92915050565b604051637d24da4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637d24da4d906120639030906001908190600401615f88565b6000604051808303816000875af1158015612082573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120aa9190810190616011565b5050604051633bd73ee360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ef5cfb8c906120f89030906004016155ea565b6000604051808303816000875af1158015612117573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261213f919081019061604e565b50604051639262187b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639262187b9061218c9030906004016155ea565b6000604051808303816000875af11580156121ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c7919081019061604e565b6000805b8381101561223357612217868686848181106121f5576121f5615bf3565b905060200281019061220791906160d5565b61221090615e15565b6000612ad9565b6122219083616101565b915061222c81616114565b90506121d7565b508181101561225957808260405163d294eca360e01b81526004016106279291906155b5565b949350505050565b8060000361226e57505050565b6001600160a01b038316612317576000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146122c9576040519150601f19603f3d011682016040523d82523d6000602084013e6122ce565b606091505b50509050806123115760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b6044820152606401610627565b50505050565b6106fd6001600160a01b03841683836133ac565b604051634221c25560e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018590526064820184905260848201839052600091829187169063844384aa9060a40160408051808303816000875af11580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d691906160b1565b9150915094509492505050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663794052f3306040518263ffffffff1660e01b815260040161243491906155ea565b61012060405180830381865afa158015612452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124769190615c7d565b905060006124ac7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661275c565b905060006124bc83838a426133cb565b5050905060006124da82886124d1919061612d565b85908b42613424565b509250505080826124eb9190616101565b94506125387f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000087612261565b60408051600081526020810191829052635b709f1760e01b9091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03811691635b709f1791612594918d9060248101616190565b60408051808303816000875af11580156125b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d691906160b1565b5050604051630ab714fb60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063156e29f69061262890309085908e906004016161c0565b6060604051808303816000875af1158015612647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266b91906161e1565b50909650508786101561269557858860405163066d180b60e01b81526004016106279291906155b5565b50505050935093915050565b6001600160a01b0382166126b3575050565b6126c560026001600160601b03616225565b6001600160601b0316826001600160a01b031663dd62ed3e30846040518363ffffffff1660e01b81526004016126fc92919061624b565b602060405180830381865afa158015612719573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061273d9190616098565b10156108ff5761274f8282600061348f565b6108ff828260001961348f565b6000816001600160a01b0316631d52edc46040518163ffffffff1660e01b81526004016020604051808303816000875af115801561279e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200c9190616098565b6000806128107f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000087612261565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f6b911bc7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008a6040518463ffffffff1660e01b81526004016128a393929190616265565b60408051808303816000875af11580156128c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e591906160b1565b9150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663794052f3306040518263ffffffff1660e01b815260040161293791906155ea565b61012060405180830381865afa158015612955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129799190615c7d565b905060006129af7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661275c565b905060006129bd82866135a3565b905060006129d9836129cf8488616101565b869190428e6135af565b50975090506129e88282616101565b975088881015612a0f57878960405163716d9a5760e11b81526004016106279291906155b5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166329910b117f000000000000000000000000000000000000000000000000000000000000000089612a698d6136d0565b6040518463ffffffff1660e01b8152600401612a8793929190616190565b60408051808303816000875af1158015612aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac991906160b1565b5050505050505050935093915050565b6000600019836020015103612af9578251612af390611f87565b60208401525b82516001600160a01b038086169163443e6512911615612b1a576000612b20565b84602001515b307f000000000000000000000000000000000000000000000000000000000000000086886040518663ffffffff1660e01b8152600401612b639493929190616289565b60206040518083038185885af1158015612b81573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ba69190616098565b90505b9392505050565b80518251849114612c035760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e416d6f756e744c69623a206c656e677468206d69736d61746368006044820152606401610627565b60005b8351811015612c6057612c4c82858381518110612c2557612c25615bf3565b6020026020010151858481518110612c3f57612c3f615bf3565b6020026020010151613704565b915080612c5881616114565b915050612c06565b509392505050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663794052f3306040518263ffffffff1660e01b8152600401612cb991906155ea565b61012060405180830381865afa158015612cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfb9190615c7d565b90506000612d317f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661275c565b90506000612d4183838a426133cb565b509091508290506000612d548284616350565b612d66670de0b6b3a76400008c616350565b612d70919061612d565b90506000612d8186600001516138c6565b83612d8f88602001516138c6565b612d999190616350565b612da39190616367565b612db590670de0b6b3a7640000616101565b90506000612dc38284616367565b9050612dcf818d61612d565b975089881115612df657878a604051636a7a7c8760e11b81526004016106279291906155b5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635b709f17308e612e308c6138d9565b6040518463ffffffff1660e01b8152600401612e4e93929190616190565b60408051808303816000875af1158015612e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e9091906160b1565b5060009050612e9f878a613900565b90506000612ead878361612d565b604051630ab714fb60e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063156e29f690612f00903090859088906004016161c0565b6060604051808303816000875af1158015612f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4391906161e1565b50909b50508c8b1015612f6d578a8d60405163066d180b60e01b81526004016106279291906155b5565b505050505050505050935093915050565b6020820135612fce7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000083612261565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632f13b60c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561302e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613052919061637b565b15905080156130a6576130a67f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084612261565b60405163bcb7ea5d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bcb7ea5d90613112907f0000000000000000000000000000000000000000000000000000000000000000906004016155ea565b6020604051808303816000875af1158015613131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131559190616098565b50611b127f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846131a58a6138c6565b6131af919061612d565b612261565b60405163db74aa1560e01b81526020830135906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063db74aa159061322b907f000000000000000000000000000000000000000000000000000000000000000090309060040161624b565b6020604051808303816000875af115801561324a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326e9190616098565b905081811015611b1257808260405163716d9a5760e11b81526004016106279291906155b5565b61329e81611b1a565b6133005760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610627565b6000805160206164c083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6133388361390c565b6000825111806133455750805b156106fd57612311838361394c565b612311846323b872dd60e01b85858560405160240161337593929190616265565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613971565b6106fd8363a9059cbb60e01b8484604051602401613375929190616398565b6000806000806000806133e88a8a6133e28b613a43565b8a613a59565b9250925092506133ff6133fa84613aec565b6138c6565b955061340a826138c6565b9450613415816138c6565b93505050509450945094915050565b60008060008060008060008061344c8c61343d8d613a43565b6134468d613a43565b8c613afa565b935093509350935061345d846138c6565b9750613468836138c6565b9650613473826138c6565b955061347e816138c6565b945050505050945094509450949050565b600080846001600160a01b031663095ea7b360e01b85856040516024016134b7929190616398565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516134f591906163b1565b6000604051808303816000865af19150503d8060008114613532576040519150601f19603f3d011682016040523d82523d6000602084013e613537565b606091505b5091509150818015613561575080511580613561575080806020019051810190613561919061637b565b61359c5760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b6044820152606401610627565b5050505050565b6000612ba98383613cad565b60008080806135bf898988613ccc565b905084604001516000036136015784516135d99088613dc6565b855260208501516135f3906135ee8b84613ddc565b613e58565b602086015261360185613e67565b60005b85606001518110156136ab57600061361c8783613eb2565b905060008061362d8d868e86613f1e565b509092509050600061363f8d846135a3565b9050600061364d828661612d565b90508c811161368457613665818e8d60800151613f4f565b1561367c575097509195509093506136c592505050565b848b52613695565b61368f60018661612d565b60208c01525b5050505050806136a490616114565b9050613604565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b604080518181526060818101835291602082018180368337019050509050600060045b602083015250604081019190915290565b606081600003613715575082612ba9565b835160005b855181101561377357846001600160a01b031686828151811061373f5761373f615bf3565b6020026020010151600001516001600160a01b03160361376157809150613773565b8061376b81616114565b91505061371a565b5084518114613783576000613786565b60015b60ff1685516137959190616101565b6001600160401b038111156137ac576137ac61539e565b6040519080825280602002602001820160405280156137f157816020015b60408051808201909152600080825260208201528152602001906001900390816137ca5790505b50915060005b855181101561384a5785818151811061381257613812615bf3565b602002602001015183828151811061382c5761382c615bf3565b6020026020010181905250808061384290616114565b9150506137f7565b506040518060400160405280856001600160a01b0316815260200184875184146138915787848151811061388057613880615bf3565b602002602001015160200151613894565b60005b61389e9190616101565b8152508282815181106138b3576138b3615bf3565b6020026020010181905250509392505050565b6000808212156138d557600080fd5b5090565b604080518181526060818101835291602082018180368337019050509050600060036136f3565b6000612ba98383613f82565b61391581613295565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612ba9838360405180606001604052806027815260200161650060279139613f97565b60006139c6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166140729092919063ffffffff16565b8051909150156106fd57808060200190518101906139e4919061637b565b6106fd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610627565b60006001600160ff1b038211156138d557600080fd5b6000806000613a6c8760a0015185101590565b15613a8a5760405163b2094b5960e01b815260040160405180910390fd5b86518512613ab0578651604051632185509b60e21b8152610627919087906004016155b5565b6000613abd888887613ccc565b9050613acb88828989614081565b91955093509150613ae18882898988878b6141d5565b509450945094915050565b600061200c826000196163c3565b6000808080861580613b0a575085155b15613b28576040516325daaec360e01b815260040160405180910390fd5b60a08801518510613b4c5760405163b2094b5960e01b815260040160405180910390fd5b8760400151600003613b94576103e8613b78613b73613b6e6133fa8a8c6163c3565b614267565b613a43565b613b8291906163f3565b92506103e89350869150859050613c37565b8751604089015160009190613ba990896163c3565b613bb3919061641a565b9050600089602001518a604001518a613bcc91906163c3565b613bd6919061641a565b905080821215613c0c578194508792508960400151858b60200151613bfb91906163c3565b613c05919061641a565b9350613c34565b8094508893508960400151858b60000151613c2791906163c3565b613c31919061641a565b92505b50505b60008313613c5857604051631997ea8d60e31b815260040160405180910390fd5b8188602001818151613c6a9190616448565b905250875181908990613c7e908390616448565b905250613c8b8484616448565b88604001818151613c9c9190616448565b905250929791965094509092509050565b6000670de0b6b3a7640000613cc28484616350565b612ba99190616367565b613cf76040518060800160405280600081526020016000815260200160008152602001600081525090565b60a08401518210613d1b5760405163b2094b5960e01b815260040160405180910390fd5b6000828560a00151613d2d919061612d565b9050613d3985826142d7565b82526020850151613d4b908590614333565b602083015284511580613d6057506020820151155b15613d87578451602083015160405163b1c4aefb60e01b81526106279291906004016155b5565b613da58560000151866101000151846020015185600001518561436a565b604083015260c0850151613db990826143eb565b6060830152509392505050565b6000818311613dd55781612ba9565b5090919050565b60008060009050600060018460200151613df6919061612d565b90505b808214612c605760006002613e0e8385616101565b613e19906001616101565b613e239190616367565b90506000613e3686886000015184614424565b1215613e4e57613e4760018261612d565b9150613e52565b8092505b50613df9565b6000818310613dd55781612ba9565b602081015181511180613e855750670de0b6b3a76400008160800151115b156107c757805160208201516080830151604051632cc06bc160e21b8152610627939291906004016156f6565b600081158015613ec55750604083015115155b15613ed55750604082015161200c565b6020830151835111613f055760208301518351600291613ef491616101565b613efe9190616367565b905061200c565b604051637d388ed960e11b815260040160405180910390fd5b60008080808080613f3c8989613f338a616470565b8d929190614081565b919c909b50909950975050505050505050565b6000828411158015612ba65750613f7783613f7284670de0b6b3a764000061612d565b61451c565b909310159392505050565b600082613cc2670de0b6b3a764000084616350565b6060613fa284611b1a565b613ffd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610627565b600080856001600160a01b03168560405161401891906163b1565b600060405180830381855af49150503d8060008114614053576040519150601f19603f3d011682016040523d82523d6000602084013e614058565b606091505b509150915061406882828661453c565b9695505050505050565b6060612ba68484600085614575565b6000806000806140a48860000151886020015189600001518a60400151896146a4565b905060006140ba6140b5878461475c565b613aec565b606089015190915060008713156141295760006140d7848361475c565b9050670de0b6b3a76400008112156141055760405163329e322960e21b815260048101829052602401610627565b61412161411a83670de0b6b3a76400006163f3565b849061478b565b915050614156565b6141538161413f81670de0b6b3a76400006163f3565b61414990856163c3565b6140b5919061641a565b90505b600060646141678c60e00151613a43565b61417190846163c3565b61417b919061641a565b9050600061418983856163f3565b9050600081126141a25761419d8a826147a9565b6141ac565b6141ac8a826147d6565b97506141b88a846147a9565b96506141c48a836147a9565b955050505050509450945094915050565b6000818860a001516141e7919061612d565b88519091506141f69086614803565b88526142106142058486616448565b60208a015190614803565b60208901819052885161423591614228908990614333565b895160408b01518561484a565b610100890181905260000361425d57604051635534d70f60e11b815260040160405180910390fd5b5050505050505050565b600060038211156142c85750806000614281600283616367565b61428c906001616101565b90505b818110156142c2579050806002816142a78186616367565b6142b19190616101565b6142bb9190616367565b905061428f565b50919050565b81156142d2575060015b919050565b60006142e282613a43565b6142f4613b736201518061016d616350565b846080015161430391906163c3565b61430d919061641a565b90506000811361200c57604051630e520c3b60e11b815260048101829052602401610627565b60008060008312614345576001614349565b6000195b9050614360613b738561435b8661489d565b613cad565b61225990826163c3565b60008061437786846143eb565b9050670de0b6b3a76400008112156143a55760405163329e322960e21b815260048101829052602401610627565b60006143bb6143b4878a616448565b899061475c565b905060006143c8826148af565b90506143d4818761475c565b6143de90846163f3565b9998505050505050505050565b6000806143fd6201518061016d616350565b6144078486616350565b6144119190616367565b905061225961441f82613a43565b614902565b60008082856020015161443791906163f3565b905060006144458585616448565b90506000821380156144575750600081135b6144985760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b6044820152606401610627565b60006144c66144a784846163c3565b60208901516144b69089616448565b6144c090886163c3565b9061475c565b905060006144dc6144d7848661475c565b614d17565b88519091506000906144f790670de0b6b3a76400009061475c565b905061450d8161450784866163f3565b9061478b565b89604001516143de91906163f3565b6000806145298385616350565b670de0b6b3a76400009004949350505050565b6060831561454b575081612ba9565b82511561455b5782518084602001fd5b8160405162461bcd60e51b8152600401610627919061648c565b6060824710156145d65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610627565b6145df85611b1a565b61462b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610627565b600080866001600160a01b0316858760405161464791906163b1565b60006040518083038185875af1925050503d8060008114614684576040519150601f19603f3d011682016040523d82523d6000602084013e614689565b606091505b509150915061469982828661453c565b979650505050505050565b6000806146b18784614803565b905060006146c96146c2888a616448565b839061475c565b9050670d529ae9e86000008113156147005780670d529ae9e8600000604051637e34684f60e11b81526004016106279291906155b5565b600061470b826148af565b905085614718828961475c565b6147229190616448565b9350670de0b6b3a76400008412156147505760405163329e322960e21b815260048101859052602401610627565b50505095945050505050565b600080614771670de0b6b3a7640000856163c3565b90508281816147825761478261620f565b05949350505050565b60008061479883856163c3565b9050670de0b6b3a764000081614782565b600080600083126147bb5760016147bf565b6000195b9050614360613b73856147d18661489d565b613f82565b600080600083126147e85760016147ec565b6000195b9050614360613b73856147fe8661489d565b614da3565b6000818312156148405760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b6044820152606401610627565b612ba982846163f3565b60008061485b8787878760006146a4565b9050600061486b6133fa83614d17565b90508361487d6201518061016d616350565b6148879083616350565b6148919190616367565b98975050505050505050565b60008082136138d55761200582616470565b6000670de0b6b3a764000082036148d95760405163a9c8b14d60e01b815260040160405180910390fd5b60006148f76148f084670de0b6b3a76400006163f3565b849061475c565b9050612ba981614d17565b6000680238fd42c5cf03ffff198212158015614927575068070c1cc73b00c800008213155b6149665760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610627565b600082121561499e5761497b82600003614902565b6a0c097ce7bc90715b34b9f160241b816149975761499761620f565b0592915050565b60006806f05b59d3b200000083126149dc57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b614a12565b6803782dace9d90000008312614a0e57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380614a12565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412614a625768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d6310000008412614a9e576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b188000008412614ad857682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412614b12576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac62000008412614b4b57680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d631000008412614b845768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412614bbd576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412614bf65768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b6000808213614d585760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610627565b670c7d713b49da000082138015614d765750670f43fc2c04ee000082125b15614d9a57670de0b6b3a7640000614d8d83614dcf565b816149975761499761620f565b61200c82614eee565b600082600181614dbb670de0b6b3a764000086616350565b614dc59190616101565b613cc2919061612d565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281614e1057614e1061620f565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215614f2f57614f26826a0c097ce7bc90715b34b9f160241b81614f2057614f2061620f565b05614eee565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312614f7a5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312614fb1576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312614ff9576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312615034576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf850831261506b57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126150a257690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126150d75768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261510257680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312615137576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f1775788937937831261516c576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126151a0576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac83126151d4576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d6310000080860302816151fd576151fd61620f565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b60405180606001604052806152f460405180610120016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200160008152602001600081525090565b6001600160a01b03811681146107c757600080fd5b80356142d281615308565b80151581146107c757600080fd5b60008060006060848603121561534b57600080fd5b833561535681615308565b9250602084013561536681615328565b9150604084013561537681615328565b809150509250925092565b60006020828403121561539357600080fd5b8135612ba981615308565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156153d7576153d761539e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156154055761540561539e565b604052919050565b600060c0828403121561541f57600080fd5b60405160c081016001600160401b03811182821017156154415761544161539e565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b60006020828403121561549857600080fd5b5035919050565b600082601f8301126154b057600080fd5b81356001600160401b038111156154c9576154c961539e565b6154dc601f8201601f19166020016153dd565b8181528460208386010111156154f157600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561552157600080fd5b823561552c81615308565b915060208301356001600160401b0381111561554757600080fd5b6155538582860161549f565b9150509250929050565b600060a082840312156142c257600080fd5b600080600080610100858703121561558657600080fd5b843561559181615308565b93506155a0866020870161555d565b939693955050505060c08201359160e0013590565b918252602082015260400190565b8051825260208082015190830152604090810151910152565b6060810161200c82846155c3565b6001600160a01b0391909116815260200190565b60008083601f84011261561057600080fd5b5081356001600160401b0381111561562757600080fd5b6020830191508360208260051b850101111561564257600080fd5b9250929050565b6000806000806060858703121561565f57600080fd5b843561566a81615308565b935060208501356001600160401b0381111561568557600080fd5b615691878288016155fe565b9598909750949560400135949350505050565b600080600080600061012086880312156156bd57600080fd5b85356156c881615308565b94506156d7876020880161555d565b949794965050505060c08301359260e081013592610100909101359150565b9283526020830191909152604082015260600190565b600080600060e0848603121561572157600080fd5b61572b858561555d565b9560a0850135955060c0909401359392505050565b600060c082840312156142c257600080fd5b600060c0828403121561576457600080fd5b612ba98383615740565b6000806020838503121561578157600080fd5b82356001600160401b0381111561579757600080fd5b6157a3858286016155fe565b90969095509350505050565b805180518352602081015160208401526040810151604084015260018060a01b0360608201511660608401526080810151608084015260a081015160a084015260c081015160c084015260e081015160e084015261010080820151818501525050602081015161012083015260408101516101408301525050565b610160810161200c82846157af565b600080600080610180858703121561585057600080fd5b61585a868661555d565b93506158698660a0870161555d565b939693955050505061014082013591610160013590565b6000806040838503121561589357600080fd5b823561589e81615308565b946020939093013593505050565b6000806000606084860312156158c157600080fd5b83356158cc81615308565b925060208401356001600160401b038111156158e757600080fd5b6158f386828701615740565b925050604084013590509250925092565b602080825282518282018190526000919060409081850190868401855b8281101561594f57815180516001600160a01b03168552860151868501529284019290850190600101615921565b5091979650505050505050565b6000806000806060858703121561597257600080fd5b843593506020850135925060408501356001600160401b038082111561599757600080fd5b818701915087601f8301126159ab57600080fd5b8135818111156159ba57600080fd5b8860208285010111156159cc57600080fd5b95989497505060200194505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c908201526000805160206164a083398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206164a083398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b60068110615aaa57615aaa615a84565b9052565b80358252602081013560208301526040810135604083015260608101356060830152608081013560808301525050565b6103e08101615aed82896155c3565b615afa60608301886157af565b85546101c083015260018601546101e08301526002860154610200830152600386015461022083015260048601546102408301526005860154610260830152615b47610280830186615a9a565b615b556102a0830185615aae565b614699610340830184615aae565b60008060408385031215615b7657600080fd5b82519150602083015160038110615b8c57600080fd5b809150509250929050565b6101008101615ba68287615aae565b8460a08301528360c08301528260e083015295945050505050565b6101208101615bd08288615aae565b8560a08301528460c08301528360e0830152826101008301529695505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112615c1f57600080fd5b9190910192915050565b6000808335601e19843603018112615c4057600080fd5b8301803591506001600160401b03821115615c5a57600080fd5b6020019150600581901b360382131561564257600080fd5b80516142d281615308565b60006101208284031215615c9057600080fd5b615c986153b4565b825181526020830151602082015260408301516040820152615cbc60608401615c72565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b600060a08284031215615d1157600080fd5b60405160a081016001600160401b0381118282101715615d3357615d3361539e565b806040525082358152602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b600060808284031215615d8057600080fd5b604051608081016001600160401b038082118383101715615da357615da361539e565b816040528293508435915060048210615dbb57600080fd5b908252602084013590615dcd82615308565b8160208401526040850135915080821115615de757600080fd5b50615df48582860161549f565b6040830152506060830135615e0881615328565b6060919091015292915050565b600060c08236031215615e2757600080fd5b60405160c081016001600160401b038082118383101715615e4a57615e4a61539e565b8160405284359150615e5b82615308565b8183526020850135602084015260408501359150615e7882615308565b81604084015260608501359150615e8e82615308565b816060840152615ea06080860161531d565b608084015260a0850135915080821115615eb957600080fd5b50615ec636828601615d6e565b60a08301525092915050565b60006001600160401b03821115615eeb57615eeb61539e565b5060051b60200190565b60006020808385031215615f0857600080fd5b82516001600160401b03811115615f1e57600080fd5b8301601f81018513615f2f57600080fd5b8051615f42615f3d82615ed2565b6153dd565b81815260059190911b82018301908381019087831115615f6157600080fd5b928401925b82841015614699578351615f7981615308565b82529284019290840190615f66565b6001600160a01b0393909316835290151560208301521515604082015260600190565b600082601f830112615fbc57600080fd5b81516020615fcc615f3d83615ed2565b82815260059290921b84018101918181019086841115615feb57600080fd5b8286015b848110156160065780518352918301918301615fef565b509695505050505050565b6000806040838503121561602457600080fd5b825160208401519092506001600160401b0381111561604257600080fd5b61555385828601615fab565b60006020828403121561606057600080fd5b81516001600160401b0381111561607657600080fd5b61225984828501615fab565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156160aa57600080fd5b5051919050565b600080604083850312156160c457600080fd5b505080516020909101519092909150565b6000823560be19833603018112615c1f57600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561200c5761200c6160eb565b600060018201616126576161266160eb565b5060010190565b8181038181111561200c5761200c6160eb565b60005b8381101561615b578181015183820152602001616143565b50506000910152565b6000815180845261617c816020860160208601616140565b601f01601f19169290920160200192915050565b60018060a01b03841681528260208201526060604082015260006161b76060830184616164565b95945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b6000806000606084860312156161f657600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601260045260246000fd5b60006001600160601b038381168061623f5761623f61620f565b92169190910492915050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060018060a01b038087168352808616602084015284604084015260806060840152808451166080840152602084015160a08401528060408501511660c08401528060608501511660e08401528060808501511661010084015260a084015160c061012085015280516004811061630357616303615a84565b610140850152602081015190911661016084015260408101516080610180850152906163336101c0850183616164565b9150606081015115156101a0850152508091505095945050505050565b808202811582820484141761200c5761200c6160eb565b6000826163765761637661620f565b500490565b60006020828403121561638d57600080fd5b8151612ba981615328565b6001600160a01b03929092168252602082015260400190565b60008251615c1f818460208701616140565b80820260008212600160ff1b841416156163df576163df6160eb565b818105831482151761200c5761200c6160eb565b8181036000831280158383131683831282161715616413576164136160eb565b5092915050565b6000826164295761642961620f565b600160ff1b821460001984141615616443576164436160eb565b500590565b8082018281126000831280158216821582161715616468576164686160eb565b505092915050565b6000600160ff1b8201616485576164856160eb565b5060000390565b602081526000612ba9602083018461616456fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b54e080ecd828cb3298ab4db10b13431b0f3f46c717dfced9978eddb01e6b73a64736f6c63430008110033";
2130
+ "0x6102808060405234620009825760808162006ceb8038038091620000248285620009a3565b83398101031262000982576200003a81620009c7565b6200004860208301620009c7565b6200006460606200005c60408601620009c7565b9401620009c7565b92604051620000738162000987565b600e81526d119bdc9d1adb9bde0815985d5b1d60921b90816020820152604051916200009f8362000987565b600e83526020830152604051630b2339af60e21b8152906060826004816001600160a01b038a165afa91821562000579576000926200095a575b5060405163313ce56760e01b81526020816004816001600160a01b0387165afa908115620005795760009162000910575b50604051936200011a8562000987565b60018552603160f81b602086015282516001600160401b038111620006c257600354600181811c9116801562000905575b6020821014620007e557601f81116200089b575b50806020601f8211600114620008125760009162000806575b508160011b916000199060031b1c1916176003555b8051906001600160401b038211620006c25760045490600182811c92168015620007fb575b6020831014620007e55781601f84931162000773575b50602090601f8311600114620006e457600092620006d8575b50508160011b916000199060031b1c1916176004555b608052600160f81b60018060f81b036002541617600255602081519101209160208151910120826101005280610120524660c0526040519260008051602062006ccb8339815191526020850152604084015260608301524660808301523060a083015260a082528160c081011060018060401b0360c084011117620006c25760c082016040528151602083012060a0523060e05260008051602062006ccb8339815191526101405260ff196038541660385560075460ff8160a81c161592838094620006b1575b801562000695575b1562000635575060ff60a01b198116600160a01b17600755826200061c575b506001600160a01b0316610160526007549060a882901c60ff1615620005c357600680546001600160a01b0319163317905562000585575b50604051630b2339af60e21b81526060816004816001600160a01b0388165afa90811562000579576000809181936200053f575b506101a09586526101c09485526001600160a01b039081166101e09081529181166102009081529281166102209081526102409485529616610180908152306102609081526040516162a99890979196909493929091908962000a228a3960805189612fd5015260a05189615cc1015260c05189615d7c015260e05189615c9201526101005189615d1001526101205189615d3601526101405189615ced01526101605189611af60152518881816107ae01528181610cb70152818161147e0152614e580152518781816103540152818161092201528181610be4015281816115ec015281816118ce015281816119e701528181612839015281816129490152818161304f015281816142820152818161496201528181614d51015281816150f8015281816151c0015261535501525186818161052d01528181612022015261493301525185818161100a01528181611197015281816112180152818161138d01528181611b8b01528181611f6d01528181613223015281816136360152818161393d01528181613bab015281816142e20152614d7c015251848181610dbc0152614dd8015251838181611ab201528181614222015281816149c20152614daa015251828181611a620152818161205a01526155190152518181816121f7015281816122ee0152612c3f0152f35b91505062000569915060603d60601162000571575b620005608183620009a3565b810190620009dc565b913862000351565b503d62000554565b6040513d6000823e3d90fd5b60ff60a81b1916600755604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1386200031d565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b61ffff60a01b191661010160a01b1760075538620002e5565b60c060849162461bcd60e51b82820152602060c4820152602e60e48201527f496e697469616c697a61626c653a20636f6e747261637420697320616c7265616101048201526d191e481a5b9a5d1a585b1a5e995960921b61012482015201fd5b50303b158015620002c65750600160ff8360a01c1614620002c6565b50600160ff8360a01c1610620002be565b634e487b7160e01b600052604160045260246000fd5b015190503880620001e1565b6004600090815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b91905b601f198416851062000757576001945083601f198116106200073d575b505050811b01600455620001f7565b015160001960f88460031b161c191690553880806200072e565b8181015183556020948501946001909301929091019062000711565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c810160208510620007dd575b90849392915b601f830160051c82018110620007cd575050620001c8565b60008155859450600101620007b5565b5080620007af565b634e487b7160e01b600052602260045260246000fd5b91607f1691620001b2565b90508401513862000178565b600360009081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9250601f198416905b818110620008825750908360019493921062000868575b5050811b016003556200018d565b86015160001960f88460031b161c1916905538806200085a565b9192602060018192868b01518155019401920162000843565b60036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c81019160208410620008fa575b601f0160051c01905b818110620008ed57506200015f565b60008155600101620008de565b9091508190620008d5565b90607f16906200014b565b6020813d60201162000951575b816200092c60209383620009a3565b810103126200094d57519060ff821682036200094a5750386200010a565b80fd5b5080fd5b3d91506200091d565b6200097891925060603d6060116200057157620005608183620009a3565b50509038620000d9565b600080fd5b604081019081106001600160401b03821117620006c257604052565b601f909101601f19168101906001600160401b03821190821017620006c257604052565b51906001600160a01b03821682036200098257565b90816060910312620009825780516001600160a01b0392908381168103620009825792602083015181811681036200098257604090930151908116810362000982579056fe60406080815260048036101561001f575b5050361561001d57600080fd5b005b600090813560e01c92836306fdde03146117be578363071bc3c9146131b9578363078dfbe7146136db578363095ea7b3146136aa578363105f4029146135a8578363128fced11461351857836318160ddd146134f057836320e8c565146131c5578363213cae63146131b957836323b872dd146130b95783632b4cb4b7146130905783632ccfdeef14612ff9578363313ce56714612fbb5783633644e51514612f9e5783633659cfe614612c1957836337deed8d146129895783633846b9fd1461290a5783633ba0b9a9146127f05783633f4ba83a146127265783634c6e8f81146126e65783634e71e0c81461261f5783634f1ef286146122ae57836352d1902d146121db5783635c975abb146121b75783635cbadbe4146121425783636925c60514611de357836370a0823114611da8578363769f8e5d14611b1a57836376d5de8514611ad6578363781c18db14611a92578363784367d614611a865783637cf738d214611a425783637ecebe0014611a0b57836380f55605146119c75783638195f674146118795783638456cb59146117f25783638da5cb5b146117ca57836395d89b41146117be57836396aba49214611449578363a40bee5014611371578363a7584e5e1461130a578363a9059cbb146112a4578363a9f8d18114611285578363adb7c3f71461123c578363afd27bf5146111f8578363b8f82b2614611170578363c4f59f9b1461113f578363cbe52ae314610fe4578363d505accf14610de0578363d94073d414610d9c578363da88ecb414610d6b578363dd62ed3e14610d22578363e138b2ee14610d03578363e30c397814610cdb578363e82cee7914610c97578363e83ab23c14610b8e578363ea64a82014610b2d578363eb983ce514610b01578363ebff543914610777578363ef5cfb8c14610551578363f887ea401461050d578363f8b2f99114610495578363fa483e72146102ff5750505063fa5a4f06146102f2575b3880610010565b6102fa613b80565b6102eb565b34610491576060600319360112610491576044359167ffffffffffffffff9081841161048d573660238501121561048d5783810135918083116104895760249436868583010111610485576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168033036104435790879173__$4841977b5e630d8d12d7143ab50b0fe229$__90813b1561043f5760a486601f19601f8a8d9b8d519e8f998a9889977fbdfa09ab0000000000000000000000000000000000000000000000000000000089528801528d35828801528135604488015260806064880152826084880152018686013788858286010152011681010301915af4801561043557610412578580f35b84116104245750505281808080808580f35b60418591634e487b7160e01b835252fd5b84513d88823e3d90fd5b8380fd5b60648460168960208a519362461bcd60e51b85528401528201527f756e617574686f72697a65642063616c6c206261636b000000000000000000006044820152fd5b8680fd5b8580fd5b8480fd5b8280fd5b90503461050957816003193601126105095761050590600254906104bf60028360f81c1415613ee5565b600160f91b6001600160f81b03809316176002556104db61413b565b5050600160f81b6104ea614722565b926002541617600255519182916020835260208301906139b3565b0390f35b5080fd5b905034610509578160031936011261050957602090516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b8290346105095760209081600319360112610491579161056f613973565b906002549361058460028660f81c1415613ee5565b600160f91b6001600160f81b03809616176002556105a183614070565b6105a96154ee565b906105b48251613fe3565b946001600160a01b0393858516815b855181101561070357866105d7828861405c565b51168352603980855285842083855285528584205490608091821c6105fc848d61405c565b52610607838c61405c565b5161061d575b505061061890614014565b6105c3565b88610628848a61405c565b5116855285528584208385528552858420906fffffffffffffffffffffffffffffffff9182815416905561065c838c61405c565b51908282116104895789610670858b61405c565b51168652603b8752828887209216908254901c039182116106f0578a8a6106e2858c6106da828e6106d56106189b9a6106e99a906fffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff1983549260801b169116179055565b61405c565b51169361405c565b5191615ed8565b908c61060d565b60248560118f634e487b7160e01b835252fd5b888461050587600160f81b8e877f2193aa20a3717f5f4ac79482f4f553e5f0afe8f4e6ec3e3d1aa2e138adc4763f61075061073c6154ee565b61075d8751928392898452898401906138c1565b8281038b8401528b6139b3565b0390a26002541617600255519282849384528301906139b3565b9034610491576101a0600319360112610491576001600160a01b03926107a284600654163314613f30565b6107aa61483a565b93807f000000000000000000000000000000000000000000000000000000000000000016928451917fa76541e500000000000000000000000000000000000000000000000000000000835261080182840188613bd2565b6020926102c490848183818a5afa908115610af7578691610aca575b506101843503610a895760029061085c8851997f03270af4000000000000000000000000000000000000000000000000000000008b52858b0190613bd2565b880152610164356102e48801526000196103048801526004356103248801526024356103448801526044356103648801526064356103848801526084356103a488015260a43594856103c489015260c43590816103e48a015260e43591826104048b015261010492833591826104248d0152878c610464816101243597886104448301525afa998a15610a7f578b9c8a9b9c98999a9c610a3c575b5087519889977f2285db260000000000000000000000000000000000000000000000000000000089527f000000000000000000000000000000000000000000000000000000000000000016908801528b602488015260448701526064860152608485015260a484015260c48301526101443560e48301528173__$4841977b5e630d8d12d7143ab50b0fe229$__5af4928315610a315792610a01575b5061099c614e0b565b83516004358152602435602082015260443560408201526064356060820152608435608082015260a0810184905260c081018390527f43950417e0eb7225b8f42332a069bc35fbdf65f3d90c124210b3d3aefc3d6a409060e090a18351928352820152f35b610a22919250843d8611610a2a575b610a1a8183613aa0565b81019061478a565b509084610993565b503d610a10565b8551903d90823e3d90fd5b8a80929d508193949596979899503d8311610a78575b610a5c8183613aa0565b81010312610a7457908b969594939291519a8d6108f7565b8980fd5b503d610a52565b8b513d8b823e3d90fd5b60648385808a519262461bcd60e51b845283015260248201527f72656d6f76654c6971546f59743a2062696e20737461746520657870697265646044820152fd5b90508481813d8311610af0575b610ae18183613aa0565b8101031261048957518961081d565b503d610ad7565b88513d88823e3d90fd5b9050346105095781600319360112610509576102c090610b2b610b2261483a565b91518092613bd2565bf35b9050346105095760206003193601126105095780610505926001600160a01b03610b55613973565b168152603b60209081529190205491516fffffffffffffffffffffffffffffffff8316815260809290921c908201529081906040820190565b34610491576020610b9e366139e7565b93610bb56001600160a01b03600654163314613f30565b610c25845195869384937f448b96190000000000000000000000000000000000000000000000000000000085527f00000000000000000000000000000000000000000000000000000000000000009085016040919493926001600160a01b03606083019616825260208201520152565b038173__$4841977b5e630d8d12d7143ab50b0fe229$__5af4918215610c8d578392610c56575b6020838351908152f35b9091506020813d8211610c85575b81610c7160209383613aa0565b810103126104915760209250519083610c4c565b3d9150610c64565b81513d85823e3d90fd5b905034610509578160031936011261050957602090516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9050346105095781600319360112610509576020906001600160a01b03600754169051908152f35b9050346105095781600319360112610509576020906042549051908152f35b90503461050957806003193601126105095780602092610d40613973565b610d48613989565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b90503461050957816003193601126105095761050590610d89614722565b90519182916020835260208301906139b3565b905034610509578160031936011261050957602090516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9250346105095760e060031936011261050957610dfb613973565b610e03613989565b90604435926064356084359060ff8216820361048557804211610fa1576001600160a01b03908185169283895260056020528989208054906001820190558a519260208401917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98352868d860152858a1660608601528a608086015260a085015260c084015260c0835260e083019267ffffffffffffffff9381811085821117610f8e578c5251902090610eb5615c88565b928b519260208401947f190100000000000000000000000000000000000000000000000000000000000086526022850152604284015260428352608083019083821090821117610f7b5791610f239391610f1b938d5260c4359260a43592519020615bd3565b919091615a2f565b1603610f385750610f359394506158fb565b80f35b606490602087519162461bcd60e51b8352820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b60248b604189634e487b7160e01b835252fd5b60248c60418a634e487b7160e01b835252fd5b60648360208a519162461bcd60e51b8352820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152fd5b90346104915781600319360112610491576001600160a01b0380611006613973565b16907f00000000000000000000000000000000000000000000000000000000000000001681036111125750602061103b614d43565b6110436148f5565b92611078855194859384937fb1ef9e500000000000000000000000000000000000000000000000000000000085528401614f5d565b038173__$a7098bf20e819a81ac73f4e6e6693165f6$__5af49283156111075780936110ca575b6020836110c36110b160243588615120565b6001600160f81b036002541690615133565b9051908152f35b9092506020833d82116110ff575b816110e560209383613aa0565b810103126110fc57509051906110c36110b161109f565b80fd5b3d91506110d8565b8251903d90823e3d90fd5b60249251917f88a50561000000000000000000000000000000000000000000000000000000008352820152fd5b9050346105095781600319360112610509576105059061115d6154ee565b90519182916020835260208301906138c1565b91346110fc57826003193601126110fc57506001600160a01b0380611193613973565b16907f00000000000000000000000000000000000000000000000000000000000000001681036111cb576020836110c36024356152e9565b60249251917faeabe718000000000000000000000000000000000000000000000000000000008352820152fd5b905034610509578160031936011261050957602090516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b90503461050957816003193601126105095760c090603c5490603d5490603e54603f549082549260415494815196875260208701528501526060840152608083015260a0820152f35b905034610509578160031936011261050957602090603a549051908152f35b905034610509578060031936011261050957602090600160f81b6112c6613973565b6112fb600254916112dd60028460f81c1415613ee5565b600160f91b6001600160f81b0380941617600255602435903361553d565b60025416176002555160018152f35b82346110fc5760c06003193601126110fc576113326001600160a01b03600654163314613f30565b610f3561133e36613ac3565b60a0908051603c556020810151603d556040810151603e556060810151603f556080810151604055015180604155604255565b8290346105095781600319360112610509576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926020825180927f313ce56700000000000000000000000000000000000000000000000000000000825281875afa90811561143d578391611401575b5060ff90606094835194855260208501521690820152f35b90506020813d8211611435575b8161141b60209383613aa0565b81010312610491575160ff811681036104915760606113e9565b3d915061140e565b505051903d90823e3d90fd5b3461049157610100600319360112610491576001600160a01b039061147382600654163314613f30565b61147b61483a565b917f000000000000000000000000000000000000000000000000000000000000000016916114d18251917fa76541e500000000000000000000000000000000000000000000000000000000835285830190613bd2565b6020926102c49184818481855afa9081156117b4578791611787575b5060e435036117445761153c610464859261150661483a565b906001875196879586947f03270af40000000000000000000000000000000000000000000000000000000086528c860190613bd2565b83015260c4356102e48301526000196103048301526004356103248301526024356103448301526044356103648301526064356103848301526084356103a48301526004356103c48301526024356103e48301526044356104048301526064356104248301526084356104448301525afa92831561173a578593611708575b505080517f3525e03f0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169381019384526020840183905260a435604085015291928190839081906060015b038173__$4841977b5e630d8d12d7143ab50b0fe229$__5af49182156116fe5784926116d8575b509061050591611662614e0b565b80516004358152602435602082015260443560408201526064356060820152608435608082015260a0810183905260c081018690527fba4064507fa740cdd61480d0c0ce70e6b4e0f349dda4cd52184466a3c19936439060e090a151938493846040919493926060820195825260208201520152565b816116f592955061050593503d8611610a2a57610a1a8183613aa0565b93909391611654565b81513d86823e3d90fd5b90809350813d8311611733575b61171f8183613aa0565b8101031261043f578061162d9251926115bb565b503d611715565b82513d87823e3d90fd5b505060649350519162461bcd60e51b8352820152601f60248201527f6164644c697146726f6d59743a2062696e2073746174652065787069726564006044820152fd5b90508481813d83116117ad575b61179e8183613aa0565b810103126104855751876114ed565b503d611794565b84513d89823e3d90fd5b505050506102fa61385d565b9050346105095781600319360112610509576020906001600160a01b03600654169051908152f35b90503461050957816003193601126105095760207f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589161183e6001600160a01b03600654163314613f30565b611846613f7b565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00603854161760385551338152a180f35b9250346105095760606003193601126105095780356001600160a01b03916118a683600654163314613f30565b8451927fee723a8d0000000000000000000000000000000000000000000000000000000084527f0000000000000000000000000000000000000000000000000000000000000000169083015280602483015260243560448301526044356064830152838260848173__$4841977b5e630d8d12d7143ab50b0fe229$__5af49182156119bd578392611978575b50835190815260208101839052604081018290527f48f22f4bc9aee5b703ec4521f5f611eb37d722e592a0545e957f00ce8e9bd3ec90606090a182519182526020820152f35b7f48f22f4bc9aee5b703ec4521f5f611eb37d722e592a0545e957f00ce8e9bd3ec93506119b3919250843d8611610a2a57610a1a8183613aa0565b9092509082611932565b84513d85823e3d90fd5b905034610509578160031936011261050957602090516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b90503461050957602060031936011261050957806020926001600160a01b03611a32613973565b1681526005845220549051908152f35b905034610509578160031936011261050957602090516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b505050506102fa613b80565b905034610509578160031936011261050957602090516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b905034610509578160031936011261050957602090516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b8290346105095760a060031936011261050957611b35613973565b90602435936044356001600160a01b03908181168091036104895760643596608435928315158403611da457600294855494611b76878760f81c1415613ee5565b600160f91b6001600160f81b038097161787557f0000000000000000000000000000000000000000000000000000000000000000908382168603611d75578415611d4d5715611d3e57611bc98430615758565b611bd1614d43565b99611bda6148f5565b8951907fb1ef9e50000000000000000000000000000000000000000000000000000000008252818060209e8f9388830191611c1492614f5d565b038173__$a7098bf20e819a81ac73f4e6e6693165f6$__5af4918215611d3357918691838d96959492611cf4575b5050611c55611c709392611c6892615120565b611c62888b8d541661412e565b90615133565b9a8b91615ed8565b8a8910611cbf575090600160f81b949392918751928352888a84015216907faee47cdf925cf525fdae94f9777ee5a06cac37e1c41220d0a8a89ed154f62d1c873392a482541617905551908152f35b6044908b8a8a51927fbfee4ca00000000000000000000000000000000000000000000000000000000084528301526024820152fd5b925080939495508d8092503d8311611d2c575b611d118183613aa0565b810103126110fc575051899291908590611c55611c70611c42565b503d611d07565b8a51903d90823e3d90fd5b611d488433615758565b611bc9565b8289517fc3d83b07000000000000000000000000000000000000000000000000000000008152fd5b602483878b51917f88a50561000000000000000000000000000000000000000000000000000000008352820152fd5b8780fd5b905034610509576020600319360112610509576020906110c3611dc9613973565b6001600160a01b0316600052600060205260406000205490565b829034610509576003199281843601126104915780359367ffffffffffffffff9081861161048d5760c081873603011261048d576001600160a01b0392611e2f84600654163314613f30565b845192611e3b846139fd565b611e4688830161399f565b845260209788850193602494858301358152611e646044840161399f565b90898801918252611e776064850161399f565b9260608901938452611e8b6084860161399f565b9460808a0195865260a48101359087821161212c579060809101918236030112612124578a51956080870187811082821117612130578c52878201358881101561212c5787528d611edd8a840161399f565b9088015260448201359081116121285790611eff606492893691840101613b39565b8c88015201358015158103612124579289869593819593828f8f9c9b9a8e839860608593015260a081019b8c52600019855114612111575b511661210b575081519b5b517f443e6512000000000000000000000000000000000000000000000000000000008152308b8201527f000000000000000000000000000000000000000000000000000000000000000082168c8201528b356044820152608060648201529c511660848d01525160a48c0152511660c48a0152511660e488015251166101048601525160c0610124860152805190929091808310156120fa57505091838080938a9561014483015287868201511661016483015260606120128a83015160806101848601526101c485019061381d565b91015115156101a48301520391867f0000000000000000000000000000000000000000000000000000000000000000165af19384156120ef5780946120bb575b505061208d907f0000000000000000000000000000000000000000000000000000000000000000906006541661208782615f9a565b91615ed8565b7f52709ca3666ff5bd61f9d9d26f0dbdadd947fdadf265f3141227189da7d48463838251848152a151908152f35b909193508482813d83116120e8575b6120d48183613aa0565b810103126110fc5750519161208d85612052565b503d6120ca565b8351903d90823e3d90fd5b60218991634e487b7160e01b835252fd5b9b611f42565b61211d82825116615f9a565b8552611f37565b8b80fd5b8c80fd5b8d80fd5b898e60418b634e487b7160e01b835252fd5b9050346105095780600319360112610509578061050592612161613973565b612169613989565b6001600160a01b0391821683526039602090815284842091909216835281529190205491516fffffffffffffffffffffffffffffffff8316815260809290921c908201529081906040820190565b90503461050957816003193601126105095760209060ff6038541690519015158152f35b91346110fc57806003193601126110fc57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361224657602082517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b6020608492519162461bcd60e51b8352820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152fd5b80600319360112610491576122c1613973565b9060243567ffffffffffffffff811161048d576122e19036908501613b39565b906001600160a01b0391827f0000000000000000000000000000000000000000000000000000000000000000169261231b84301415613cca565b61234a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc948286541614613d3b565b61235981600654163314613f30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156123915750505050610f359150613dac565b8491929394168351947f52d1902d00000000000000000000000000000000000000000000000000000000865260209586818981865afa8991816125f0575b5061243c576084888888519162461bcd60e51b8352820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152fd5b96929496959395036125885761245184613dac565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8780a2835115801590612580575b61248d575b505050505080f35b84519461249986613a2f565b602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c838701527f206661696c65640000000000000000000000000000000000000000000000000081870152833b15612519575050828592839261250e9695519201905af4612508613e71565b90613ea1565b508180808080612485565b91608492519162461bcd60e51b8352820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152fd5b506001612480565b5060849185519162461bcd60e51b8352820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152fd5b9091508781813d8311612618575b6126088183613aa0565b81010312610a745751908a6123cf565b503d6125fe565b34610491578260031936011261049157600754906001600160a01b0392838316918233036126a3575050806006549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a37fffffffffffffffffffffffff0000000000000000000000000000000000000000809316176006551660075580f35b906020606492519162461bcd60e51b8352820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b905034610509576003193601126110fc57610f35612702613973565b61270a613989565b906127216001600160a01b03600654163314613f30565b616020565b903461049157826003193601126104915761274d6001600160a01b03600654163314613f30565b6038549060ff8216156127ad57507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006020921660385551338152a180f35b606490602084519162461bcd60e51b8352820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b82346110fc57806003193601126110fc57612860602061280e614d43565b8451809381927fe2102e670000000000000000000000000000000000000000000000000000000083527f0000000000000000000000000000000000000000000000000000000000000000898401614f15565b038173__$a7098bf20e819a81ac73f4e6e6693165f6$__5af49081156129005782916128cf575b506001600160f81b036002541691670de0b6b3a7640000918281029281840414901517156128bc576020846110c38585615133565b80601186634e487b7160e01b6024945252fd5b90506020813d82116128f8575b816128e960209383613aa0565b81010312610509575184612887565b3d91506128dc565b83513d84823e3d90fd5b3461049157602061291a366139e7565b83517f662d1b920000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016958101958652602086019290925260408501529283908190606001610c25565b90346104915760c0600319360112610491576129a436613ac3565b6007549060ff8260a81c161591828093612c09575b8015612bef575b15612b8657908183740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff612a41951617600755612b43575b5060a0908051603c556020810151603d556040810151603e556060810151603f556080810151604055015180604155604255565b6007549160ff8360a81c1615612ada5750337fffffffffffffffffffffffff00000000000000000000000000000000000000006006541617600655612a84578280f35b7f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498917fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff602092166007555160018152a181808280f35b608490602085519162461bcd60e51b8352820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001760075586612a0d565b608484602087519162461bcd60e51b8352820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b1580156129c05750600160ff8260a01c16146129c0565b50600160ff8260a01c16106129b9565b346104915760208060031936011261043f57612c33613973565b916001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016612c6b81301415613cca565b612c9a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc918383541614613d3b565b612ca982600654163314613f30565b8251908482019282841067ffffffffffffffff851117612f8b578385528883527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612d0357505050505050610f359150613dac565b86949596169085517f52d1902d00000000000000000000000000000000000000000000000000000000815287818a81865afa8a9181612f58575b50612daa576084898989519162461bcd60e51b8352820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152fd5b979395979692949603612ef057612dc086613dac565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8880a2825115801590612ee9575b612dfd575b50505050505080f35b855195612e0987613a2f565b602787527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c828801527f206661696c65640000000000000000000000000000000000000000000000000081880152853b15612e8257505050612e7693928592839251915af4612508613e71565b50818080808080612df4565b60849350519162461bcd60e51b8352820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152fd5b5086612def565b6084838389519162461bcd60e51b8352820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152fd5b9091508881813d8311612f84575b612f708183613aa0565b81010312612f805751908b612d3d565b8a80fd5b503d612f66565b60248960418a634e487b7160e01b835252fd5b9050346105095781600319360112610509576020906110c3615c88565b9050346105095781600319360112610509576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610491576020613009366139e7565b936130206001600160a01b03600654163314613f30565b610c25845195869384937f57e7540a0000000000000000000000000000000000000000000000000000000085527f00000000000000000000000000000000000000000000000000000000000000009085016040919493926001600160a01b03606083019616825260208201520152565b903461049157602060031936011261049157359182151583036110fc57506110c3602092615017565b925034610509576060600319360112610509576130d4613973565b6130dc613989565b906044359285600254956130f660028860f81c1415613ee5565b600160f91b6001600160f81b03809816176002556001600160a01b038416815260016020528181203382526020522054906000198203613145575b602087600160f81b886112fb89898961553d565b84821061317657509260209594926112fb9261316983600160f81b970333836158fb565b9250929495819450613131565b606490602088519162461bcd60e51b8352820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b505050506102fa6138fe565b82906080600319360112610509576131db613973565b916131e4613989565b6044359360643594600293845497613201868a60f81c1415613ee5565b600160f91b6001600160f81b03809a161786556001600160a01b0380951694807f00000000000000000000000000000000000000000000000000000000000000001686036134c15783156134995785613420578334036133dd575b61326584615153565b98808a106133a8575084169384156133655761328890613283613f7b565b614070565b888811610509578554908989168a831601908a82116133525750938092600160f81b9694927fff000000000000000000000000000000000000000000000000000000000000008c60209d98169116178855818152808b528881206132ed8b825461412e565b90557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8b8a518c8152a3865190815287898201527f5fe47ed6d4225326d3303476197d782ded5a4e9c14f479dc9ec4992af4e85d59873392a482541617905551908152f35b836011602492634e487b7160e01b835252fd5b60648260208a519162461bcd60e51b8352820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b826044918b8b51927fbc71f2ba0000000000000000000000000000000000000000000000000000000084528301526024820152fd5b60648260208a519162461bcd60e51b8352820152600c60248201527f657468206d69736d6174636800000000000000000000000000000000000000006044820152fd5b87517f23b872dd0000000000000000000000000000000000000000000000000000000060208201523360248201523060448201528460648201526064815260a0810181811067ffffffffffffffff8211176134865789526134819087615da2565b61325c565b602485604186634e487b7160e01b835252fd5b5086517fa907f2f0000000000000000000000000000000000000000000000000000000008152fd5b602482878a51917faeabe718000000000000000000000000000000000000000000000000000000008352820152fd5b9050346105095781600319360112610509576020906001600160f81b03600254169051908152f35b82346110fc576020918260031936011261050957613534613973565b9161353d6154ee565b926135488451613fe3565b946001600160a01b0391821691835b865181101561359657808261356e6001938a61405c565b511686526039845286862085875284528686205460801c61358f828b61405c565b5201613557565b8551838152806105058186018b6139b3565b903461049157826003193601126104915760206135c3614d43565b6135cb6148f5565b92613600855194859384937fb1ef9e500000000000000000000000000000000000000000000000000000000085528401614f5d565b038173__$a7098bf20e819a81ac73f4e6e6693165f6$__5af4928315611107578093613671575b6020836110c38661366c61365a7f0000000000000000000000000000000000000000000000000000000000000000615f9a565b6001600160f81b036002541690615120565b615133565b9092506020833d82116136a2575b8161368c60209383613aa0565b810103126110fc57506110c36020925192613627565b3d915061367f565b9050346105095780600319360112610509576020906136d46136ca613973565b60243590336158fb565b5160018152f35b34610491576060600319360112610491576136f4613973565b9160243591821515830361048d57604435928315158403610489576001600160a01b0394859161372983600654163314613f30565b156137eb5716928315908115916137e3575b50156137a0575050806006549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a37fffffffffffffffffffffffff0000000000000000000000000000000000000000809216176006556007541660075580f35b906020606492519162461bcd60e51b8352820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b90508661373b565b9350505050167fffffffffffffffffffffffff0000000000000000000000000000000000000000600754161760075580f35b919082519283825260005b848110613849575050601f19601f8460006020809697860101520116010190565b602081830181015184830182015201613828565b50346138bc5760006003193601126138bc5761050560405161387e81613a68565b600e81527f466f72746b6e6f78205661756c74000000000000000000000000000000000000602082015260405191829160208352602083019061381d565b600080fd5b90815180825260208080930193019160005b8281106138e1575050505090565b83516001600160a01b0316855293810193928101926001016138d3565b50346138bc5760006003193601126138bc5761050560405161391f81613a68565b600181526020368183013761393381614039565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690526040519182916020835260208301906138c1565b600435906001600160a01b03821682036138bc57565b602435906001600160a01b03821682036138bc57565b35906001600160a01b03821682036138bc57565b90815180825260208080930193019160005b8281106139d3575050505090565b8351855293810193928101926001016139c5565b60031960409101126138bc576004359060243590565b60c0810190811067ffffffffffffffff821117613a1957604052565b634e487b7160e01b600052604160045260246000fd5b6060810190811067ffffffffffffffff821117613a1957604052565b610120810190811067ffffffffffffffff821117613a1957604052565b6040810190811067ffffffffffffffff821117613a1957604052565b6080810190811067ffffffffffffffff821117613a1957604052565b90601f601f19910116810190811067ffffffffffffffff821117613a1957604052565b60031960c09101126138bc576040519060c0820182811067ffffffffffffffff821117613a1957604052816004358152602435602082015260443560408201526064356060820152608435608082015260a060a435910152565b67ffffffffffffffff8111613a1957601f01601f191660200190565b81601f820112156138bc57803590613b5082613b1d565b92613b5e6040519485613aa0565b828452602083830101116138bc57816000926020809301838601378301015290565b50346138bc5760206003193601126138bc576020613b9c613973565b604051906001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000169116148152f35b60a060406102a092613c0d85825160808091805184526020810151602085015260408101516040850152606081015160608501520151910152565b816020820151613c7a85880182518051825260208101516020830152604081015160408301526001600160a01b0360608201511660608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b60208101516101c088015201516101e08601520151805161020085015260208101516102208501526040810151610240850152606081015161026085015260808101516102808501520151910152565b15613cd157565b608460405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152fd5b15613d4257565b608460405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152fd5b803b15613e07576001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc91167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b608460405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152fd5b3d15613e9c573d90613e8282613b1d565b91613e906040519384613aa0565b82523d6000602084013e565b606090565b90919015613ead575090565b815115613ebd5750805190602001fd5b613ee19060405191829162461bcd60e51b835260206004840152602483019061381d565b0390fd5b15613eec57565b606460405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b15613f3757565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60ff60385416613f8757565b606460405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b67ffffffffffffffff8111613a195760051b60200190565b90613fed82613fcb565b613ffa6040519182613aa0565b828152601f1961400a8294613fcb565b0190602036910137565b60001981146140235760010190565b634e487b7160e01b600052601160045260246000fd5b8051156140465760200190565b634e487b7160e01b600052603260045260246000fd5b80518210156140465760209160051b010190565b61407861413b565b908051156140b4576001600160a01b03831680151590816140a9575b5061409e57505050565b6140a792614522565b565b905030141538614094565b505050565b6140c161413b565b9181511561411b576001600160a01b039083838383168015159081614110575b506140ff575b505050831680151590816140a9575061409e57505050565b61410892614522565b3883836140e7565b9050301415386140e1565b50505050565b9190820391821161402357565b9190820180921161402357565b6141436154ee565b9061414e8251613fe3565b82511561451f57603a5443036141bc575b6000805b84518110156141b757806001600160a01b036141826141b2938861405c565b51168352603b6020526fffffffffffffffffffffffffffffffff6040842054166141ac828661405c565b52614014565b614163565b505090565b43603a556001600160f81b03600254166040908151907f7d24da4d0000000000000000000000000000000000000000000000000000000082526004308184015260019360249185838601528560448601526000916001600160a01b03958381606481838b7f0000000000000000000000000000000000000000000000000000000000000000165af180156144b9576144dd575b5080517f9262187b000000000000000000000000000000000000000000000000000000008152308382015283818681838b7f0000000000000000000000000000000000000000000000000000000000000000165af180156144b9576144c3575b5080517fef5cfb8c000000000000000000000000000000000000000000000000000000008152308382015283818681838b7f0000000000000000000000000000000000000000000000000000000000000000165af180156144b957614497575b50869583861515985b61432b575b50505050505050505061415f565b8b518110156144925782898d8a61435a86614353878261434b828861405c565b51169561405c565b5116615f9a565b91808a52603b9060209082825261437a878d205495608096871c90614121565b95818d528383528c6fffffffffffffffffffffffffffffffff98899120541694851561448a575b50614444575b868411612124578b525283878a2091166fffffffffffffffffffffffffffffffff19825416179055828211611da457828689209216908254901c01918211614432579161442661442b928b9594906fffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff1983549260801b169116179055565b614014565b9091614318565b8787601188634e487b7160e01b835252fd5b92670de0b6b3a7640000808702908782041487151715614478579061446c8f61447293615133565b9061412e565b926143a7565b8d8d60118e634e487b7160e01b835252fd5b94508f6143a1565b61431d565b6144b2903d8086833e6144aa8183613aa0565b8101906154c8565b503861430f565b82513d86823e3d90fd5b6144d6903d8086833e6144aa8183613aa0565b50386142af565b3d8085833e6144ec8183613aa0565b810190828183031261048d5760208101519067ffffffffffffffff82116104895761451892910161546a565b503861424f565b90565b909291926001600160a01b038083169283151580614718575b156147025761455e906001600160a01b0316600052600060205260406000205490565b9160005b81518110156146f95782614576828461405c565b511690614583818961405c565b51826000526039906020908282526040806000208a60005283526fffffffffffffffffffffffffffffffff918282600020541680156146b7578181146146a757670de0b6b3a76400006145e26145dc6146019385614121565b8d615120565b0488600052868652836000208d6000528652836000205460801c61412e565b918382116138bc578383116138bc578051948186019686881067ffffffffffffffff891117613a19576146a2998680956144269a86521688528483890196168652600052815281600020908d600052526000209351166fffffffffffffffffffffffffffffffff1984541617835551166fffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff1983549260801b169116179055565b614562565b5050505050506146a29150614014565b5093828594929394116138bc576146a296600052815281600020908a6000525260002091166fffffffffffffffffffffffffffffffff19825416179055614014565b50505050509050565b634e487b7160e01b600052600160045260246000fd5b503084141561453b565b61472a6154ee565b906147358251613fe3565b91600090815b81518110156140b457806001600160a01b036147596001938561405c565b51168452603b6020526fffffffffffffffffffffffffffffffff604085205416614783828861405c565b520161473b565b91908260409103126138bc576020825192015190565b6040519060a0820182811067ffffffffffffffff821117613a195760405260006080838281528260208201528260408201528260608201520152565b604051906147e982613a2f565b8160408051916147f883613a4b565b60009283815283602082015283838201528360608201528360808201528360a08201528360c08201528360e08201528361010082015281528260208201520152565b60409081519161484983613a2f565b6148516147a0565b83526020830161485f6147dc565b8152818401908251614870816139fd565b6000808252806020830152808583015280606083015280608083015260a082015282528461489c614d43565b90526148a66148f5565b90528151916148b4836139fd565b603c548352603d546020840152603e5481840152603f54606084015254608083015260415460a083015252565b51906001600160a01b03821682036138bc57565b6148fd6147dc565b90604080517f794052f30000000000000000000000000000000000000000000000000000000081526001600160a01b03600491817f000000000000000000000000000000000000000000000000000000000000000016838201526101208082602481867f0000000000000000000000000000000000000000000000000000000000000000165afa908115614d2057600091614c8f575b5086525082517fafd27bf5000000000000000000000000000000000000000000000000000000008152602092907f000000000000000000000000000000000000000000000000000000000000000083169084818481855afa908115614c8457600091614c4f575b508551927fd2a3584e00000000000000000000000000000000000000000000000000000000845285848281865afa938415614c4457600094614c15575b5086517f516399df00000000000000000000000000000000000000000000000000000000815260009387828481845afa918215614c0b579088949392918692614bdc575b5081614b28575b5015614a9a57505050509050905b8401524290830152565b8751809681937f3ba0b9a9000000000000000000000000000000000000000000000000000000008352165afa928315614b1c578193614aed575b505080821115614ae657505b90614a90565b9050614ae0565b9092508381813d8311614b15575b614b058183613aa0565b8101031261049157519138614ad4565b503d614afb565b508451903d90823e3d90fd5b82939491508951928380927f60e0a9e10000000000000000000000000000000000000000000000000000000082525afa908115614bd25790879392918591614b86575b506fffffffffffffffffffffffffffffffff16431438614a82565b848193949592503d8311614bcb575b614b9f8183613aa0565b8101031261043f57516fffffffffffffffffffffffffffffffff8116810361043f579086929138614b6b565b503d614b95565b88513d86823e3d90fd5b614bfd919250853d8711614c04575b614bf58183613aa0565b810190614d2b565b9038614a7b565b503d614beb565b89513d87823e3d90fd5b90938682813d8311614c3d575b614c2c8183613aa0565b810103126110fc5750519238614a37565b503d614c22565b87513d6000823e3d90fd5b908582813d8311614c7d575b614c658183613aa0565b810103126110fc5750614c77906148e1565b386149fa565b503d614c5b565b86513d6000823e3d90fd5b82813d8311614d19575b614ca38183613aa0565b810103126110fc5750835190614cb882613a4b565b80518252602081015160208301528481015185830152614cda606082016148e1565b60608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151908201528038614993565b503d614c99565b85513d6000823e3d90fd5b908160209103126138bc575180151581036138bc5790565b614d4b6147a0565b90614d757f0000000000000000000000000000000000000000000000000000000000000000615f9a565b8252614da07f0000000000000000000000000000000000000000000000000000000000000000615f9a565b6060830152614dce7f0000000000000000000000000000000000000000000000000000000000000000615f9a565b6020830152614dfc7f0000000000000000000000000000000000000000000000000000000000000000615f9a565b60408301526042546080830152565b614e1361483a565b614e47604051917fa76541e50000000000000000000000000000000000000000000000000000000083526004830190613bd2565b6020816102c4816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa908115614f0957600091614ed8575b506042547f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116138bc576000828201928312911290801582169115161761402357600081126138bc57604255565b906020823d8211614f01575b81614ef160209383613aa0565b810103126110fc57505138614e89565b3d9150614ee4565b6040513d6000823e3d90fd5b9160206140a79294936001600160a01b0360c0820196168152019060808091805184526020810151602085015260408101516040850152606081015160608501520151910152565b90929160406101e091614f9d8461020081019760808091805184526020810151602085015260408101516040850152606081015160608501520151910152565b61500560a0850182518051825260208101516020830152604081015160408301526001600160a01b0360608201511660608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b60208101516101c08501520151910152565b156150bf576150666020615029614d43565b6150316148f5565b9060405193849283927fb1ef9e5000000000000000000000000000000000000000000000000000000000845260048401614f5d565b038173__$a7098bf20e819a81ac73f4e6e6693165f6$__5af4908115614f0957600091615091575090565b906020823d82116150b7575b816150aa60209383613aa0565b810103126110fc57505190565b3d915061509d565b61506660206150cc614d43565b604051809381927fe2102e670000000000000000000000000000000000000000000000000000000083527f000000000000000000000000000000000000000000000000000000000000000060048401614f15565b8181029291811591840414171561402357565b811561513d570490565b634e487b7160e01b600052601260045260246000fd5b61515b614d43565b906151646148f5565b6001600160f81b03928360025416156152e25773__$a7098bf20e819a81ac73f4e6e6693165f6$__91604051927fe2102e670000000000000000000000000000000000000000000000000000000084526020928385806151e8847f000000000000000000000000000000000000000000000000000000000000000060048401614f15565b0381855af4948515614f09576000956152b3575b50918391615239936040518095819482937fb1ef9e5000000000000000000000000000000000000000000000000000000000845260048401614f5d565b03915af4918215614f0957600092615280575b505091615272611c629261451f95948082116000146152785750935b6002541682615120565b92614121565b905093615268565b81819392933d83116152ac575b6152978183613aa0565b810103126110fc575051615272611c6261524c565b503d61528d565b90948482813d83116152db575b6152ca8183613aa0565b810103126110fc57505193836151fc565b503d6152c0565b5050905090565b6001600160f81b0360025416801561546657615303614d43565b61530b6148f5565b9073__$a7098bf20e819a81ac73f4e6e6693165f6$__91604051927fe2102e6700000000000000000000000000000000000000000000000000000000845260209283858061537d847f000000000000000000000000000000000000000000000000000000000000000060048401614f15565b0381855af4948515614f0957600095615437575b509183916153ce936040518095819482937fb1ef9e5000000000000000000000000000000000000000000000000000000000845260048401614f5d565b03915af4918215614f0957600092615406575b50509161366c9161451f94938082116000146153fe575092615120565b905092615120565b81819392933d8311615430575b61541d8183613aa0565b810103126110fc5750518161451f6153e1565b503d615413565b90948482813d831161545f575b61544e8183613aa0565b810103126110fc5750519383615391565b503d615444565b5090565b81601f820112156138bc5780519161548183613fcb565b9261548f6040519485613aa0565b808452602092838086019260051b8201019283116138bc578301905b8282106154b9575050505090565b815181529083019083016154ab565b906020828203126138bc57815167ffffffffffffffff81116138bc5761451f920161546a565b604051906154fb82613a68565b600182526020368184013761550f82614039565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169052565b90916001600160a01b03918281169283156156ee57841693841561568457848414615640576155739161556e613f7b565b6140b9565b6000828152806020526040812054918083106155d657604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9587602096528286520382822055868152206155cb82825461412e565b9055604051908152a3565b608460405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b606460405162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c660000000000000000006044820152fd5b608460405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b0381169081156158915761577590613283613f7b565b600091818352826020526040832054818110615827578190838552846020520360408420556001600160f81b0380821161043f57600254908083168183160381811161581357917fff000000000000000000000000000000000000000000000000000000000000007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef949260209416911617600255604051908152a3565b602486634e487b7160e01b81526011600452fd5b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b6001600160a01b038091169182156159c6571691821561595c5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260018252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b6005811015615bbd5780615a405750565b60018103615a8c57606460405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b60028103615ad857606460405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60038103615b4a57608460405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b600414615b5357565b608460405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b634e487b7160e01b600052602160045260246000fd5b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311615c7c5760ff16601b81141580615c71575b615c65579160809493916020936040519384528484015260408301526060820152600093849182805260015afa15615c585781516001600160a01b03811615615c52579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600490565b50601c811415615c0b565b50505050600090600390565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480615d79575b15615ce3577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152615d73816139fd565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614615cba565b6001600160a01b03169060405190615db982613a68565b6020928383527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656484840152803b15615e945760008281928287615e059796519301915af1612508613e71565b80519081615e1257505050565b8280615e22938301019101614d2b565b15615e2a5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6064846040519062461bcd60e51b82526004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b82156140b4576001600160a01b039081169081615f4e575050600080809381935af1615f02613e71565b5015615f0a57565b606460405162461bcd60e51b815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b926140a793604051937fa9059cbb000000000000000000000000000000000000000000000000000000006020860152166024840152604483015260448252615f9582613a84565b615da2565b6000906001600160a01b031680615fb15750504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa918215616014578092615ffa57505090565b9091506020823d82116150b757816150aa60209383613aa0565b604051903d90823e3d90fd5b906001600160a01b039182811690811561411b576040918251809581957fdd62ed3e0000000000000000000000000000000000000000000000000000000083523060048401521691826024830152602096879160449788915afa80156162685760009061622f575b6b7fffffffffffffffffffffff9150106160a4575b5050505050565b8251906000808784017f095ea7b3000000000000000000000000000000000000000000000000000000009485825284602482015282898201528881526160e981613a84565b519082875af16160f7613e71565b816161ff575b50156161bd57916000929183809386519089820193845260248201526000198882015287815261612c81613a84565b51925af1616138613e71565b8161618d575b501561614b57808061609d565b606492917f5361666520417070726f7665000000000000000000000000000000000000000091519262461bcd60e51b84526004840152600c6024840152820152fd5b805180159250859083156161a5575b5050503861613e565b6161b59350820181019101614d2b565b38848161619c565b6064867f5361666520417070726f766500000000000000000000000000000000000000008787519262461bcd60e51b84526004840152600c6024840152820152fd5b80518015925088908315616217575b505050386160fd565b6162279350820181019101614d2b565b38878161620e565b8682813d8311616261575b6162448183613aa0565b810103126110fc57506b7fffffffffffffffffffffff9051616088565b503d61623a565b84513d6000823e3d90fdfea2646970667358221220e00fdbaa9351916dd403e6fa9fe8020a5a23dd64baf015fa252312e83912bc1e64736f6c634300081100338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f";
1772
2131
 
1773
2132
  type LongYieldTradingBotConstructorParams =
1774
- | [signer?: Signer]
2133
+ | [linkLibraryAddresses: LongYieldTradingBotLibraryAddresses, signer?: Signer]
1775
2134
  | ConstructorParameters<typeof ContractFactory>;
1776
2135
 
1777
2136
  const isSuperArgs = (
1778
2137
  xs: LongYieldTradingBotConstructorParams
1779
- ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
2138
+ ): xs is ConstructorParameters<typeof ContractFactory> => {
2139
+ return (
2140
+ typeof xs[0] === "string" ||
2141
+ (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) ||
2142
+ "_isInterface" in xs[0]
2143
+ );
2144
+ };
1780
2145
 
1781
2146
  export class LongYieldTradingBot__factory extends ContractFactory {
1782
2147
  constructor(...args: LongYieldTradingBotConstructorParams) {
1783
2148
  if (isSuperArgs(args)) {
1784
2149
  super(...args);
1785
2150
  } else {
1786
- super(_abi, _bytecode, args[0]);
2151
+ const [linkLibraryAddresses, signer] = args;
2152
+ super(
2153
+ _abi,
2154
+ LongYieldTradingBot__factory.linkBytecode(linkLibraryAddresses),
2155
+ signer
2156
+ );
1787
2157
  }
1788
2158
  this.contractName = "LongYieldTradingBot";
1789
2159
  }
1790
2160
 
2161
+ static linkBytecode(
2162
+ linkLibraryAddresses: LongYieldTradingBotLibraryAddresses
2163
+ ): string {
2164
+ let linkedBytecode = _bytecode;
2165
+
2166
+ linkedBytecode = linkedBytecode.replace(
2167
+ new RegExp("__\\$4841977b5e630d8d12d7143ab50b0fe229\\$__", "g"),
2168
+ linkLibraryAddresses[
2169
+ "contracts/core/TradingBot/libraries/LongYieldActionLib.sol:LongYieldActionLib"
2170
+ ]
2171
+ .replace(/^0x/, "")
2172
+ .toLowerCase()
2173
+ );
2174
+
2175
+ linkedBytecode = linkedBytecode.replace(
2176
+ new RegExp("__\\$a7098bf20e819a81ac73f4e6e6693165f6\\$__", "g"),
2177
+ linkLibraryAddresses[
2178
+ "contracts/core/TradingBot/libraries/TvlLib.sol:TvlLib"
2179
+ ]
2180
+ .replace(/^0x/, "")
2181
+ .toLowerCase()
2182
+ );
2183
+
2184
+ return linkedBytecode;
2185
+ }
2186
+
1791
2187
  deploy(
1792
2188
  _market: string,
2189
+ _router: string,
1793
2190
  _PENDLE: string,
1794
2191
  _decisionHelper: string,
1795
2192
  overrides?: Overrides & { from?: string | Promise<string> }
1796
2193
  ): Promise<LongYieldTradingBot> {
1797
2194
  return super.deploy(
1798
2195
  _market,
2196
+ _router,
1799
2197
  _PENDLE,
1800
2198
  _decisionHelper,
1801
2199
  overrides || {}
@@ -1803,12 +2201,14 @@ export class LongYieldTradingBot__factory extends ContractFactory {
1803
2201
  }
1804
2202
  getDeployTransaction(
1805
2203
  _market: string,
2204
+ _router: string,
1806
2205
  _PENDLE: string,
1807
2206
  _decisionHelper: string,
1808
2207
  overrides?: Overrides & { from?: string | Promise<string> }
1809
2208
  ): TransactionRequest {
1810
2209
  return super.getDeployTransaction(
1811
2210
  _market,
2211
+ _router,
1812
2212
  _PENDLE,
1813
2213
  _decisionHelper,
1814
2214
  overrides || {}
@@ -1834,3 +2234,8 @@ export class LongYieldTradingBot__factory extends ContractFactory {
1834
2234
  return new Contract(address, _abi, signerOrProvider) as LongYieldTradingBot;
1835
2235
  }
1836
2236
  }
2237
+
2238
+ export interface LongYieldTradingBotLibraryAddresses {
2239
+ ["contracts/core/TradingBot/libraries/LongYieldActionLib.sol:LongYieldActionLib"]: string;
2240
+ ["contracts/core/TradingBot/libraries/TvlLib.sol:TvlLib"]: string;
2241
+ }