@pendle/core-v2 0.17.7-testnet → 0.18.0-testnet
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.
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
- package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.json +0 -141
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.json +0 -141
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +934 -0
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -143
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -143
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -143
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.json +0 -141
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -143
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -143
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +13 -2
- package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.json +149 -0
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPFeeDistributorFactory.sol/IPFeeDistributorFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +42 -2
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +73 -100
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
- package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
- package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
- package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +1 -1
- package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +2 -2
- package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.dbg.json +4 -0
- package/build/artifacts/contracts/router/kyberswap/{IMultihopRouter.sol/IMultihopRouter.json → IMultihopRouterEthereum.sol/IMultihopRouterEthereum.json} +3 -3
- package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
- package/contracts/core/BulkSeller/BulkSeller.sol +1 -1
- package/contracts/core/StandardizedYield/implementations/Ape/{PendleApeStakingSY.sol → sAPE.sol} +43 -30
- package/contracts/interfaces/IApeStaking.sol +3 -0
- package/contracts/offchain-helpers/MarketMathStatic.sol +30 -55
- package/contracts/offchain-helpers/RouterStatic.sol +30 -52
- package/contracts/router/kyberswap/AggregationRouterHelper.sol +37 -23
- package/contracts/router/kyberswap/{IMultihopRouter.sol → IMultihopRouterEthereum.sol} +11 -9
- package/deployments/1-markets/APE-JUNE-29.json +8 -0
- package/deployments/80001-core.json +28 -0
- package/deployments/80001-markets/USDC-FEB-4TH.json +10 -0
- package/deployments/80001-markets/WETH-FEB-4TH.json +11 -0
- package/deployments/80001-testenv.json +22 -0
- package/package.json +1 -1
- package/typechain-types/BribeDistributor.ts +363 -0
- package/typechain-types/DistributorBase.ts +363 -0
- package/typechain-types/FeeDistributor.ts +416 -0
- package/typechain-types/IApeStaking.ts +31 -0
- package/typechain-types/IMultihopRouterEthereum.ts +209 -0
- package/typechain-types/MarketMathStatic.ts +49 -0
- package/typechain-types/PendleApeStakingSY.ts +88 -204
- package/typechain-types/PendleConvexLPSY.ts +0 -204
- package/typechain-types/PendleCurveFraxUsdcSY.ts +0 -204
- package/typechain-types/PendleCurveUsdd3CrvSY.ts +0 -204
- package/typechain-types/PendleLooksStakingSY.ts +0 -204
- package/typechain-types/PendleQiTokenSY.ts +0 -204
- package/typechain-types/PendleWstEthSY.ts +0 -204
- package/typechain-types/RouterStatic.ts +0 -49
- package/typechain-types/SAPE.ts +1191 -0
- package/typechain-types/SYBase.ts +0 -204
- package/typechain-types/SYBaseWithRewards.ts +0 -204
- package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
- package/typechain-types/factories/ActionCallback__factory.ts +1 -1
- package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
- package/typechain-types/factories/ActionMisc__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
- package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
- package/typechain-types/factories/BribeDistributor__factory.ts +303 -0
- package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
- package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
- package/typechain-types/factories/BulkSeller__factory.ts +1 -1
- package/typechain-types/factories/DistributorBase__factory.ts +249 -0
- package/typechain-types/factories/Errors__factory.ts +12 -1
- package/typechain-types/factories/FeeDistributor__factory.ts +339 -0
- package/typechain-types/factories/IApeStaking__factory.ts +34 -0
- package/typechain-types/factories/IMultihopRouterEthereum__factory.ts +155 -0
- package/typechain-types/factories/MarketMathStatic__factory.ts +41 -1
- package/typechain-types/factories/OracleLib__factory.ts +1 -1
- package/typechain-types/factories/PendleApeStakingSY__factory.ts +57 -141
- package/typechain-types/factories/PendleConvexLPSY__factory.ts +0 -141
- package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -142
- package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -142
- package/typechain-types/factories/PendleFeeDistributorFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -142
- package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleMarket__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -142
- package/typechain-types/factories/PendleRouter__factory.ts +1 -1
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -142
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
- package/typechain-types/factories/RouterStatic__factory.ts +18 -41
- package/typechain-types/factories/SAPE__factory.ts +1001 -0
- package/typechain-types/factories/SYBaseWithRewards__factory.ts +0 -141
- package/typechain-types/factories/SYBase__factory.ts +0 -141
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
- package/typechain-types/hardhat.d.ts +72 -0
- package/typechain-types/index.ts +12 -0
- package/build/artifacts/contracts/router/kyberswap/IMultihopRouter.sol/IMultihopRouter.dbg.json +0 -4
|
@@ -217,8 +217,8 @@
|
|
|
217
217
|
"type": "function"
|
|
218
218
|
}
|
|
219
219
|
],
|
|
220
|
-
"bytecode": "0x60a0604052306080523480156200001557600080fd5b50600154600160a81b900460ff16158080156200003d575060018054600160a01b900460ff16105b806200007357506200005a306200015860201b620007611760201c565b15801562000073575060018054600160a01b900460ff16145b620000db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6001805460ff60a01b1916600160a01b179055801562000109576001805460ff60a81b1916600160a81b1790555b801562000151576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000167565b6001600160a01b03163b151590565b608051612b386200019f600039600081816102b6015281816102f6015281816104290152818161046901526104e50152612b386000f3fe6080604052600436106100765760003560e01c8063078dfbe71461007b5780633659cfe61461009d5780634e71e0c8146100bd5780634f1ef286146100d257806352d1902d146100e55780638129fc1c1461010d5780638da5cb5b14610122578063e30c39781461015a578063e4da6f2e1461017a575b600080fd5b34801561008757600080fd5b5061009b6100963660046115fd565b6101a7565b005b3480156100a957600080fd5b5061009b6100b8366004611648565b6102ac565b3480156100c957600080fd5b5061009b610374565b61009b6100e03660046117d9565b61041f565b3480156100f157600080fd5b506100fa6104d8565b6040519081526020015b60405180910390f35b34801561011957600080fd5b5061009b610586565b34801561012e57600080fd5b50600054610142906001600160a01b031681565b6040516001600160a01b039091168152602001610104565b34801561016657600080fd5b50600154610142906001600160a01b031681565b34801561018657600080fd5b5061019a610195366004611835565b6106b4565b60405161010491906118fc565b6000546001600160a01b031633146101da5760405162461bcd60e51b81526004016101d19061190f565b60405180910390fd5b811561028b576001600160a01b0383161515806101f45750805b6102385760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016101d1565b600080546040516001600160a01b0380871693921691600080516020612abc83398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102f45760405162461bcd60e51b81526004016101d190611944565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610326610770565b6001600160a01b03161461034c5760405162461bcd60e51b81526004016101d19061197e565b6103558161078c565b60408051600080825260208201909252610371918391906107b6565b50565b6001546001600160a01b03163381146103cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016101d1565b600080546040516001600160a01b0380851693921691600080516020612abc83398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104675760405162461bcd60e51b81526004016101d190611944565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610499610770565b6001600160a01b0316146104bf5760405162461bcd60e51b81526004016101d19061197e565b6104c88261078c565b6104d4828260016107b6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105735760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016101d1565b50600080516020612a9c83398151915290565b600154600160a81b900460ff16158080156105ac575060018054600160a01b900460ff16105b806105d357506105bb30610761565b1580156105d3575060018054600160a01b900460ff16145b6106365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101d1565b6001805460ff60a01b1916600160a01b1790558015610663576001805460ff60a81b1916600160a81b1790555b61066b610921565b8015610371576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b606060006106c560048286886119b8565b6106ce916119e2565b905060008080806106e2886004818c6119b8565b8101906106ef9190611aff565b93509350935093506107028383896109a2565b60405191945092508590610720908690869086908690602401611cce565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152955050505050505b9392505050565b6001600160a01b03163b151590565b600080516020612a9c833981519152546001600160a01b031690565b6000546001600160a01b031633146103715760405162461bcd60e51b81526004016101d19061190f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107e9576102a783610a72565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610843575060408051601f3d908101601f1916820190925261084091810190611dc9565b60015b6108a65760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016101d1565b600080516020612a9c83398151915281146109155760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016101d1565b506102a7838383610b0c565b600154600160a81b900460ff1661098e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d1565b600080546001600160a01b03191633179055565b6109aa611563565b60e084015160a0850151606091908481036109cc578686935093505050610a6a565b6020821615610a495760408701515115610a285760405162461bcd60e51b815260206004820152601e60248201527f6b796265723a2063616e2774207363616c652069662074616b6520666565000060448201526064016101d1565b610a33878287610b37565b610a3e878388610c92565b935093505050610a6a565b6000610a56878388610dbf565b9050610a63888388610b37565b9450925050505b935093915050565b610a7b81610761565b610add5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101d1565b600080516020612a9c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610b158361105b565b600082511180610b225750805b156102a757610b31838361109b565b50505050565b610b3f611563565b60c084015183610b4f8483611df8565b610b599190611e0f565b60c08601528015801590610b6f575060c0850151155b15610b7c57600160c08601525b60a08501839052604085015151600003610b99578491505061075a565b6000805b866040015151811015610c87576001876040015151610bbc9190611e31565b8103610bf357610bcc8286611e31565b87606001518281518110610be257610be2611e44565b602002602001018181525050610c4a565b858588606001518381518110610c0b57610c0b611e44565b6020026020010151610c1d9190611df8565b610c279190611e0f565b87606001518281518110610c3d57610c3d611e44565b6020026020010181815250505b86606001518181518110610c6057610c60611e44565b602002602001015182610c739190611e5a565b915080610c7f81611e6d565b915050610b9d565b509495945050505050565b6060600084806020019051810190610caa919061201c565b8051519091506000805b82811015610d9257610cc7600184611e31565b8103610cfe57610cd78287611e31565b84602001518281518110610ced57610ced611e44565b602002602001018181525050610d55565b868685602001518381518110610d1657610d16611e44565b6020026020010151610d289190611df8565b610d329190611e0f565b84602001518281518110610d4857610d48611e44565b6020026020010181815250505b83602001518181518110610d6b57610d6b611e44565b602002602001015182610d7e9190611e5a565b915080610d8a81611e6d565b915050610cb4565b5082604051602001610da491906120fe565b60405160208183030381529060405293505050509392505050565b6060600084806020019051810190610dd79190612331565b905083838260600151610dea9190611df8565b610df49190611e0f565b60608201526000805b82515181101561102f57600083600001518281518110610e1f57610e1f611e44565b6020026020010151600081518110610e3957610e39611e44565b6020026020010151905060006008826020015161ffff16901c905060006001866000015151610e689190611e31565b8403610e7b57610e788589611e31565b90505b60ff8216610e9b578251610e9190828b8b6110c9565b908452905061100d565b60ff821660011480610eb0575060ff82166004145b15610ec3578251610e9190828b8b611196565b60011960ff831601610edd578251610e9190828b8b611217565b60021960ff831601610ef7578251610e9190828b8b6110c9565b60041960ff831601610f11578251610e9190828b8b611276565b60051960ff831601610f2b578251610e9190828b8b61133d565b60061960ff831601610f7d5760405162461bcd60e51b815260206004820152601b60248201527a6b796265723a2063616e2774207363616c65206b7962657272667160281b60448201526064016101d1565b60071960ff831601610f97578251610e9190828b8b6113f0565b60081960ff831601610fb1578251610e9190828b8b6110c9565b60405162461bcd60e51b815260206004820152602b60248201527f4167677265676174696f6e4578656375746f723a204465782074797065206e6f60448201526a1d081cdd5c1c1bdc9d195960aa1b60648201526084016101d1565b6110178186611e5a565b9450505050808061102790611e6d565b915050610dfd565b50816040516020016110419190612408565b604051602081830303815290604052925050509392505050565b61106481610a72565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606110c08383604051806060016040528060278152602001612adc6027913961144f565b90505b92915050565b6060600080868060200190518101906110e29190612546565b905085156110f65760808101869052611117565b848482608001516111079190611df8565b6111119190611e0f565b60808201525b80604051602001611174919081516001600160a01b039081168252602080840151821690830152604080840151821690830152606080840151909116908201526080808301519082015260a0918201519181019190915260c00190565b6040516020818303038152906040528160800151925092505094509492505050565b6060600080868060200190518101906111af91906125d4565b905085156111c35760a081018690526111e4565b84848260a001516111d49190611df8565b6111de9190611e0f565b60a08201525b806040516020016111f59190612675565b6040516020818303038152906040528160a00151925092505094509492505050565b6060600080868060200190518101906112309190612722565b905085156112445760a08101869052611265565b84848260a001516112559190611df8565b61125f9190611e0f565b60a08201525b806040516020016111f591906127bf565b60606000808680602001905181019061128f9190612859565b905085156112a357608081018690526112c4565b848482608001516112b49190611df8565b6112be9190611e0f565b60808201525b80604051602001611174919060006101008201905060018060a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401526080840151608084015260a084015160a08401528060c08501511660c08401525060e0830151151560e083015292915050565b6060600080868060200190518101906113569190612914565b9050851561136a576080810186905261138b565b8484826080015161137b9190611df8565b6113859190611e0f565b60808201525b608081015160405161117491839160200182516001600160a01b03908116825260208085015190830152604080850151821690830152606080850151909116908201526080808401519082015260a0928301519281019290925260c082015260e00190565b6060600080868060200190518101906114099190612953565b9050851561141d576080810186905261143e565b8484826080015161142e9190611df8565b6114389190611e0f565b60808201525b8060405160200161117491906129dd565b606061145a84610761565b6114b55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101d1565b600080856001600160a01b0316856040516114d09190612a5f565b600060405180830381855af49150503d806000811461150b576040519150601f19603f3d011682016040523d82523d6000602084013e611510565b606091505b509150915061152082828661152a565b9695505050505050565b6060831561153957508161075a565b8251156115495782518084602001fd5b8160405162461bcd60e51b81526004016101d191906118fc565b60405180610120016040528060006001600160a01b0316815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b6001600160a01b038116811461037157600080fd5b80356115ea816115ca565b919050565b801515811461037157600080fd5b60008060006060848603121561161257600080fd5b833561161d816115ca565b9250602084013561162d816115ef565b9150604084013561163d816115ef565b809150509250925092565b60006020828403121561165a57600080fd5b813561075a816115ca565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561169e5761169e611665565b60405290565b60405160a081016001600160401b038111828210171561169e5761169e611665565b604080519081016001600160401b038111828210171561169e5761169e611665565b60405160e081016001600160401b038111828210171561169e5761169e611665565b60405160c081016001600160401b038111828210171561169e5761169e611665565b604051601f8201601f191681016001600160401b038111828210171561175457611754611665565b604052919050565b60006001600160401b0382111561177557611775611665565b50601f01601f191660200190565b600082601f83011261179457600080fd5b81356117a76117a28261175c565b61172c565b8181528460208386010111156117bc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156117ec57600080fd5b82356117f7816115ca565b915060208301356001600160401b0381111561181257600080fd5b61181e85828601611783565b9150509250929050565b6001600160a01b03169052565b60008060006040848603121561184a57600080fd5b83356001600160401b038082111561186157600080fd5b818601915086601f83011261187557600080fd5b81358181111561188457600080fd5b87602082850101111561189657600080fd5b6020928301989097509590910135949350505050565b60005b838110156118c75781810151838201526020016118af565b50506000910152565b600081518084526118e88160208601602086016118ac565b601f01601f19169290920160200192915050565b6020815260006110c060208301846118d0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c90820152600080516020612a7c83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612a7c83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b600080858511156119c857600080fd5b838611156119d557600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611a0a5780818660040360031b1b83161692505b505092915050565b60006001600160401b03821115611a2b57611a2b611665565b5060051b60200190565b600082601f830112611a4657600080fd5b81356020611a566117a283611a12565b82815260059290921b84018101918181019086841115611a7557600080fd5b8286015b84811015611a99578035611a8c816115ca565b8352918301918301611a79565b509695505050505050565b600082601f830112611ab557600080fd5b81356020611ac56117a283611a12565b82815260059290921b84018101918181019086841115611ae457600080fd5b8286015b84811015611a995780358352918301918301611ae8565b60008060008060808587031215611b1557600080fd5b8435611b20816115ca565b935060208501356001600160401b0380821115611b3c57600080fd5b908601906101208289031215611b5157600080fd5b611b5961167b565b611b62836115df565b8152611b70602084016115df565b6020820152604083013582811115611b8757600080fd5b611b938a828601611a35565b604083015250606083013582811115611bab57600080fd5b611bb78a828601611aa4565b606083015250611bc9608084016115df565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013583811115611c0057600080fd5b611c0c8b828701611783565b828401525050809550506040870135915080821115611c2a57600080fd5b611c3688838901611783565b93506060870135915080821115611c4c57600080fd5b50611c5987828801611783565b91505092959194509250565b600081518084526020808501945080840160005b83811015610c875781516001600160a01b031687529582019590820190600101611c79565b600081518084526020808501945080840160005b83811015610c8757815187529582019590820190600101611cb2565b6001600160a01b03851681526080602082018190528451611cf191830190611828565b60006020850151611d0560a0840182611828565b5060408501516101208060c0850152611d226101a0850183611c65565b91506060870151607f19808685030160e0870152611d408483611c9e565b935060808901519150610100611d5881880184611828565b60a08a01518488015260c08a015161014088015260e08a0151610160880152808a015193505080868503016101808701525050611d9582826118d0565b9150508281036040840152611daa81866118d0565b90508281036060840152611dbe81856118d0565b979650505050505050565b600060208284031215611ddb57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176110c3576110c3611de2565b600082611e2c57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156110c3576110c3611de2565b634e487b7160e01b600052603260045260246000fd5b808201808211156110c3576110c3611de2565b600060018201611e7f57611e7f611de2565b5060010190565b80516115ea816115ca565b600082601f830112611ea257600080fd5b81516020611eb26117a283611a12565b82815260059290921b84018101918181019086841115611ed157600080fd5b8286015b84811015611a99578051611ee8816115ca565b8352918301918301611ed5565b600082601f830112611f0657600080fd5b81516020611f166117a283611a12565b82815260059290921b84018101918181019086841115611f3557600080fd5b8286015b84811015611a995780518352918301918301611f39565b600082601f830112611f6157600080fd5b8151611f6f6117a28261175c565b818152846020838601011115611f8457600080fd5b611f958260208301602087016118ac565b949350505050565b600082601f830112611fae57600080fd5b81516020611fbe6117a283611a12565b82815260059290921b84018101918181019086841115611fdd57600080fd5b8286015b84811015611a995780516001600160401b038111156120005760008081fd5b61200e8986838b0101611f50565b845250918301918301611fe1565b60006020828403121561202e57600080fd5b81516001600160401b038082111561204557600080fd5b9083019060a0828603121561205957600080fd5b6120616116a4565b82518281111561207057600080fd5b61207c87828601611e91565b82525060208301518281111561209157600080fd5b61209d87828601611ef5565b6020830152506040830151828111156120b557600080fd5b6120c187828601611f9d565b604083015250606083015160608201526080830151828111156120e357600080fd5b6120ef87828601611f50565b60808301525095945050505050565b60006020808352835160a08285015261211a60c0850182611c65565b905081850151601f19808684030160408701526121378383611c9e565b60408801518782038301606089015280518083529194508501925084840190600581901b8501860160005b8281101561218e578487830301845261217c8287516118d0565b95880195938801939150600101612162565b5060608a015160808a015260808a01519650838982030160a08a01526121b481886118d0565b9a9950505050505050505050565b600082601f8301126121d357600080fd5b81516121e16117a282611a12565b808282526020820191508560208460051b870101111561220057600080fd5b602085015b60208460051b8701018110156123275780516001600160401b0381111561222b57600080fd5b8601603f8101881361223c57600080fd5b602081015161224d6117a282611a12565b808282526020820191508a60408460051b860101111561226c57600080fd5b604084015b60408460051b8601018110156123115780516001600160401b0381111561229757600080fd5b60408682018e03603f190112156122ad57600080fd5b6122b56116c6565b868201604001516001600160401b038111156122d057600080fd5b6122e18f604083868c010101611f50565b825250908601606001519061ffff821682146122fc57600080fd5b60208181019290925284529283019201612271565b5086525050602093840193919091019050612205565b5095945050505050565b60006020828403121561234357600080fd5b81516001600160401b038082111561235a57600080fd5b9083019060e0828603121561236e57600080fd5b6123766116e8565b82518281111561238557600080fd5b612391878286016121c2565b8252506123a060208401611e86565b60208201526123b160408401611e86565b6040820152606083015160608201526123cc60808401611e86565b608082015260a083015160a082015260c0830151828111156123ed57600080fd5b6123f987828601611f50565b60c08301525095945050505050565b6020808252825160e0838301528051610100840181905260009291600582811b860161012090810193928501929087019186805b838110156124cb5789870361011f1901855285518051808952908901908989019080861b8a018b01855b828110156124b557601f198c830301845284516040815181855261248c828601826118d0565b91505061ffff8f830151168f85015280935050508c850194508c84019350600181019050612466565b509950505095880195509387019360010161243c565b5050505050508185015191506124e46040850183611828565b604085015191506124f86060850183611828565b606085015160808501526080850151915061251660a0850183611828565b60a085015160c085015260c08501519150601f198482030160e085015261253d81836118d0565b95945050505050565b600060c0828403121561255857600080fd5b61256061170a565b825161256b816115ca565b8152602083015161257b816115ca565b6020820152604083015161258e816115ca565b604082015260608301516125a1816115ca565b60608201526080838101519082015260a0928301519281019290925250919050565b805160ff811681146115ea57600080fd5b600061012082840312156125e757600080fd5b6125ef61167b565b6125f883611e86565b815261260660208401611e86565b602082015261261760408401611e86565b6040820152612628606084016125c3565b6060820152612639608084016125c3565b608082015260a083015160a082015260c083015160c082015260e083015160e082015261010061266a818501611e86565b908201529392505050565b81516001600160a01b039081168252602080840151909116908201526040808301516101208301916126a990840182611828565b5060608301516126be606084018260ff169052565b5060808301516126d3608084018260ff169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151611a0a82850182611828565b8051600f81900b81146115ea57600080fd5b80516115ea816115ef565b6000610120828403121561273557600080fd5b61273d61167b565b61274683611e86565b815261275460208401611e86565b602082015261276560408401611e86565b604082015261277660608401612705565b606082015261278760808401612705565b608082015260a083015160a082015260c083015160c08201526127ac60e08401612717565b60e082015261010061266a818501612717565b81516001600160a01b039081168252602080840151909116908201526040808301516101208301916127f390840182611828565b5060608301516128086060840182600f0b9052565b50608083015161281d6080840182600f0b9052565b5060a083015160a083015260c083015160c083015260e083015161284560e084018215159052565b506101008381015180151584830152611a0a565b600061010080838503121561286d57600080fd5b604051908101906001600160401b038211818310171561288f5761288f611665565b81604052835191506128a0826115ca565b8181526128af60208501611e86565b60208201526128c060408501611e86565b60408201526128d160608501611e86565b60608201526080840151608082015260a084015160a08201526128f660c08501611e86565b60c082015261290760e08501612717565b60e0820152949350505050565b600060c0828403121561292657600080fd5b61292e61170a565b8251612939816115ca565b815260208381015190820152604083015161258e816115ca565b6000610120828403121561296657600080fd5b61296e61167b565b61297783611e86565b815261298560208401611e86565b602082015261299660408401611e86565b60408201526129a760608401611e86565b60608201526080830151608082015260a083015160a08201526129cc60c08401611e86565b60c08201526127ac60e08401612717565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612a1190840182611828565b506060830151612a246060840182611828565b506080830151608083015260a083015160a083015260c0830151612a4b60c0840182611828565b5060e083015161284560e084018215159052565b60008251612a718184602087016118ac565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c366cc2d0cc2d15886886e9c951e826a922ce2bcc930e405fbc55c7081fe9b1b64736f6c63430008110033",
|
|
221
|
-
"deployedBytecode": "0x6080604052600436106100765760003560e01c8063078dfbe71461007b5780633659cfe61461009d5780634e71e0c8146100bd5780634f1ef286146100d257806352d1902d146100e55780638129fc1c1461010d5780638da5cb5b14610122578063e30c39781461015a578063e4da6f2e1461017a575b600080fd5b34801561008757600080fd5b5061009b6100963660046115fd565b6101a7565b005b3480156100a957600080fd5b5061009b6100b8366004611648565b6102ac565b3480156100c957600080fd5b5061009b610374565b61009b6100e03660046117d9565b61041f565b3480156100f157600080fd5b506100fa6104d8565b6040519081526020015b60405180910390f35b34801561011957600080fd5b5061009b610586565b34801561012e57600080fd5b50600054610142906001600160a01b031681565b6040516001600160a01b039091168152602001610104565b34801561016657600080fd5b50600154610142906001600160a01b031681565b34801561018657600080fd5b5061019a610195366004611835565b6106b4565b60405161010491906118fc565b6000546001600160a01b031633146101da5760405162461bcd60e51b81526004016101d19061190f565b60405180910390fd5b811561028b576001600160a01b0383161515806101f45750805b6102385760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016101d1565b600080546040516001600160a01b0380871693921691600080516020612abc83398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102f45760405162461bcd60e51b81526004016101d190611944565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610326610770565b6001600160a01b03161461034c5760405162461bcd60e51b81526004016101d19061197e565b6103558161078c565b60408051600080825260208201909252610371918391906107b6565b50565b6001546001600160a01b03163381146103cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016101d1565b600080546040516001600160a01b0380851693921691600080516020612abc83398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104675760405162461bcd60e51b81526004016101d190611944565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610499610770565b6001600160a01b0316146104bf5760405162461bcd60e51b81526004016101d19061197e565b6104c88261078c565b6104d4828260016107b6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105735760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016101d1565b50600080516020612a9c83398151915290565b600154600160a81b900460ff16158080156105ac575060018054600160a01b900460ff16105b806105d357506105bb30610761565b1580156105d3575060018054600160a01b900460ff16145b6106365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101d1565b6001805460ff60a01b1916600160a01b1790558015610663576001805460ff60a81b1916600160a81b1790555b61066b610921565b8015610371576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b606060006106c560048286886119b8565b6106ce916119e2565b905060008080806106e2886004818c6119b8565b8101906106ef9190611aff565b93509350935093506107028383896109a2565b60405191945092508590610720908690869086908690602401611cce565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152955050505050505b9392505050565b6001600160a01b03163b151590565b600080516020612a9c833981519152546001600160a01b031690565b6000546001600160a01b031633146103715760405162461bcd60e51b81526004016101d19061190f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107e9576102a783610a72565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610843575060408051601f3d908101601f1916820190925261084091810190611dc9565b60015b6108a65760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016101d1565b600080516020612a9c83398151915281146109155760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016101d1565b506102a7838383610b0c565b600154600160a81b900460ff1661098e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d1565b600080546001600160a01b03191633179055565b6109aa611563565b60e084015160a0850151606091908481036109cc578686935093505050610a6a565b6020821615610a495760408701515115610a285760405162461bcd60e51b815260206004820152601e60248201527f6b796265723a2063616e2774207363616c652069662074616b6520666565000060448201526064016101d1565b610a33878287610b37565b610a3e878388610c92565b935093505050610a6a565b6000610a56878388610dbf565b9050610a63888388610b37565b9450925050505b935093915050565b610a7b81610761565b610add5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101d1565b600080516020612a9c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610b158361105b565b600082511180610b225750805b156102a757610b31838361109b565b50505050565b610b3f611563565b60c084015183610b4f8483611df8565b610b599190611e0f565b60c08601528015801590610b6f575060c0850151155b15610b7c57600160c08601525b60a08501839052604085015151600003610b99578491505061075a565b6000805b866040015151811015610c87576001876040015151610bbc9190611e31565b8103610bf357610bcc8286611e31565b87606001518281518110610be257610be2611e44565b602002602001018181525050610c4a565b858588606001518381518110610c0b57610c0b611e44565b6020026020010151610c1d9190611df8565b610c279190611e0f565b87606001518281518110610c3d57610c3d611e44565b6020026020010181815250505b86606001518181518110610c6057610c60611e44565b602002602001015182610c739190611e5a565b915080610c7f81611e6d565b915050610b9d565b509495945050505050565b6060600084806020019051810190610caa919061201c565b8051519091506000805b82811015610d9257610cc7600184611e31565b8103610cfe57610cd78287611e31565b84602001518281518110610ced57610ced611e44565b602002602001018181525050610d55565b868685602001518381518110610d1657610d16611e44565b6020026020010151610d289190611df8565b610d329190611e0f565b84602001518281518110610d4857610d48611e44565b6020026020010181815250505b83602001518181518110610d6b57610d6b611e44565b602002602001015182610d7e9190611e5a565b915080610d8a81611e6d565b915050610cb4565b5082604051602001610da491906120fe565b60405160208183030381529060405293505050509392505050565b6060600084806020019051810190610dd79190612331565b905083838260600151610dea9190611df8565b610df49190611e0f565b60608201526000805b82515181101561102f57600083600001518281518110610e1f57610e1f611e44565b6020026020010151600081518110610e3957610e39611e44565b6020026020010151905060006008826020015161ffff16901c905060006001866000015151610e689190611e31565b8403610e7b57610e788589611e31565b90505b60ff8216610e9b578251610e9190828b8b6110c9565b908452905061100d565b60ff821660011480610eb0575060ff82166004145b15610ec3578251610e9190828b8b611196565b60011960ff831601610edd578251610e9190828b8b611217565b60021960ff831601610ef7578251610e9190828b8b6110c9565b60041960ff831601610f11578251610e9190828b8b611276565b60051960ff831601610f2b578251610e9190828b8b61133d565b60061960ff831601610f7d5760405162461bcd60e51b815260206004820152601b60248201527a6b796265723a2063616e2774207363616c65206b7962657272667160281b60448201526064016101d1565b60071960ff831601610f97578251610e9190828b8b6113f0565b60081960ff831601610fb1578251610e9190828b8b6110c9565b60405162461bcd60e51b815260206004820152602b60248201527f4167677265676174696f6e4578656375746f723a204465782074797065206e6f60448201526a1d081cdd5c1c1bdc9d195960aa1b60648201526084016101d1565b6110178186611e5a565b9450505050808061102790611e6d565b915050610dfd565b50816040516020016110419190612408565b604051602081830303815290604052925050509392505050565b61106481610a72565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606110c08383604051806060016040528060278152602001612adc6027913961144f565b90505b92915050565b6060600080868060200190518101906110e29190612546565b905085156110f65760808101869052611117565b848482608001516111079190611df8565b6111119190611e0f565b60808201525b80604051602001611174919081516001600160a01b039081168252602080840151821690830152604080840151821690830152606080840151909116908201526080808301519082015260a0918201519181019190915260c00190565b6040516020818303038152906040528160800151925092505094509492505050565b6060600080868060200190518101906111af91906125d4565b905085156111c35760a081018690526111e4565b84848260a001516111d49190611df8565b6111de9190611e0f565b60a08201525b806040516020016111f59190612675565b6040516020818303038152906040528160a00151925092505094509492505050565b6060600080868060200190518101906112309190612722565b905085156112445760a08101869052611265565b84848260a001516112559190611df8565b61125f9190611e0f565b60a08201525b806040516020016111f591906127bf565b60606000808680602001905181019061128f9190612859565b905085156112a357608081018690526112c4565b848482608001516112b49190611df8565b6112be9190611e0f565b60808201525b80604051602001611174919060006101008201905060018060a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401526080840151608084015260a084015160a08401528060c08501511660c08401525060e0830151151560e083015292915050565b6060600080868060200190518101906113569190612914565b9050851561136a576080810186905261138b565b8484826080015161137b9190611df8565b6113859190611e0f565b60808201525b608081015160405161117491839160200182516001600160a01b03908116825260208085015190830152604080850151821690830152606080850151909116908201526080808401519082015260a0928301519281019290925260c082015260e00190565b6060600080868060200190518101906114099190612953565b9050851561141d576080810186905261143e565b8484826080015161142e9190611df8565b6114389190611e0f565b60808201525b8060405160200161117491906129dd565b606061145a84610761565b6114b55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101d1565b600080856001600160a01b0316856040516114d09190612a5f565b600060405180830381855af49150503d806000811461150b576040519150601f19603f3d011682016040523d82523d6000602084013e611510565b606091505b509150915061152082828661152a565b9695505050505050565b6060831561153957508161075a565b8251156115495782518084602001fd5b8160405162461bcd60e51b81526004016101d191906118fc565b60405180610120016040528060006001600160a01b0316815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b6001600160a01b038116811461037157600080fd5b80356115ea816115ca565b919050565b801515811461037157600080fd5b60008060006060848603121561161257600080fd5b833561161d816115ca565b9250602084013561162d816115ef565b9150604084013561163d816115ef565b809150509250925092565b60006020828403121561165a57600080fd5b813561075a816115ca565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561169e5761169e611665565b60405290565b60405160a081016001600160401b038111828210171561169e5761169e611665565b604080519081016001600160401b038111828210171561169e5761169e611665565b60405160e081016001600160401b038111828210171561169e5761169e611665565b60405160c081016001600160401b038111828210171561169e5761169e611665565b604051601f8201601f191681016001600160401b038111828210171561175457611754611665565b604052919050565b60006001600160401b0382111561177557611775611665565b50601f01601f191660200190565b600082601f83011261179457600080fd5b81356117a76117a28261175c565b61172c565b8181528460208386010111156117bc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156117ec57600080fd5b82356117f7816115ca565b915060208301356001600160401b0381111561181257600080fd5b61181e85828601611783565b9150509250929050565b6001600160a01b03169052565b60008060006040848603121561184a57600080fd5b83356001600160401b038082111561186157600080fd5b818601915086601f83011261187557600080fd5b81358181111561188457600080fd5b87602082850101111561189657600080fd5b6020928301989097509590910135949350505050565b60005b838110156118c75781810151838201526020016118af565b50506000910152565b600081518084526118e88160208601602086016118ac565b601f01601f19169290920160200192915050565b6020815260006110c060208301846118d0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c90820152600080516020612a7c83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612a7c83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b600080858511156119c857600080fd5b838611156119d557600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611a0a5780818660040360031b1b83161692505b505092915050565b60006001600160401b03821115611a2b57611a2b611665565b5060051b60200190565b600082601f830112611a4657600080fd5b81356020611a566117a283611a12565b82815260059290921b84018101918181019086841115611a7557600080fd5b8286015b84811015611a99578035611a8c816115ca565b8352918301918301611a79565b509695505050505050565b600082601f830112611ab557600080fd5b81356020611ac56117a283611a12565b82815260059290921b84018101918181019086841115611ae457600080fd5b8286015b84811015611a995780358352918301918301611ae8565b60008060008060808587031215611b1557600080fd5b8435611b20816115ca565b935060208501356001600160401b0380821115611b3c57600080fd5b908601906101208289031215611b5157600080fd5b611b5961167b565b611b62836115df565b8152611b70602084016115df565b6020820152604083013582811115611b8757600080fd5b611b938a828601611a35565b604083015250606083013582811115611bab57600080fd5b611bb78a828601611aa4565b606083015250611bc9608084016115df565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013583811115611c0057600080fd5b611c0c8b828701611783565b828401525050809550506040870135915080821115611c2a57600080fd5b611c3688838901611783565b93506060870135915080821115611c4c57600080fd5b50611c5987828801611783565b91505092959194509250565b600081518084526020808501945080840160005b83811015610c875781516001600160a01b031687529582019590820190600101611c79565b600081518084526020808501945080840160005b83811015610c8757815187529582019590820190600101611cb2565b6001600160a01b03851681526080602082018190528451611cf191830190611828565b60006020850151611d0560a0840182611828565b5060408501516101208060c0850152611d226101a0850183611c65565b91506060870151607f19808685030160e0870152611d408483611c9e565b935060808901519150610100611d5881880184611828565b60a08a01518488015260c08a015161014088015260e08a0151610160880152808a015193505080868503016101808701525050611d9582826118d0565b9150508281036040840152611daa81866118d0565b90508281036060840152611dbe81856118d0565b979650505050505050565b600060208284031215611ddb57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176110c3576110c3611de2565b600082611e2c57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156110c3576110c3611de2565b634e487b7160e01b600052603260045260246000fd5b808201808211156110c3576110c3611de2565b600060018201611e7f57611e7f611de2565b5060010190565b80516115ea816115ca565b600082601f830112611ea257600080fd5b81516020611eb26117a283611a12565b82815260059290921b84018101918181019086841115611ed157600080fd5b8286015b84811015611a99578051611ee8816115ca565b8352918301918301611ed5565b600082601f830112611f0657600080fd5b81516020611f166117a283611a12565b82815260059290921b84018101918181019086841115611f3557600080fd5b8286015b84811015611a995780518352918301918301611f39565b600082601f830112611f6157600080fd5b8151611f6f6117a28261175c565b818152846020838601011115611f8457600080fd5b611f958260208301602087016118ac565b949350505050565b600082601f830112611fae57600080fd5b81516020611fbe6117a283611a12565b82815260059290921b84018101918181019086841115611fdd57600080fd5b8286015b84811015611a995780516001600160401b038111156120005760008081fd5b61200e8986838b0101611f50565b845250918301918301611fe1565b60006020828403121561202e57600080fd5b81516001600160401b038082111561204557600080fd5b9083019060a0828603121561205957600080fd5b6120616116a4565b82518281111561207057600080fd5b61207c87828601611e91565b82525060208301518281111561209157600080fd5b61209d87828601611ef5565b6020830152506040830151828111156120b557600080fd5b6120c187828601611f9d565b604083015250606083015160608201526080830151828111156120e357600080fd5b6120ef87828601611f50565b60808301525095945050505050565b60006020808352835160a08285015261211a60c0850182611c65565b905081850151601f19808684030160408701526121378383611c9e565b60408801518782038301606089015280518083529194508501925084840190600581901b8501860160005b8281101561218e578487830301845261217c8287516118d0565b95880195938801939150600101612162565b5060608a015160808a015260808a01519650838982030160a08a01526121b481886118d0565b9a9950505050505050505050565b600082601f8301126121d357600080fd5b81516121e16117a282611a12565b808282526020820191508560208460051b870101111561220057600080fd5b602085015b60208460051b8701018110156123275780516001600160401b0381111561222b57600080fd5b8601603f8101881361223c57600080fd5b602081015161224d6117a282611a12565b808282526020820191508a60408460051b860101111561226c57600080fd5b604084015b60408460051b8601018110156123115780516001600160401b0381111561229757600080fd5b60408682018e03603f190112156122ad57600080fd5b6122b56116c6565b868201604001516001600160401b038111156122d057600080fd5b6122e18f604083868c010101611f50565b825250908601606001519061ffff821682146122fc57600080fd5b60208181019290925284529283019201612271565b5086525050602093840193919091019050612205565b5095945050505050565b60006020828403121561234357600080fd5b81516001600160401b038082111561235a57600080fd5b9083019060e0828603121561236e57600080fd5b6123766116e8565b82518281111561238557600080fd5b612391878286016121c2565b8252506123a060208401611e86565b60208201526123b160408401611e86565b6040820152606083015160608201526123cc60808401611e86565b608082015260a083015160a082015260c0830151828111156123ed57600080fd5b6123f987828601611f50565b60c08301525095945050505050565b6020808252825160e0838301528051610100840181905260009291600582811b860161012090810193928501929087019186805b838110156124cb5789870361011f1901855285518051808952908901908989019080861b8a018b01855b828110156124b557601f198c830301845284516040815181855261248c828601826118d0565b91505061ffff8f830151168f85015280935050508c850194508c84019350600181019050612466565b509950505095880195509387019360010161243c565b5050505050508185015191506124e46040850183611828565b604085015191506124f86060850183611828565b606085015160808501526080850151915061251660a0850183611828565b60a085015160c085015260c08501519150601f198482030160e085015261253d81836118d0565b95945050505050565b600060c0828403121561255857600080fd5b61256061170a565b825161256b816115ca565b8152602083015161257b816115ca565b6020820152604083015161258e816115ca565b604082015260608301516125a1816115ca565b60608201526080838101519082015260a0928301519281019290925250919050565b805160ff811681146115ea57600080fd5b600061012082840312156125e757600080fd5b6125ef61167b565b6125f883611e86565b815261260660208401611e86565b602082015261261760408401611e86565b6040820152612628606084016125c3565b6060820152612639608084016125c3565b608082015260a083015160a082015260c083015160c082015260e083015160e082015261010061266a818501611e86565b908201529392505050565b81516001600160a01b039081168252602080840151909116908201526040808301516101208301916126a990840182611828565b5060608301516126be606084018260ff169052565b5060808301516126d3608084018260ff169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151611a0a82850182611828565b8051600f81900b81146115ea57600080fd5b80516115ea816115ef565b6000610120828403121561273557600080fd5b61273d61167b565b61274683611e86565b815261275460208401611e86565b602082015261276560408401611e86565b604082015261277660608401612705565b606082015261278760808401612705565b608082015260a083015160a082015260c083015160c08201526127ac60e08401612717565b60e082015261010061266a818501612717565b81516001600160a01b039081168252602080840151909116908201526040808301516101208301916127f390840182611828565b5060608301516128086060840182600f0b9052565b50608083015161281d6080840182600f0b9052565b5060a083015160a083015260c083015160c083015260e083015161284560e084018215159052565b506101008381015180151584830152611a0a565b600061010080838503121561286d57600080fd5b604051908101906001600160401b038211818310171561288f5761288f611665565b81604052835191506128a0826115ca565b8181526128af60208501611e86565b60208201526128c060408501611e86565b60408201526128d160608501611e86565b60608201526080840151608082015260a084015160a08201526128f660c08501611e86565b60c082015261290760e08501612717565b60e0820152949350505050565b600060c0828403121561292657600080fd5b61292e61170a565b8251612939816115ca565b815260208381015190820152604083015161258e816115ca565b6000610120828403121561296657600080fd5b61296e61167b565b61297783611e86565b815261298560208401611e86565b602082015261299660408401611e86565b60408201526129a760608401611e86565b60608201526080830151608082015260a083015160a08201526129cc60c08401611e86565b60c08201526127ac60e08401612717565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612a1190840182611828565b506060830151612a246060840182611828565b506080830151608083015260a083015160a083015260c0830151612a4b60c0840182611828565b5060e083015161284560e084018215159052565b60008251612a718184602087016118ac565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c366cc2d0cc2d15886886e9c951e826a922ce2bcc930e405fbc55c7081fe9b1b64736f6c63430008110033",
|
|
220
|
+
"bytecode": "0x60a0604052306080523480156200001557600080fd5b50600154600160a81b900460ff16158080156200003d575060018054600160a01b900460ff16105b806200007357506200005a306200015860201b620007611760201c565b15801562000073575060018054600160a01b900460ff16145b620000db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6001805460ff60a01b1916600160a01b179055801562000109576001805460ff60a81b1916600160a81b1790555b801562000151576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000167565b6001600160a01b03163b151590565b608051612c3d6200019f600039600081816102b6015281816102f6015281816104290152818161046901526104e50152612c3d6000f3fe6080604052600436106100765760003560e01c8063078dfbe71461007b5780633659cfe61461009d5780634e71e0c8146100bd5780634f1ef286146100d257806352d1902d146100e55780638129fc1c1461010d5780638da5cb5b14610122578063e30c39781461015a578063e4da6f2e1461017a575b600080fd5b34801561008757600080fd5b5061009b61009636600461169a565b6101a7565b005b3480156100a957600080fd5b5061009b6100b83660046116e5565b6102ac565b3480156100c957600080fd5b5061009b610374565b61009b6100e0366004611876565b61041f565b3480156100f157600080fd5b506100fa6104d8565b6040519081526020015b60405180910390f35b34801561011957600080fd5b5061009b610586565b34801561012e57600080fd5b50600054610142906001600160a01b031681565b6040516001600160a01b039091168152602001610104565b34801561016657600080fd5b50600154610142906001600160a01b031681565b34801561018657600080fd5b5061019a6101953660046118d2565b6106b4565b6040516101049190611999565b6000546001600160a01b031633146101da5760405162461bcd60e51b81526004016101d1906119ac565b60405180910390fd5b811561028b576001600160a01b0383161515806101f45750805b6102385760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016101d1565b600080546040516001600160a01b0380871693921691600080516020612bc183398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102f45760405162461bcd60e51b81526004016101d1906119e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610326610770565b6001600160a01b03161461034c5760405162461bcd60e51b81526004016101d190611a1b565b6103558161078c565b60408051600080825260208201909252610371918391906107b6565b50565b6001546001600160a01b03163381146103cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016101d1565b600080546040516001600160a01b0380851693921691600080516020612bc183398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104675760405162461bcd60e51b81526004016101d1906119e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610499610770565b6001600160a01b0316146104bf5760405162461bcd60e51b81526004016101d190611a1b565b6104c88261078c565b6104d4828260016107b6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105735760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016101d1565b50600080516020612ba183398151915290565b600154600160a81b900460ff16158080156105ac575060018054600160a01b900460ff16105b806105d357506105bb30610761565b1580156105d3575060018054600160a01b900460ff16145b6106365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101d1565b6001805460ff60a01b1916600160a01b1790558015610663576001805460ff60a81b1916600160a81b1790555b61066b610921565b8015610371576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b606060006106c56004828688611a55565b6106ce91611a7f565b905060008080806106e2886004818c611a55565b8101906106ef9190611b9c565b93509350935093506107028383896109a2565b60405191945092508590610720908690869086908690602401611d6b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152955050505050505b9392505050565b6001600160a01b03163b151590565b600080516020612ba1833981519152546001600160a01b031690565b6000546001600160a01b031633146103715760405162461bcd60e51b81526004016101d1906119ac565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107e9576102a783610a72565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610843575060408051601f3d908101601f1916820190925261084091810190611e66565b60015b6108a65760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016101d1565b600080516020612ba183398151915281146109155760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016101d1565b506102a7838383610b0c565b600154600160a81b900460ff1661098e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d1565b600080546001600160a01b03191633179055565b6109aa611600565b60e084015160a0850151606091908481036109cc578686935093505050610a6a565b6020821615610a495760408701515115610a285760405162461bcd60e51b815260206004820152601e60248201527f6b796265723a2063616e2774207363616c652069662074616b6520666565000060448201526064016101d1565b610a33878287610b37565b610a3e878388610c92565b935093505050610a6a565b6000610a56878388610dbf565b9050610a63888388610b37565b9450925050505b935093915050565b610a7b81610761565b610add5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101d1565b600080516020612ba183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610b158361105b565b600082511180610b225750805b156102a757610b31838361109b565b50505050565b610b3f611600565b60c084015183610b4f8483611e95565b610b599190611eac565b60c08601528015801590610b6f575060c0850151155b15610b7c57600160c08601525b60a08501839052604085015151600003610b99578491505061075a565b6000805b866040015151811015610c87576001876040015151610bbc9190611ece565b8103610bf357610bcc8286611ece565b87606001518281518110610be257610be2611ee1565b602002602001018181525050610c4a565b858588606001518381518110610c0b57610c0b611ee1565b6020026020010151610c1d9190611e95565b610c279190611eac565b87606001518281518110610c3d57610c3d611ee1565b6020026020010181815250505b86606001518181518110610c6057610c60611ee1565b602002602001015182610c739190611ef7565b915080610c7f81611f0a565b915050610b9d565b509495945050505050565b6060600084806020019051810190610caa91906120b9565b8051519091506000805b82811015610d9257610cc7600184611ece565b8103610cfe57610cd78287611ece565b84602001518281518110610ced57610ced611ee1565b602002602001018181525050610d55565b868685602001518381518110610d1657610d16611ee1565b6020026020010151610d289190611e95565b610d329190611eac565b84602001518281518110610d4857610d48611ee1565b6020026020010181815250505b83602001518181518110610d6b57610d6b611ee1565b602002602001015182610d7e9190611ef7565b915080610d8a81611f0a565b915050610cb4565b5082604051602001610da4919061219b565b60405160208183030381529060405293505050509392505050565b6060600084806020019051810190610dd791906123ce565b905083838260600151610dea9190611e95565b610df49190611eac565b60608201526000805b82515181101561102f57600083600001518281518110610e1f57610e1f611ee1565b6020026020010151600081518110610e3957610e39611ee1565b6020026020010151905060006008826020015161ffff16901c905060006001866000015151610e689190611ece565b8403610e7b57610e788589611ece565b90505b60ff8216610e9b578251610e9190828b8b6110c9565b908452905061100d565b60ff821660011480610eb0575060ff82166004145b15610ec3578251610e9190828b8b611196565b60011960ff831601610edd578251610e9190828b8b611217565b60021960ff831601610ef7578251610e9190828b8b6110c9565b60041960ff831601610f11578251610e9190828b8b611276565b60051960ff831601610f2b578251610e9190828b8b61133d565b60061960ff831601610f7d5760405162461bcd60e51b815260206004820152601b60248201527a6b796265723a2063616e2774207363616c65206b7962657272667160281b60448201526064016101d1565b60071960ff831601610f97578251610e9190828b8b6113f0565b60081960ff831601610fb1578251610e9190828b8b61144f565b60405162461bcd60e51b815260206004820152602b60248201527f4167677265676174696f6e4578656375746f723a204465782074797065206e6f60448201526a1d081cdd5c1c1bdc9d195960aa1b60648201526084016101d1565b6110178186611ef7565b9450505050808061102790611f0a565b915050610dfd565b508160405160200161104191906124a5565b604051602081830303815290604052925050509392505050565b61106481610a72565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606110c08383604051806060016040528060278152602001612be1602791396114ec565b90505b92915050565b6060600080868060200190518101906110e291906125e3565b905085156110f65760808101869052611117565b848482608001516111079190611e95565b6111119190611eac565b60808201525b80604051602001611174919081516001600160a01b039081168252602080840151821690830152604080840151821690830152606080840151909116908201526080808301519082015260a0918201519181019190915260c00190565b6040516020818303038152906040528160800151925092505094509492505050565b6060600080868060200190518101906111af9190612671565b905085156111c35760a081018690526111e4565b84848260a001516111d49190611e95565b6111de9190611eac565b60a08201525b806040516020016111f59190612712565b6040516020818303038152906040528160a00151925092505094509492505050565b60606000808680602001905181019061123091906127bf565b905085156112445760a08101869052611265565b84848260a001516112559190611e95565b61125f9190611eac565b60a08201525b806040516020016111f5919061285c565b60606000808680602001905181019061128f91906128f6565b905085156112a357608081018690526112c4565b848482608001516112b49190611e95565b6112be9190611eac565b60808201525b80604051602001611174919060006101008201905060018060a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401526080840151608084015260a084015160a08401528060c08501511660c08401525060e0830151151560e083015292915050565b60606000808680602001905181019061135691906129b1565b9050851561136a576080810186905261138b565b8484826080015161137b9190611e95565b6113859190611eac565b60808201525b608081015160405161117491839160200182516001600160a01b03908116825260208085015190830152604080850151821690830152606080850151909116908201526080808401519082015260a0928301519281019290925260c082015260e00190565b60606000808680602001905181019061140991906129f0565b9050851561141d576080810186905261143e565b8484826080015161142e9190611e95565b6114389190611eac565b60808201525b806040516020016111749190612a7a565b6060600080868060200190518101906114689190612afc565b9050851561147c576020810186905261149d565b8484826020015161148d9190611e95565b6114979190611eac565b60208201525b6040805182516001600160a01b03166020808301919091528301518183015290820151151560608201526080016040516020818303038152906040528160200151925092505094509492505050565b60606114f784610761565b6115525760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101d1565b600080856001600160a01b03168560405161156d9190612b64565b600060405180830381855af49150503d80600081146115a8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ad565b606091505b50915091506115bd8282866115c7565b9695505050505050565b606083156115d657508161075a565b8251156115e65782518084602001fd5b8160405162461bcd60e51b81526004016101d19190611999565b60405180610120016040528060006001600160a01b0316815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b6001600160a01b038116811461037157600080fd5b803561168781611667565b919050565b801515811461037157600080fd5b6000806000606084860312156116af57600080fd5b83356116ba81611667565b925060208401356116ca8161168c565b915060408401356116da8161168c565b809150509250925092565b6000602082840312156116f757600080fd5b813561075a81611667565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561173b5761173b611702565b60405290565b60405160a081016001600160401b038111828210171561173b5761173b611702565b604080519081016001600160401b038111828210171561173b5761173b611702565b60405160e081016001600160401b038111828210171561173b5761173b611702565b60405160c081016001600160401b038111828210171561173b5761173b611702565b604051601f8201601f191681016001600160401b03811182821017156117f1576117f1611702565b604052919050565b60006001600160401b0382111561181257611812611702565b50601f01601f191660200190565b600082601f83011261183157600080fd5b813561184461183f826117f9565b6117c9565b81815284602083860101111561185957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561188957600080fd5b823561189481611667565b915060208301356001600160401b038111156118af57600080fd5b6118bb85828601611820565b9150509250929050565b6001600160a01b03169052565b6000806000604084860312156118e757600080fd5b83356001600160401b03808211156118fe57600080fd5b818601915086601f83011261191257600080fd5b81358181111561192157600080fd5b87602082850101111561193357600080fd5b6020928301989097509590910135949350505050565b60005b8381101561196457818101518382015260200161194c565b50506000910152565b60008151808452611985816020860160208601611949565b601f01601f19169290920160200192915050565b6020815260006110c0602083018461196d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c90820152600080516020612b8183398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612b8183398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60008085851115611a6557600080fd5b83861115611a7257600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611aa75780818660040360031b1b83161692505b505092915050565b60006001600160401b03821115611ac857611ac8611702565b5060051b60200190565b600082601f830112611ae357600080fd5b81356020611af361183f83611aaf565b82815260059290921b84018101918181019086841115611b1257600080fd5b8286015b84811015611b36578035611b2981611667565b8352918301918301611b16565b509695505050505050565b600082601f830112611b5257600080fd5b81356020611b6261183f83611aaf565b82815260059290921b84018101918181019086841115611b8157600080fd5b8286015b84811015611b365780358352918301918301611b85565b60008060008060808587031215611bb257600080fd5b8435611bbd81611667565b935060208501356001600160401b0380821115611bd957600080fd5b908601906101208289031215611bee57600080fd5b611bf6611718565b611bff8361167c565b8152611c0d6020840161167c565b6020820152604083013582811115611c2457600080fd5b611c308a828601611ad2565b604083015250606083013582811115611c4857600080fd5b611c548a828601611b41565b606083015250611c666080840161167c565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013583811115611c9d57600080fd5b611ca98b828701611820565b828401525050809550506040870135915080821115611cc757600080fd5b611cd388838901611820565b93506060870135915080821115611ce957600080fd5b50611cf687828801611820565b91505092959194509250565b600081518084526020808501945080840160005b83811015610c875781516001600160a01b031687529582019590820190600101611d16565b600081518084526020808501945080840160005b83811015610c8757815187529582019590820190600101611d4f565b6001600160a01b03851681526080602082018190528451611d8e918301906118c5565b60006020850151611da260a08401826118c5565b5060408501516101208060c0850152611dbf6101a0850183611d02565b91506060870151607f19808685030160e0870152611ddd8483611d3b565b935060808901519150610100611df5818801846118c5565b60a08a01518488015260c08a015161014088015260e08a0151610160880152808a015193505080868503016101808701525050611e32828261196d565b9150508281036040840152611e47818661196d565b90508281036060840152611e5b818561196d565b979650505050505050565b600060208284031215611e7857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176110c3576110c3611e7f565b600082611ec957634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156110c3576110c3611e7f565b634e487b7160e01b600052603260045260246000fd5b808201808211156110c3576110c3611e7f565b600060018201611f1c57611f1c611e7f565b5060010190565b805161168781611667565b600082601f830112611f3f57600080fd5b81516020611f4f61183f83611aaf565b82815260059290921b84018101918181019086841115611f6e57600080fd5b8286015b84811015611b36578051611f8581611667565b8352918301918301611f72565b600082601f830112611fa357600080fd5b81516020611fb361183f83611aaf565b82815260059290921b84018101918181019086841115611fd257600080fd5b8286015b84811015611b365780518352918301918301611fd6565b600082601f830112611ffe57600080fd5b815161200c61183f826117f9565b81815284602083860101111561202157600080fd5b612032826020830160208701611949565b949350505050565b600082601f83011261204b57600080fd5b8151602061205b61183f83611aaf565b82815260059290921b8401810191818101908684111561207a57600080fd5b8286015b84811015611b365780516001600160401b0381111561209d5760008081fd5b6120ab8986838b0101611fed565b84525091830191830161207e565b6000602082840312156120cb57600080fd5b81516001600160401b03808211156120e257600080fd5b9083019060a082860312156120f657600080fd5b6120fe611741565b82518281111561210d57600080fd5b61211987828601611f2e565b82525060208301518281111561212e57600080fd5b61213a87828601611f92565b60208301525060408301518281111561215257600080fd5b61215e8782860161203a565b6040830152506060830151606082015260808301518281111561218057600080fd5b61218c87828601611fed565b60808301525095945050505050565b60006020808352835160a0828501526121b760c0850182611d02565b905081850151601f19808684030160408701526121d48383611d3b565b60408801518782038301606089015280518083529194508501925084840190600581901b8501860160005b8281101561222b578487830301845261221982875161196d565b958801959388019391506001016121ff565b5060608a015160808a015260808a01519650838982030160a08a0152612251818861196d565b9a9950505050505050505050565b600082601f83011261227057600080fd5b815161227e61183f82611aaf565b808282526020820191508560208460051b870101111561229d57600080fd5b602085015b60208460051b8701018110156123c45780516001600160401b038111156122c857600080fd5b8601603f810188136122d957600080fd5b60208101516122ea61183f82611aaf565b808282526020820191508a60408460051b860101111561230957600080fd5b604084015b60408460051b8601018110156123ae5780516001600160401b0381111561233457600080fd5b60408682018e03603f1901121561234a57600080fd5b612352611763565b868201604001516001600160401b0381111561236d57600080fd5b61237e8f604083868c010101611fed565b825250908601606001519061ffff8216821461239957600080fd5b6020818101929092528452928301920161230e565b50865250506020938401939190910190506122a2565b5095945050505050565b6000602082840312156123e057600080fd5b81516001600160401b03808211156123f757600080fd5b9083019060e0828603121561240b57600080fd5b612413611785565b82518281111561242257600080fd5b61242e8782860161225f565b82525061243d60208401611f23565b602082015261244e60408401611f23565b60408201526060830151606082015261246960808401611f23565b608082015260a083015160a082015260c08301518281111561248a57600080fd5b61249687828601611fed565b60c08301525095945050505050565b6020808252825160e0838301528051610100840181905260009291600582811b860161012090810193928501929087019186805b838110156125685789870361011f1901855285518051808952908901908989019080861b8a018b01855b8281101561255257601f198c83030184528451604081518185526125298286018261196d565b91505061ffff8f830151168f85015280935050508c850194508c84019350600181019050612503565b50995050509588019550938701936001016124d9565b50505050505081850151915061258160408501836118c5565b6040850151915061259560608501836118c5565b60608501516080850152608085015191506125b360a08501836118c5565b60a085015160c085015260c08501519150601f198482030160e08501526125da818361196d565b95945050505050565b600060c082840312156125f557600080fd5b6125fd6117a7565b825161260881611667565b8152602083015161261881611667565b6020820152604083015161262b81611667565b6040820152606083015161263e81611667565b60608201526080838101519082015260a0928301519281019290925250919050565b805160ff8116811461168757600080fd5b6000610120828403121561268457600080fd5b61268c611718565b61269583611f23565b81526126a360208401611f23565b60208201526126b460408401611f23565b60408201526126c560608401612660565b60608201526126d660808401612660565b608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100612707818501611f23565b908201529392505050565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612746908401826118c5565b50606083015161275b606084018260ff169052565b506080830151612770608084018260ff169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151611aa7828501826118c5565b8051600f81900b811461168757600080fd5b80516116878161168c565b600061012082840312156127d257600080fd5b6127da611718565b6127e383611f23565b81526127f160208401611f23565b602082015261280260408401611f23565b6040820152612813606084016127a2565b6060820152612824608084016127a2565b608082015260a083015160a082015260c083015160c082015261284960e084016127b4565b60e08201526101006127078185016127b4565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612890908401826118c5565b5060608301516128a56060840182600f0b9052565b5060808301516128ba6080840182600f0b9052565b5060a083015160a083015260c083015160c083015260e08301516128e260e084018215159052565b506101008381015180151584830152611aa7565b600061010080838503121561290a57600080fd5b604051908101906001600160401b038211818310171561292c5761292c611702565b816040528351915061293d82611667565b81815261294c60208501611f23565b602082015261295d60408501611f23565b604082015261296e60608501611f23565b60608201526080840151608082015260a084015160a082015261299360c08501611f23565b60c08201526129a460e085016127b4565b60e0820152949350505050565b600060c082840312156129c357600080fd5b6129cb6117a7565b82516129d681611667565b815260208381015190820152604083015161262b81611667565b60006101208284031215612a0357600080fd5b612a0b611718565b612a1483611f23565b8152612a2260208401611f23565b6020820152612a3360408401611f23565b6040820152612a4460608401611f23565b60608201526080830151608082015260a083015160a0820152612a6960c08401611f23565b60c082015261284960e084016127b4565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612aae908401826118c5565b506060830151612ac160608401826118c5565b506080830151608083015260a083015160a083015260c0830151612ae860c08401826118c5565b5060e08301516128e260e084018215159052565b600060608284031215612b0e57600080fd5b604051606081016001600160401b0381118282101715612b3057612b30611702565b6040528251612b3e81611667565b8152602083810151908201526040830151612b588161168c565b60408201529392505050565b60008251612b76818460208701611949565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203dbbc11c48661eab201e9ea21a33f9de638628c22bb8e04a38138aa9ba2f2a4764736f6c63430008110033",
|
|
221
|
+
"deployedBytecode": "0x6080604052600436106100765760003560e01c8063078dfbe71461007b5780633659cfe61461009d5780634e71e0c8146100bd5780634f1ef286146100d257806352d1902d146100e55780638129fc1c1461010d5780638da5cb5b14610122578063e30c39781461015a578063e4da6f2e1461017a575b600080fd5b34801561008757600080fd5b5061009b61009636600461169a565b6101a7565b005b3480156100a957600080fd5b5061009b6100b83660046116e5565b6102ac565b3480156100c957600080fd5b5061009b610374565b61009b6100e0366004611876565b61041f565b3480156100f157600080fd5b506100fa6104d8565b6040519081526020015b60405180910390f35b34801561011957600080fd5b5061009b610586565b34801561012e57600080fd5b50600054610142906001600160a01b031681565b6040516001600160a01b039091168152602001610104565b34801561016657600080fd5b50600154610142906001600160a01b031681565b34801561018657600080fd5b5061019a6101953660046118d2565b6106b4565b6040516101049190611999565b6000546001600160a01b031633146101da5760405162461bcd60e51b81526004016101d1906119ac565b60405180910390fd5b811561028b576001600160a01b0383161515806101f45750805b6102385760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b60448201526064016101d1565b600080546040516001600160a01b0380871693921691600080516020612bc183398151915291a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055505050565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036102f45760405162461bcd60e51b81526004016101d1906119e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610326610770565b6001600160a01b03161461034c5760405162461bcd60e51b81526004016101d190611a1b565b6103558161078c565b60408051600080825260208201909252610371918391906107b6565b50565b6001546001600160a01b03163381146103cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e657260448201526064016101d1565b600080546040516001600160a01b0380851693921691600080516020612bc183398151915291a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104675760405162461bcd60e51b81526004016101d1906119e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610499610770565b6001600160a01b0316146104bf5760405162461bcd60e51b81526004016101d190611a1b565b6104c88261078c565b6104d4828260016107b6565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105735760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016101d1565b50600080516020612ba183398151915290565b600154600160a81b900460ff16158080156105ac575060018054600160a01b900460ff16105b806105d357506105bb30610761565b1580156105d3575060018054600160a01b900460ff16145b6106365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101d1565b6001805460ff60a01b1916600160a01b1790558015610663576001805460ff60a81b1916600160a81b1790555b61066b610921565b8015610371576001805460ff60a81b191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b606060006106c56004828688611a55565b6106ce91611a7f565b905060008080806106e2886004818c611a55565b8101906106ef9190611b9c565b93509350935093506107028383896109a2565b60405191945092508590610720908690869086908690602401611d6b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152955050505050505b9392505050565b6001600160a01b03163b151590565b600080516020612ba1833981519152546001600160a01b031690565b6000546001600160a01b031633146103715760405162461bcd60e51b81526004016101d1906119ac565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156107e9576102a783610a72565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610843575060408051601f3d908101601f1916820190925261084091810190611e66565b60015b6108a65760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016101d1565b600080516020612ba183398151915281146109155760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016101d1565b506102a7838383610b0c565b600154600160a81b900460ff1661098e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016101d1565b600080546001600160a01b03191633179055565b6109aa611600565b60e084015160a0850151606091908481036109cc578686935093505050610a6a565b6020821615610a495760408701515115610a285760405162461bcd60e51b815260206004820152601e60248201527f6b796265723a2063616e2774207363616c652069662074616b6520666565000060448201526064016101d1565b610a33878287610b37565b610a3e878388610c92565b935093505050610a6a565b6000610a56878388610dbf565b9050610a63888388610b37565b9450925050505b935093915050565b610a7b81610761565b610add5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101d1565b600080516020612ba183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610b158361105b565b600082511180610b225750805b156102a757610b31838361109b565b50505050565b610b3f611600565b60c084015183610b4f8483611e95565b610b599190611eac565b60c08601528015801590610b6f575060c0850151155b15610b7c57600160c08601525b60a08501839052604085015151600003610b99578491505061075a565b6000805b866040015151811015610c87576001876040015151610bbc9190611ece565b8103610bf357610bcc8286611ece565b87606001518281518110610be257610be2611ee1565b602002602001018181525050610c4a565b858588606001518381518110610c0b57610c0b611ee1565b6020026020010151610c1d9190611e95565b610c279190611eac565b87606001518281518110610c3d57610c3d611ee1565b6020026020010181815250505b86606001518181518110610c6057610c60611ee1565b602002602001015182610c739190611ef7565b915080610c7f81611f0a565b915050610b9d565b509495945050505050565b6060600084806020019051810190610caa91906120b9565b8051519091506000805b82811015610d9257610cc7600184611ece565b8103610cfe57610cd78287611ece565b84602001518281518110610ced57610ced611ee1565b602002602001018181525050610d55565b868685602001518381518110610d1657610d16611ee1565b6020026020010151610d289190611e95565b610d329190611eac565b84602001518281518110610d4857610d48611ee1565b6020026020010181815250505b83602001518181518110610d6b57610d6b611ee1565b602002602001015182610d7e9190611ef7565b915080610d8a81611f0a565b915050610cb4565b5082604051602001610da4919061219b565b60405160208183030381529060405293505050509392505050565b6060600084806020019051810190610dd791906123ce565b905083838260600151610dea9190611e95565b610df49190611eac565b60608201526000805b82515181101561102f57600083600001518281518110610e1f57610e1f611ee1565b6020026020010151600081518110610e3957610e39611ee1565b6020026020010151905060006008826020015161ffff16901c905060006001866000015151610e689190611ece565b8403610e7b57610e788589611ece565b90505b60ff8216610e9b578251610e9190828b8b6110c9565b908452905061100d565b60ff821660011480610eb0575060ff82166004145b15610ec3578251610e9190828b8b611196565b60011960ff831601610edd578251610e9190828b8b611217565b60021960ff831601610ef7578251610e9190828b8b6110c9565b60041960ff831601610f11578251610e9190828b8b611276565b60051960ff831601610f2b578251610e9190828b8b61133d565b60061960ff831601610f7d5760405162461bcd60e51b815260206004820152601b60248201527a6b796265723a2063616e2774207363616c65206b7962657272667160281b60448201526064016101d1565b60071960ff831601610f97578251610e9190828b8b6113f0565b60081960ff831601610fb1578251610e9190828b8b61144f565b60405162461bcd60e51b815260206004820152602b60248201527f4167677265676174696f6e4578656375746f723a204465782074797065206e6f60448201526a1d081cdd5c1c1bdc9d195960aa1b60648201526084016101d1565b6110178186611ef7565b9450505050808061102790611f0a565b915050610dfd565b508160405160200161104191906124a5565b604051602081830303815290604052925050509392505050565b61106481610a72565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606110c08383604051806060016040528060278152602001612be1602791396114ec565b90505b92915050565b6060600080868060200190518101906110e291906125e3565b905085156110f65760808101869052611117565b848482608001516111079190611e95565b6111119190611eac565b60808201525b80604051602001611174919081516001600160a01b039081168252602080840151821690830152604080840151821690830152606080840151909116908201526080808301519082015260a0918201519181019190915260c00190565b6040516020818303038152906040528160800151925092505094509492505050565b6060600080868060200190518101906111af9190612671565b905085156111c35760a081018690526111e4565b84848260a001516111d49190611e95565b6111de9190611eac565b60a08201525b806040516020016111f59190612712565b6040516020818303038152906040528160a00151925092505094509492505050565b60606000808680602001905181019061123091906127bf565b905085156112445760a08101869052611265565b84848260a001516112559190611e95565b61125f9190611eac565b60a08201525b806040516020016111f5919061285c565b60606000808680602001905181019061128f91906128f6565b905085156112a357608081018690526112c4565b848482608001516112b49190611e95565b6112be9190611eac565b60808201525b80604051602001611174919060006101008201905060018060a01b038084511683528060208501511660208401528060408501511660408401528060608501511660608401526080840151608084015260a084015160a08401528060c08501511660c08401525060e0830151151560e083015292915050565b60606000808680602001905181019061135691906129b1565b9050851561136a576080810186905261138b565b8484826080015161137b9190611e95565b6113859190611eac565b60808201525b608081015160405161117491839160200182516001600160a01b03908116825260208085015190830152604080850151821690830152606080850151909116908201526080808401519082015260a0928301519281019290925260c082015260e00190565b60606000808680602001905181019061140991906129f0565b9050851561141d576080810186905261143e565b8484826080015161142e9190611e95565b6114389190611eac565b60808201525b806040516020016111749190612a7a565b6060600080868060200190518101906114689190612afc565b9050851561147c576020810186905261149d565b8484826020015161148d9190611e95565b6114979190611eac565b60208201525b6040805182516001600160a01b03166020808301919091528301518183015290820151151560608201526080016040516020818303038152906040528160200151925092505094509492505050565b60606114f784610761565b6115525760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101d1565b600080856001600160a01b03168560405161156d9190612b64565b600060405180830381855af49150503d80600081146115a8576040519150601f19603f3d011682016040523d82523d6000602084013e6115ad565b606091505b50915091506115bd8282866115c7565b9695505050505050565b606083156115d657508161075a565b8251156115e65782518084602001fd5b8160405162461bcd60e51b81526004016101d19190611999565b60405180610120016040528060006001600160a01b0316815260200160006001600160a01b03168152602001606081526020016060815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001606081525090565b6001600160a01b038116811461037157600080fd5b803561168781611667565b919050565b801515811461037157600080fd5b6000806000606084860312156116af57600080fd5b83356116ba81611667565b925060208401356116ca8161168c565b915060408401356116da8161168c565b809150509250925092565b6000602082840312156116f757600080fd5b813561075a81611667565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561173b5761173b611702565b60405290565b60405160a081016001600160401b038111828210171561173b5761173b611702565b604080519081016001600160401b038111828210171561173b5761173b611702565b60405160e081016001600160401b038111828210171561173b5761173b611702565b60405160c081016001600160401b038111828210171561173b5761173b611702565b604051601f8201601f191681016001600160401b03811182821017156117f1576117f1611702565b604052919050565b60006001600160401b0382111561181257611812611702565b50601f01601f191660200190565b600082601f83011261183157600080fd5b813561184461183f826117f9565b6117c9565b81815284602083860101111561185957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561188957600080fd5b823561189481611667565b915060208301356001600160401b038111156118af57600080fd5b6118bb85828601611820565b9150509250929050565b6001600160a01b03169052565b6000806000604084860312156118e757600080fd5b83356001600160401b03808211156118fe57600080fd5b818601915086601f83011261191257600080fd5b81358181111561192157600080fd5b87602082850101111561193357600080fd5b6020928301989097509590910135949350505050565b60005b8381101561196457818101518382015260200161194c565b50506000910152565b60008151808452611985816020860160208601611949565b601f01601f19169290920160200192915050565b6020815260006110c0602083018461196d565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c90820152600080516020612b8183398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612b8183398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60008085851115611a6557600080fd5b83861115611a7257600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611aa75780818660040360031b1b83161692505b505092915050565b60006001600160401b03821115611ac857611ac8611702565b5060051b60200190565b600082601f830112611ae357600080fd5b81356020611af361183f83611aaf565b82815260059290921b84018101918181019086841115611b1257600080fd5b8286015b84811015611b36578035611b2981611667565b8352918301918301611b16565b509695505050505050565b600082601f830112611b5257600080fd5b81356020611b6261183f83611aaf565b82815260059290921b84018101918181019086841115611b8157600080fd5b8286015b84811015611b365780358352918301918301611b85565b60008060008060808587031215611bb257600080fd5b8435611bbd81611667565b935060208501356001600160401b0380821115611bd957600080fd5b908601906101208289031215611bee57600080fd5b611bf6611718565b611bff8361167c565b8152611c0d6020840161167c565b6020820152604083013582811115611c2457600080fd5b611c308a828601611ad2565b604083015250606083013582811115611c4857600080fd5b611c548a828601611b41565b606083015250611c666080840161167c565b608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013583811115611c9d57600080fd5b611ca98b828701611820565b828401525050809550506040870135915080821115611cc757600080fd5b611cd388838901611820565b93506060870135915080821115611ce957600080fd5b50611cf687828801611820565b91505092959194509250565b600081518084526020808501945080840160005b83811015610c875781516001600160a01b031687529582019590820190600101611d16565b600081518084526020808501945080840160005b83811015610c8757815187529582019590820190600101611d4f565b6001600160a01b03851681526080602082018190528451611d8e918301906118c5565b60006020850151611da260a08401826118c5565b5060408501516101208060c0850152611dbf6101a0850183611d02565b91506060870151607f19808685030160e0870152611ddd8483611d3b565b935060808901519150610100611df5818801846118c5565b60a08a01518488015260c08a015161014088015260e08a0151610160880152808a015193505080868503016101808701525050611e32828261196d565b9150508281036040840152611e47818661196d565b90508281036060840152611e5b818561196d565b979650505050505050565b600060208284031215611e7857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176110c3576110c3611e7f565b600082611ec957634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156110c3576110c3611e7f565b634e487b7160e01b600052603260045260246000fd5b808201808211156110c3576110c3611e7f565b600060018201611f1c57611f1c611e7f565b5060010190565b805161168781611667565b600082601f830112611f3f57600080fd5b81516020611f4f61183f83611aaf565b82815260059290921b84018101918181019086841115611f6e57600080fd5b8286015b84811015611b36578051611f8581611667565b8352918301918301611f72565b600082601f830112611fa357600080fd5b81516020611fb361183f83611aaf565b82815260059290921b84018101918181019086841115611fd257600080fd5b8286015b84811015611b365780518352918301918301611fd6565b600082601f830112611ffe57600080fd5b815161200c61183f826117f9565b81815284602083860101111561202157600080fd5b612032826020830160208701611949565b949350505050565b600082601f83011261204b57600080fd5b8151602061205b61183f83611aaf565b82815260059290921b8401810191818101908684111561207a57600080fd5b8286015b84811015611b365780516001600160401b0381111561209d5760008081fd5b6120ab8986838b0101611fed565b84525091830191830161207e565b6000602082840312156120cb57600080fd5b81516001600160401b03808211156120e257600080fd5b9083019060a082860312156120f657600080fd5b6120fe611741565b82518281111561210d57600080fd5b61211987828601611f2e565b82525060208301518281111561212e57600080fd5b61213a87828601611f92565b60208301525060408301518281111561215257600080fd5b61215e8782860161203a565b6040830152506060830151606082015260808301518281111561218057600080fd5b61218c87828601611fed565b60808301525095945050505050565b60006020808352835160a0828501526121b760c0850182611d02565b905081850151601f19808684030160408701526121d48383611d3b565b60408801518782038301606089015280518083529194508501925084840190600581901b8501860160005b8281101561222b578487830301845261221982875161196d565b958801959388019391506001016121ff565b5060608a015160808a015260808a01519650838982030160a08a0152612251818861196d565b9a9950505050505050505050565b600082601f83011261227057600080fd5b815161227e61183f82611aaf565b808282526020820191508560208460051b870101111561229d57600080fd5b602085015b60208460051b8701018110156123c45780516001600160401b038111156122c857600080fd5b8601603f810188136122d957600080fd5b60208101516122ea61183f82611aaf565b808282526020820191508a60408460051b860101111561230957600080fd5b604084015b60408460051b8601018110156123ae5780516001600160401b0381111561233457600080fd5b60408682018e03603f1901121561234a57600080fd5b612352611763565b868201604001516001600160401b0381111561236d57600080fd5b61237e8f604083868c010101611fed565b825250908601606001519061ffff8216821461239957600080fd5b6020818101929092528452928301920161230e565b50865250506020938401939190910190506122a2565b5095945050505050565b6000602082840312156123e057600080fd5b81516001600160401b03808211156123f757600080fd5b9083019060e0828603121561240b57600080fd5b612413611785565b82518281111561242257600080fd5b61242e8782860161225f565b82525061243d60208401611f23565b602082015261244e60408401611f23565b60408201526060830151606082015261246960808401611f23565b608082015260a083015160a082015260c08301518281111561248a57600080fd5b61249687828601611fed565b60c08301525095945050505050565b6020808252825160e0838301528051610100840181905260009291600582811b860161012090810193928501929087019186805b838110156125685789870361011f1901855285518051808952908901908989019080861b8a018b01855b8281101561255257601f198c83030184528451604081518185526125298286018261196d565b91505061ffff8f830151168f85015280935050508c850194508c84019350600181019050612503565b50995050509588019550938701936001016124d9565b50505050505081850151915061258160408501836118c5565b6040850151915061259560608501836118c5565b60608501516080850152608085015191506125b360a08501836118c5565b60a085015160c085015260c08501519150601f198482030160e08501526125da818361196d565b95945050505050565b600060c082840312156125f557600080fd5b6125fd6117a7565b825161260881611667565b8152602083015161261881611667565b6020820152604083015161262b81611667565b6040820152606083015161263e81611667565b60608201526080838101519082015260a0928301519281019290925250919050565b805160ff8116811461168757600080fd5b6000610120828403121561268457600080fd5b61268c611718565b61269583611f23565b81526126a360208401611f23565b60208201526126b460408401611f23565b60408201526126c560608401612660565b60608201526126d660808401612660565b608082015260a083015160a082015260c083015160c082015260e083015160e0820152610100612707818501611f23565b908201529392505050565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612746908401826118c5565b50606083015161275b606084018260ff169052565b506080830151612770608084018260ff169052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151611aa7828501826118c5565b8051600f81900b811461168757600080fd5b80516116878161168c565b600061012082840312156127d257600080fd5b6127da611718565b6127e383611f23565b81526127f160208401611f23565b602082015261280260408401611f23565b6040820152612813606084016127a2565b6060820152612824608084016127a2565b608082015260a083015160a082015260c083015160c082015261284960e084016127b4565b60e08201526101006127078185016127b4565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612890908401826118c5565b5060608301516128a56060840182600f0b9052565b5060808301516128ba6080840182600f0b9052565b5060a083015160a083015260c083015160c083015260e08301516128e260e084018215159052565b506101008381015180151584830152611aa7565b600061010080838503121561290a57600080fd5b604051908101906001600160401b038211818310171561292c5761292c611702565b816040528351915061293d82611667565b81815261294c60208501611f23565b602082015261295d60408501611f23565b604082015261296e60608501611f23565b60608201526080840151608082015260a084015160a082015261299360c08501611f23565b60c08201526129a460e085016127b4565b60e0820152949350505050565b600060c082840312156129c357600080fd5b6129cb6117a7565b82516129d681611667565b815260208381015190820152604083015161262b81611667565b60006101208284031215612a0357600080fd5b612a0b611718565b612a1483611f23565b8152612a2260208401611f23565b6020820152612a3360408401611f23565b6040820152612a4460608401611f23565b60608201526080830151608082015260a083015160a0820152612a6960c08401611f23565b60c082015261284960e084016127b4565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191612aae908401826118c5565b506060830151612ac160608401826118c5565b506080830151608083015260a083015160a083015260c0830151612ae860c08401826118c5565b5060e08301516128e260e084018215159052565b600060608284031215612b0e57600080fd5b604051606081016001600160401b0381118282101715612b3057612b30611702565b6040528251612b3e81611667565b8152602083810151908201526040830151612b588161168c565b60408201529392505050565b60008251612b76818460208701611949565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203dbbc11c48661eab201e9ea21a33f9de638628c22bb8e04a38138aa9ba2f2a4764736f6c63430008110033",
|
|
222
222
|
"linkReferences": {},
|
|
223
223
|
"deployedLinkReferences": {}
|
|
224
224
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_format": "hh-sol-artifact-1",
|
|
3
|
-
"contractName": "
|
|
4
|
-
"sourceName": "contracts/router/kyberswap/
|
|
3
|
+
"contractName": "IMultihopRouterEthereum",
|
|
4
|
+
"sourceName": "contracts/router/kyberswap/IMultihopRouterEthereum.sol",
|
|
5
5
|
"abi": [
|
|
6
6
|
{
|
|
7
7
|
"anonymous": false,
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"type": "uint16"
|
|
83
83
|
}
|
|
84
84
|
],
|
|
85
|
-
"internalType": "struct
|
|
85
|
+
"internalType": "struct IMultihopRouterEthereum.Swap[][]",
|
|
86
86
|
"name": "swapSequences",
|
|
87
87
|
"type": "tuple[][]"
|
|
88
88
|
},
|
|
@@ -83,7 +83,7 @@ contract BulkSeller is IPBulkSeller, Initializable, TokenHelper, ReentrancyGuard
|
|
|
83
83
|
else {
|
|
84
84
|
uint256 netSyReceived = _selfBalance(SY) - state.totalSy;
|
|
85
85
|
if (netSyReceived < exactSyIn)
|
|
86
|
-
revert Errors.BulkInsufficientSyReceived(
|
|
86
|
+
revert Errors.BulkInsufficientSyReceived(netSyReceived, exactSyIn);
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
netTokenOut = state.swapExactSyForToken(exactSyIn);
|
package/contracts/core/StandardizedYield/implementations/Ape/{PendleApeStakingSY.sol → sAPE.sol}
RENAMED
|
@@ -4,12 +4,13 @@ pragma solidity 0.8.17;
|
|
|
4
4
|
import "../../SYBase.sol";
|
|
5
5
|
import "../../../../interfaces/IApeStaking.sol";
|
|
6
6
|
|
|
7
|
-
contract
|
|
7
|
+
contract sAPE is SYBase {
|
|
8
8
|
using Math for uint256;
|
|
9
9
|
|
|
10
10
|
uint256 public constant APE_COIN_POOL_ID = 0;
|
|
11
11
|
uint256 public constant MIN_APE_DEPOSIT = 10**18;
|
|
12
12
|
uint256 public constant EPOCH_LENGTH = 1 hours;
|
|
13
|
+
uint256 private constant MINIMUM_LIQUIDITY = 1e9;
|
|
13
14
|
|
|
14
15
|
address public immutable apeStaking;
|
|
15
16
|
address public immutable apeCoin;
|
|
@@ -21,22 +22,33 @@ contract PendleApeStakingSY is SYBase {
|
|
|
21
22
|
string memory _symbol,
|
|
22
23
|
address _apeCoin,
|
|
23
24
|
address _apeStaking
|
|
24
|
-
)
|
|
25
|
-
SYBase(_name, _symbol, _apeCoin)
|
|
26
|
-
{
|
|
25
|
+
) SYBase(_name, _symbol, _apeCoin) {
|
|
27
26
|
apeStaking = _apeStaking;
|
|
28
27
|
apeCoin = _apeCoin;
|
|
29
28
|
lastRewardClaimedEpoch = _getCurrentEpochId();
|
|
30
29
|
_safeApproveInf(apeCoin, apeStaking);
|
|
31
30
|
}
|
|
32
31
|
|
|
32
|
+
function wrap(uint256 amountTokenIn) external {
|
|
33
|
+
_transferIn(apeCoin, msg.sender, amountTokenIn);
|
|
34
|
+
uint256 amountSharesOut = _deposit(apeCoin, amountTokenIn);
|
|
35
|
+
_mint(msg.sender, amountSharesOut);
|
|
36
|
+
emit Deposit(msg.sender, msg.sender, apeCoin, amountTokenIn, amountSharesOut);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function unwrap(uint256 amountShares) external {
|
|
40
|
+
_burn(msg.sender, amountShares);
|
|
41
|
+
uint256 amountTokenOut = _redeem(msg.sender, apeCoin, amountShares);
|
|
42
|
+
emit Redeem(msg.sender, msg.sender, apeCoin, amountShares, amountTokenOut);
|
|
43
|
+
}
|
|
44
|
+
|
|
33
45
|
function _deposit(address, uint256 amountDeposited)
|
|
34
46
|
internal
|
|
35
47
|
virtual
|
|
36
48
|
override
|
|
37
49
|
returns (uint256 amountSharesOut)
|
|
38
50
|
{
|
|
39
|
-
// Respecting APE's deposit invariant
|
|
51
|
+
// Respecting APE's deposit invariant
|
|
40
52
|
if (amountDeposited < MIN_APE_DEPOSIT) {
|
|
41
53
|
revert Errors.SYApeDepositAmountTooSmall(amountDeposited);
|
|
42
54
|
}
|
|
@@ -44,13 +56,11 @@ contract PendleApeStakingSY is SYBase {
|
|
|
44
56
|
_harvestAndCompound();
|
|
45
57
|
|
|
46
58
|
// As SY Base is pulling the tokenIn first, the totalAsset should exclude user's deposit
|
|
47
|
-
uint256 priorTotalAssetOwned = getTotalAssetOwned() - amountDeposited;
|
|
48
|
-
|
|
49
59
|
if (totalSupply() == 0) {
|
|
50
|
-
amountSharesOut = amountDeposited;
|
|
60
|
+
amountSharesOut = amountDeposited - MINIMUM_LIQUIDITY;
|
|
61
|
+
_mint(address(1), MINIMUM_LIQUIDITY);
|
|
51
62
|
} else {
|
|
52
|
-
|
|
53
|
-
// The following calculation is choosen instead to minimize precision error
|
|
63
|
+
uint256 priorTotalAssetOwned = getTotalAssetOwned() - amountDeposited;
|
|
54
64
|
amountSharesOut = (amountDeposited * totalSupply()) / priorTotalAssetOwned;
|
|
55
65
|
}
|
|
56
66
|
}
|
|
@@ -60,7 +70,7 @@ contract PendleApeStakingSY is SYBase {
|
|
|
60
70
|
address,
|
|
61
71
|
uint256 amountSharesToRedeem
|
|
62
72
|
) internal virtual override returns (uint256 amountTokenOut) {
|
|
63
|
-
|
|
73
|
+
_harvest();
|
|
64
74
|
|
|
65
75
|
// As SY is burned before calling _redeem(), we should account for priorSupply
|
|
66
76
|
uint256 priorTotalSupply = totalSupply() + amountSharesToRedeem;
|
|
@@ -68,8 +78,6 @@ contract PendleApeStakingSY is SYBase {
|
|
|
68
78
|
if (amountSharesToRedeem == priorTotalSupply) {
|
|
69
79
|
amountTokenOut = getTotalAssetOwned();
|
|
70
80
|
} else {
|
|
71
|
-
// The upcoming calculation can be reduced to amountSharesToRedeem.mulDown(exchangeRate())
|
|
72
|
-
// The following calculation is choosen instead to minimize precision error
|
|
73
81
|
amountTokenOut = (amountSharesToRedeem * getTotalAssetOwned()) / priorTotalSupply;
|
|
74
82
|
}
|
|
75
83
|
|
|
@@ -81,9 +89,11 @@ contract PendleApeStakingSY is SYBase {
|
|
|
81
89
|
);
|
|
82
90
|
}
|
|
83
91
|
_transferOut(apeCoin, receiver, amountTokenOut);
|
|
92
|
+
_compound();
|
|
84
93
|
}
|
|
85
94
|
|
|
86
95
|
function exchangeRate() public view virtual override returns (uint256) {
|
|
96
|
+
// This function is intentionally left reverted when totalSupply() = 0
|
|
87
97
|
return getTotalAssetOwned().divDown(totalSupply());
|
|
88
98
|
}
|
|
89
99
|
|
|
@@ -91,10 +101,6 @@ contract PendleApeStakingSY is SYBase {
|
|
|
91
101
|
AUTOCOMPOUND FEATURE
|
|
92
102
|
//////////////////////////////////////////////////////////////*/
|
|
93
103
|
|
|
94
|
-
function harvestAndCompound() external {
|
|
95
|
-
_harvestAndCompound();
|
|
96
|
-
}
|
|
97
|
-
|
|
98
104
|
function getTotalAssetOwned() public view returns (uint256 totalAssetOwned) {
|
|
99
105
|
(uint256 stakedAmount, ) = IApeStaking(apeStaking).addressPosition(address(this));
|
|
100
106
|
uint256 unclaimedAmount = IApeStaking(apeStaking).pendingRewards(
|
|
@@ -106,21 +112,31 @@ contract PendleApeStakingSY is SYBase {
|
|
|
106
112
|
totalAssetOwned = stakedAmount + unclaimedAmount + floatingAmount;
|
|
107
113
|
}
|
|
108
114
|
|
|
115
|
+
function harvestAndCompound() external {
|
|
116
|
+
_harvestAndCompound();
|
|
117
|
+
}
|
|
118
|
+
|
|
109
119
|
function _harvestAndCompound() internal {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
IApeStaking(apeStaking).claimSelfApeCoin();
|
|
114
|
-
lastRewardClaimedEpoch = currentEpochId;
|
|
115
|
-
}
|
|
120
|
+
_harvest();
|
|
121
|
+
_compound();
|
|
122
|
+
}
|
|
116
123
|
|
|
117
|
-
|
|
124
|
+
function _compound() internal {
|
|
118
125
|
uint256 amountAssetToCompound = _selfBalance(apeCoin);
|
|
119
126
|
if (amountAssetToCompound >= MIN_APE_DEPOSIT) {
|
|
120
127
|
IApeStaking(apeStaking).depositSelfApeCoin(amountAssetToCompound);
|
|
121
128
|
}
|
|
122
129
|
}
|
|
123
130
|
|
|
131
|
+
function _harvest() internal {
|
|
132
|
+
uint256 currentEpochId = _getCurrentEpochId();
|
|
133
|
+
if (currentEpochId == lastRewardClaimedEpoch) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
IApeStaking(apeStaking).claimSelfApeCoin();
|
|
137
|
+
lastRewardClaimedEpoch = currentEpochId;
|
|
138
|
+
}
|
|
139
|
+
|
|
124
140
|
/*///////////////////////////////////////////////////////////////
|
|
125
141
|
MISC FUNCTIONS FOR METADATA
|
|
126
142
|
//////////////////////////////////////////////////////////////*/
|
|
@@ -131,11 +147,8 @@ contract PendleApeStakingSY is SYBase {
|
|
|
131
147
|
override
|
|
132
148
|
returns (uint256 amountSharesOut)
|
|
133
149
|
{
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
} else {
|
|
137
|
-
amountSharesOut = (amountTokenToDeposit * totalSupply()) / getTotalAssetOwned();
|
|
138
|
-
}
|
|
150
|
+
// This function is intentionally left reverted when totalSupply() = 0
|
|
151
|
+
amountSharesOut = (amountTokenToDeposit * totalSupply()) / getTotalAssetOwned();
|
|
139
152
|
}
|
|
140
153
|
|
|
141
154
|
function _previewRedeem(address, uint256 amountSharesToRedeem)
|
|
@@ -144,10 +157,10 @@ contract PendleApeStakingSY is SYBase {
|
|
|
144
157
|
override
|
|
145
158
|
returns (uint256 amountTokenOut)
|
|
146
159
|
{
|
|
160
|
+
// This function is intentionally left reverted when totalSupply() = 0
|
|
147
161
|
amountTokenOut = (amountSharesToRedeem * getTotalAssetOwned()) / totalSupply();
|
|
148
162
|
}
|
|
149
163
|
|
|
150
|
-
|
|
151
164
|
function _getCurrentEpochId() private view returns (uint256) {
|
|
152
165
|
return block.timestamp / EPOCH_LENGTH;
|
|
153
166
|
}
|