[ { "inputs": [ { "internalType": "address", "name": "_operator", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "reward", "type": "uint256" } ], "name": "RewardAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "reward", "type": "uint256" } ], "name": "RewardPaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Staked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdrawn", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "_reward", "type": "address" } ], "name": "addExtraReward", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "asset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clearExtraRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "convertToAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "convertToShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "duration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "earned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "extraRewards", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "extraRewardsLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getReward", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "bool", "name": "_claimExtras", "type": "bool" } ], "name": "getReward", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "historicalRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "pid_", "type": "uint256" }, { "internalType": "address", "name": "stakingToken_", "type": "address" }, { "internalType": "address", "name": "rewardToken_", "type": "address" }, { "internalType": "address", "name": "rewardManager_", "type": "address" }, { "internalType": "address", "name": "lptoken_", "type": "address" } ], "name": "init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "pid_", "type": "uint256" }, { "internalType": "address", "name": "stakingToken_", "type": "address" }, { "internalType": "address", "name": "rewardToken_", "type": "address" }, { "internalType": "address", "name": "rewardManager_", "type": "address" } ], "name": "init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "lastTimeRewardApplicable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastUpdateTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "newRewardRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "periodFinish", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewWithdraw", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "processIdleRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rewards", "type": "uint256" } ], "name": "queueNewRewards", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "queuedRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardPerToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardPerTokenStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "stake", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakeAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_for", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "stakeFor", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakingToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "userRewardPerTokenPaid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bool", "name": "claim", "type": "bool" } ], "name": "withdraw", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "claim", "type": "bool" } ], "name": "withdrawAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "claim", "type": "bool" } ], "name": "withdrawAllAndUnwrap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bool", "name": "claim", "type": "bool" } ], "name": "withdrawAndUnwrap", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60a060405260006004556000600555600060085560006009556000600a5534801561002957600080fd5b506040516130c53803806130c58339818101604052602081101561004c57600080fd5b5051606081901b6001600160601b03191660805260016010556001600160a01b031661302c610099600039806111025280611131528061147e5280611d0c5280612a46525061302c6000f3fe608060405234801561001057600080fd5b50600436106103ae5760003560e01c80637050ccd9116101f4578063c32e72021161011a578063d905777e116100ad578063ebe2b12b1161007c578063ebe2b12b14610a26578063ef8b30f7146104fd578063f106845414610a2e578063f7c618c114610a36576103ae565b8063d905777e1461098c578063dc890da9146109b2578063dd62ed3e146109f0578063df136d6514610a1e576103ae565b8063cd3daf9d116100e9578063cd3daf9d14610912578063ce96cb771461091a578063d2431d9214610940578063d55a23f414610984576103ae565b8063c32e7202146108bf578063c63d75b6146108e4578063c6e6f592146104a0578063c8f33c911461090a576103ae565b8063901a7d5311610192578063a9059cbb11610161578063a9059cbb1461082b578063b3d7f6b9146104fd578063b460af9414610857578063ba0876521461088b576103ae565b8063901a7d53146107d257806394bf804d146107da57806395d89b4114610806578063a694fc3a1461080e576103ae565b80637b0a47ee116101ce5780637b0a47ee1461079457806380faa57d1461079c5780638b876347146107a45780638dcb4061146107ca576103ae565b80637050ccd91461073857806370a082311461076657806372f702f31461078c576103ae565b8063313ce567116102d957806349f039a2116102775780635e43c47b116102465780635e43c47b146106d657806363d38c3b146106fc5780636c8bcee8146107045780636e553f651461070c576103ae565b806349f039a2146106755780634cdad50614610694578063570ca735146106b1578063590a41f5146106b9576103ae565b80633d18b912116102b35780633d18b912146106225780633e8b83e31461062a578063402d267d1461063257806340c3544614610658576103ae565b8063313ce567146105d757806338d07436146105f557806338d52e0f1461061a576103ae565b80630a28a477116103515780631c1c6fe5116103205780631c1c6fe51461054e57806323b872dd1461056d578063262d3d6d146105a35780632ee40908146105ab576103ae565b80630a28a477146104fd5780630f4ef8a61461051a5780630fb5a6b41461053e57806318160ddd14610546576103ae565b806306fdde031161038d57806306fdde03146103fd5780630700037d1461047a57806307a2d13a146104a0578063095ea7b3146104bd576103ae565b80628cc262146103b357806301e1d114146103eb5780630569d388146103f3575b600080fd5b6103d9600480360360208110156103c957600080fd5b50356001600160a01b0316610a3e565b60408051918252519081900360200190f35b6103d9610aae565b6103fb610abe565b005b610405610b19565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561043f578181015183820152602001610427565b50505050905090810190601f16801561046c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d96004803603602081101561049057600080fd5b50356001600160a01b0316610cde565b6103d9600480360360208110156104b657600080fd5b5035610abb565b6104e9600480360360408110156104d357600080fd5b506001600160a01b038135169060200135610cf0565b604080519115158252519081900360200190f35b6103d96004803603602081101561051357600080fd5b5035610d07565b610522610d12565b604080516001600160a01b039092168252519081900360200190f35b6103d9610d21565b6103d9610d28565b6103fb6004803603602081101561056457600080fd5b50351515610d32565b6104e96004803603606081101561058357600080fd5b506001600160a01b03813581169160208101359091169060400135610d50565b6103d9610dc0565b6104e9600480360360408110156105c157600080fd5b506001600160a01b038135169060200135610dc6565b6105df610e32565b6040805160ff9092168252519081900360200190f35b6104e96004803603604081101561060b57600080fd5b50803590602001351515610e37565b61052261105e565b6104e961106d565b6103fb611082565b6103d96004803603602081101561064857600080fd5b50356001600160a01b03166110ad565b6105226004803603602081101561066e57600080fd5b50356110b4565b6103fb6004803603602081101561068b57600080fd5b503515156110db565b6103d9600480360360208110156106aa57600080fd5b50356110f5565b610522611100565b6104e9600480360360208110156106cf57600080fd5b5035611124565b6104e9600480360360208110156106ec57600080fd5b50356001600160a01b031661122e565b6103d961134c565b6103d9611352565b6103d96004803603604081101561072257600080fd5b50803590602001356001600160a01b0316611358565b6104e96004803603604081101561074e57600080fd5b506001600160a01b0381351690602001351515611669565b6103d96004803603602081101561077c57600080fd5b50356001600160a01b03166117e4565b6105226117ef565b6103d96117fe565b6103d9611804565b6103d9600480360360208110156107ba57600080fd5b50356001600160a01b0316611812565b6104e9611824565b6103d96118b4565b6103d9600480360360408110156107f057600080fd5b50803590602001356001600160a01b03166118ba565b6104056118c6565b6104e96004803603602081101561082457600080fd5b5035611a8b565b6104e96004803603604081101561084157600080fd5b506001600160a01b038135169060200135611aed565b6103d96004803603606081101561086d57600080fd5b508035906001600160a01b0360208201358116916040013516611afa565b6103d9600480360360608110156108a157600080fd5b508035906001600160a01b0360208201358116916040013516611c2f565b6104e9600480360360408110156108d557600080fd5b50803590602001351515611c44565b6103d9600480360360208110156108fa57600080fd5b50356001600160a01b0316611c6d565b6103d9611c78565b6103d9611c7e565b6103d96004803603602081101561093057600080fd5b50356001600160a01b0316611ccc565b6103fb600480360360a081101561095657600080fd5b508035906001600160a01b036020820135811691604081013582169160608201358116916080013516611cd7565b6103d9611d46565b6103d9600480360360208110156109a257600080fd5b50356001600160a01b0316611d4c565b6103fb600480360360808110156109c857600080fd5b508035906001600160a01b036020820135811691604081013582169160609091013516611d57565b6103d960048036036040811015610a0657600080fd5b506001600160a01b0381358116916020013516611e62565b6103d9611e8d565b6103d9611e93565b6103d9611e99565b610522611e9f565b6001600160a01b0381166000908152600d6020908152604080832054600c909252822054610aa69190610aa090670de0b6b3a764000090610a9a90610a8b90610a85611c7e565b90611eae565b610a94886117e4565b90611f0b565b90611f64565b90611fcb565b90505b919050565b6000610ab8610d28565b90505b90565b6002546001600160a01b03163314610b0b576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b610b17600f6000612e80565b565b600154604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde03916004808301926000929190829003018186803b158015610b5e57600080fd5b505afa158015610b72573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610b9b57600080fd5b8101908080516040519392919084640100000000821115610bbb57600080fd5b908301906020820185811115610bd057600080fd5b8251640100000000811182820188101715610bea57600080fd5b82525081516020918201929091019080838360005b83811015610c17578181015183820152602001610bff565b50505050905090810190601f168015610c445780820380516001836020036101000a031916815260200191505b506040525050506040516020018082805190602001908083835b60208310610c7d5780518252601f199092019160209182019101610c5e565b6001836020036101000a038019825116818451168082178552505050505050905001807f205661756c740000000000000000000000000000000000000000000000000000815250600601915050604051602081830303815290604052905090565b600d6020526000908152604090205481565b6000610cfd338484612025565b5060015b92915050565b6000610aa682610abb565b6002546001600160a01b031681565b62093a8081565b6000610ab8612111565b336000908152600e6020526040902054610d4c9082610e37565b5050565b600080610d9b836040518060600160405280602c8152602001612f28602c91396001600160a01b03881660009081526012602090815260408083203384529091529020549190612117565b9050610da8853383612025565b610db38585856121ae565b60019150505b9392505050565b600a5481565b6000610dd282846124f4565b600154610dea906001600160a01b03163330856126c8565b6040805183815290516001600160a01b038516917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a250600192915050565b601290565b600033610e42611c7e565b600755610e4d611804565b6006556001600160a01b03811615610e9457610e6881610a3e565b6001600160a01b0382166000908152600d6020908152604080832093909355600754600c909152919020555b60008411610ee9576040805162461bcd60e51b815260206004820152601e60248201527f526577617264506f6f6c203a2043616e6e6f7420776974686472617720300000604482015290519081900360640190fd5b60005b600f54811015610f7c57600f8181548110610f0357fe5b60009182526020822001546040805163f3fef3a360e01b81523360048201526024810189905290516001600160a01b039092169263f3fef3a39260448084019382900301818387803b158015610f5857600080fd5b505af1158015610f6c573d6000803e3d6000fd5b505060019092019150610eec9050565b50600b54610f8a9085611eae565b600b55336000908152600e6020526040902054610fa79085611eae565b336000818152600e6020526040902091909155600154610fd3916001600160a01b039091169086612728565b60408051858152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a2821561101c5761101a336001611669565b505b60408051858152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35060019392505050565b6011546001600160a01b031681565b600061107a336001611669565b506001905090565b600454421015801561109657506000600854115b15610b17576110a660085461277f565b6000600855565b5060001990565b600f81815481106110c157fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600e6020526040902054610d4c9082611c44565b6000610aa682610d07565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611191576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b60085461119f908390611fcb565b915060045442106111c0576111b38261277f565b5060006008556001610aa9565b60006111e46111dd62093a80600454611eae90919063ffffffff16565b4290611eae565b600554909150810260006111fe85610a9a846103e8611f0b565b905061033e81101561121d576112138561277f565b6000600855611223565b60088590555b506001949350505050565b6002546000906001600160a01b0316331461127e576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b6001600160a01b0382166112d9576040805162461bcd60e51b815260206004820152600f60248201527f217265776172642073657474696e670000000000000000000000000000000000604482015290519081900360640190fd5b600f54600c116112eb57506000610aa9565b50600f8054600181810183556000929092527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b03841673ffffffffffffffffffffffffffffffffffffffff19909116179055919050565b60085481565b61033e81565b6000600260105414156113b2576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026010556011546113cf906001600160a01b03163330866126c8565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561141a57600080fd5b505afa15801561142e573d6000803e3d6000fd5b505050506040513d602081101561144457600080fd5b5051600354604080516321d0683360e11b815260048101929092526024820187905260006044830181905290519293506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926343a0d066926064808201936020939283900390910190829087803b1580156114c757600080fd5b505af11580156114db573d6000803e3d6000fd5b505050506040513d60208110156114f157600080fd5b5050600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561153e57600080fd5b505afa158015611552573d6000803e3d6000fd5b505050506040513d602081101561156857600080fd5b50519050846115778284611eae565b10156115ca576040805162461bcd60e51b815260206004820152600860248201527f216465706f736974000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6115d485856124f4565b604080518681526020810187905281516001600160a01b0387169233927fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7929081900390910190a36040805186815290516001600160a01b038616917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a2505060016010555090919050565b600082611674611c7e565b60075561167f611804565b6006556001600160a01b038116156116c65761169a81610a3e565b6001600160a01b0382166000908152600d6020908152604080832093909355600754600c909152919020555b60006116d185610a3e565b90508015611742576001600160a01b038086166000908152600d602052604081208190555461170291168683612728565b6040805182815290516001600160a01b038716917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25b83156112235760005b600f548110156117d857600f818154811061176257fe5b600091825260208220015460408051630c00007b60e41b81526001600160a01b038a811660048301529151919092169263c00007b0926024808201939182900301818387803b1580156117b457600080fd5b505af11580156117c8573d6000803e3d6000fd5b50506001909201915061174b9050565b50506001949350505050565b6000610aa6826128a5565b6001546001600160a01b031681565b60055481565b6000610ab8426004546128c0565b600c6020526000908152604090205481565b600154604080516370a0823160e01b8152336004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b15801561187457600080fd5b505afa158015611888573d6000803e3d6000fd5b505050506040513d602081101561189e57600080fd5b505190506118ab81611a8b565b50600191505090565b60095481565b6000610db98383611358565b600154604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b41916004808301926000929190829003018186803b15801561190b57600080fd5b505afa15801561191f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561194857600080fd5b810190808051604051939291908464010000000082111561196857600080fd5b90830190602082018581111561197d57600080fd5b825164010000000081118282018810171561199757600080fd5b82525081516020918201929091019080838360005b838110156119c45781810151838201526020016119ac565b50505050905090810190601f1680156119f15780820380516001836020036101000a031916815260200191505b506040525050506040516020018082805190602001908083835b60208310611a2a5780518252601f199092019160209182019101611a0b565b6001836020036101000a038019825116818451168082178552505050505050905001807f2d7661756c740000000000000000000000000000000000000000000000000000815250600601915050604051602081830303815290604052905090565b6000611a9782336124f4565b600154611aaf906001600160a01b03163330856126c8565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a2506001919050565b6000610cfd3384846121ae565b600060026010541415611b54576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002601055336001600160a01b03831614611bbb57611bbb8233611bb6876040518060600160405280602c8152602001612f28602c91396001600160a01b03881660009081526012602090815260408083203384529091529020549190612117565b612025565b611bc68483856128d6565b50816001600160a01b0316836001600160a01b0316336001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8788604051808381526020018281526020019250505060405180910390a4505060016010555090565b6000611c3c848484611afa565b949350505050565b6000611c518333336128d6565b508115610cfd57611c63336001611669565b5050600192915050565b6000610aa6826110ad565b60065481565b6000611c88610d28565b611c955750600754610abb565b610ab8611cc3611ca3610d28565b610a9a670de0b6b3a7640000610a94600554610a94600654610a85611804565b60075490611fcb565b6000610aa6826117e4565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038381169190911791829055611d3391167f0000000000000000000000000000000000000000000000000000000000000000600019612b2e565b611d3f85858585611d57565b5050505050565b600f5490565b6000610aa682611ccc565b6001546001600160a01b031615611db5576040805162461bcd60e51b815260206004820152600c60248201527f616c726561647920696e69740000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316611e10576040805162461bcd60e51b815260206004820152600d60248201527f217374616b696e67546f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6003939093556001805473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b0394851617909155600080548216928416929092179091556002805490911691909216179055565b6001600160a01b03918216600090815260126020908152604080832093909416825291909152205490565b60075481565b60045481565b60035481565b6000546001600160a01b031681565b600082821115611f05576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082611f1a57506000610d01565b82820282848281611f2757fe5b0414610db95760405162461bcd60e51b8152600401808060200182810382526021815260200180612f546021913960400191505060405180910390fd5b6000808211611fba576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611fc357fe5b049392505050565b600082820183811015610db9576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03831661206a5760405162461bcd60e51b8152600401808060200182810382526026815260200180612f9a6026913960400191505060405180910390fd5b6001600160a01b0382166120af5760405162461bcd60e51b8152600401808060200182810382526024815260200180612f046024913960400191505060405180910390fd5b6001600160a01b03808416600081815260126020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600b5490565b600081848411156121a65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561216b578181015183820152602001612153565b50505050905090810190601f1680156121985780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b826121b7611c7e565b6007556121c2611804565b6006556001600160a01b03811615612209576121dd81610a3e565b6001600160a01b0382166000908152600d6020908152604080832093909355600754600c909152919020555b82612212611c7e565b60075561221d611804565b6006556001600160a01b038116156122645761223881610a3e565b6001600160a01b0382166000908152600d6020908152604080832093909355600754600c909152919020555b6001600160a01b0385166122a95760405162461bcd60e51b8152600401808060200182810382526025815260200180612f756025913960400191505060405180910390fd5b6001600160a01b0384166122ee5760405162461bcd60e51b8152600401808060200182810382526023815260200180612ebb6023913960400191505060405180910390fd5b6001600160a01b0385166000908152600e6020526040902054838110156123465760405162461bcd60e51b8152600401808060200182810382526026815260200180612ede6026913960400191505060405180910390fd5b60005b600f5481101561245b57600f818154811061236057fe5b60009182526020822001546040805163f3fef3a360e01b81526001600160a01b038b81166004830152602482018a90529151919092169263f3fef3a3926044808201939182900301818387803b1580156123b957600080fd5b505af11580156123cd573d6000803e3d6000fd5b50505050600f81815481106123de57fe5b6000918252602082200154604080516356e4bb9760e11b81526001600160a01b038a81166004830152602482018a90529151919092169263adc9772e926044808201939182900301818387803b15801561243757600080fd5b505af115801561244b573d6000803e3d6000fd5b5050600190920191506123499050565b506124668185611eae565b6001600160a01b038088166000908152600e602052604080822093909355908716815220546124959085611fcb565b6001600160a01b038087166000818152600e602090815260409182902094909455805188815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050505050565b806124fd611c7e565b600755612508611804565b6006556001600160a01b0381161561254f5761252381610a3e565b6001600160a01b0382166000908152600d6020908152604080832093909355600754600c909152919020555b600083116125a4576040805162461bcd60e51b815260206004820152601b60248201527f526577617264506f6f6c203a2043616e6e6f74207374616b6520300000000000604482015290519081900360640190fd5b60005b600f5481101561263b57600f81815481106125be57fe5b6000918252602082200154604080516356e4bb9760e11b81526001600160a01b038781166004830152602482018990529151919092169263adc9772e926044808201939182900301818387803b15801561261757600080fd5b505af115801561262b573d6000803e3d6000fd5b5050600190920191506125a79050565b50600b546126499084611fcb565b600b556001600160a01b0382166000908152600e602052604090205461266f9084611fcb565b6001600160a01b0383166000818152600e602090815260408083209490945583518781529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052612722908590612c3d565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261277a908490612c3d565b505050565b6000612789611c7e565b600755612794611804565b6006556001600160a01b038116156127db576127af81610a3e565b6001600160a01b0382166000908152600d6020908152604080832093909355600754600c909152919020555b600a546127e89083611fcb565b600a556004544210612809576128018262093a80611f64565b600555612853565b6004546000906128199042611eae565b9050600061283260055483611f0b90919063ffffffff16565b905061283e8482611fcb565b935061284d8462093a80611f64565b60055550505b600982905542600681905561286b9062093a80611fcb565b6004556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15050565b6001600160a01b03166000908152600e602052604090205490565b60008183106128cf5781610db9565b5090919050565b6000826128e1611c7e565b6007556128ec611804565b6006556001600160a01b038116156129335761290781610a3e565b6001600160a01b0382166000908152600d6020908152604080832093909355600754600c909152919020555b60005b600f548110156129ca57600f818154811061294d57fe5b60009182526020822001546040805163f3fef3a360e01b81526001600160a01b038981166004830152602482018b90529151919092169263f3fef3a3926044808201939182900301818387803b1580156129a657600080fd5b505af11580156129ba573d6000803e3d6000fd5b5050600190920191506129369050565b50600b546129d89086611eae565b600b556001600160a01b0384166000908152600e60205260409020546129fe9086611eae565b6001600160a01b038086166000908152600e60205260408082209390935560035483516305335c3960e21b8152600481019190915260248101899052868316604482015292517f0000000000000000000000000000000000000000000000000000000000000000909216926314cd70e4926064808301939282900301818387803b158015612a8b57600080fd5b505af1158015612a9f573d6000803e3d6000fd5b50506040805188815290516001600160a01b03881693507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d592509081900360200190a26040805186815290516000916001600160a01b038716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3506001949350505050565b801580612bb4575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015612b8657600080fd5b505afa158015612b9a573d6000803e3d6000fd5b505050506040513d6020811015612bb057600080fd5b5051155b612bef5760405162461bcd60e51b8152600401808060200182810382526036815260200180612fea6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261277a9084905b6060612c92826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612cee9092919063ffffffff16565b80519091501561277a57808060200190516020811015612cb157600080fd5b505161277a5760405162461bcd60e51b815260040180806020018281038252602a815260200180612fc0602a913960400191505060405180910390fd5b6060611c3c848460008585612d0285612e14565b612d53576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310612d925780518252601f199092019160209182019101612d73565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612df4576040519150601f19603f3d011682016040523d82523d6000602084013e612df9565b606091505b5091509150612e09828286612e1a565b979650505050505050565b3b151590565b60608315612e29575081610db9565b825115612e395782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561216b578181015183820152602001612153565b5080546000825590600052602060002090810190612e9e9190612ea1565b50565b5b80821115612eb65760008155600101612ea2565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365455243343632363a20617070726f766520746f20746865207a65726f2061646472657373455243343632363a207769746864726177616c20616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373455243343632363a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a164736f6c634300060c000a00000000000000000000000008d46dc9e455c9b97e671b6291a54ba5668b94ac