[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "address", "name": "_rewardToken", "type": "address" }, { "internalType": "address", "name": "_poolRewardToken", "type": "address" }, { "components": [ { "internalType": "address", "name": "poolReward", "type": "address" }, { "internalType": "address", "name": "token0", "type": "address" }, { "internalType": "address", "name": "token1", "type": "address" } ], "internalType": "struct MasterChefVariableRewardsStrategyForLP.SwapPairs", "name": "_swapPairs", "type": "tuple" }, { "components": [ { "internalType": "address", "name": "reward", "type": "address" }, { "internalType": "address", "name": "swapPair", "type": "address" } ], "internalType": "struct MasterChefVariableRewardsStrategy.ExtraReward[]", "name": "_extraRewards", "type": "tuple[]" }, { "internalType": "address", "name": "_stakingContract", "type": "address" }, { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "address", "name": "_timelock", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "minTokensToReinvest", "type": "uint256" }, { "internalType": "uint256", "name": "devFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "reinvestRewardBips", "type": "uint256" } ], "internalType": "struct YakStrategyV2.StrategySettings", "name": "_strategySettings", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "AllowDepositor", "type": "event" }, { "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": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "DepositsEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Recovered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newTotalDeposits", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalSupply", "type": "uint256" } ], "name": "Reinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "RemoveDepositor", "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": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateAdminFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValue", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValue", "type": "address" } ], "name": "UpdateDevAddr", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateDevFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateMaxTokensToDepositWithoutReinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateMinTokensToReinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateReinvestReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "ADMIN_FEE_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEPOSITS_ENABLED", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEV_FEE_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_TOKENS_TO_DEPOSIT_WITHOUT_REINVEST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MIN_TOKENS_TO_REINVEST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PID", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REINVEST_REWARD_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION_HASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_rewardToken", "type": "address" }, { "internalType": "address", "name": "_swapPair", "type": "address" } ], "name": "addReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "allowDepositor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "allowedDepositors", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkReward", "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": "amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositFor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "depositToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "depositWithPermit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "devAddr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimateDeployedBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimateReinvestReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getDepositTokensForShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDomainSeparator", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getSharesForDepositTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "miniChef", "outputs": [ { "internalType": "contract IMiniChefV2", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numberOfAllowedDepositors", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverAVAX", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "removeDepositor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "rewardToken", "type": "address" } ], "name": "removeReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "minReturnAmountAccepted", "type": "uint256" }, { "internalType": "bool", "name": "disableDeposits", "type": "bool" } ], "name": "rescueDeployedFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "revokeAllowance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewardSwapPairs", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardToken", "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": "totalDeposits", "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": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "src", "type": "address" }, { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateAdminFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "updateDepositsEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newValue", "type": "address" } ], "name": "updateDevAddr", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateDevFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateMaxTokensToDepositWithoutReinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateMinTokensToReinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateReinvestReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60e0604052600960a0819052685969656c642059616b60b81b60c09081526200002c916000919062001686565b506040805180820190915260038082526216549560ea1b6020909201918252620000599160019162001686565b5060016014553480156200006c57600080fd5b50604051620063c3380380620063c38339810160408190526200008f91620019cd565b89898989898989888a898989898989600001518989898989806000620000ba620002ff60201b60201c565b600680546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620063a3833981519152908290a3508051620001049062000303565b6020810151620001149062000393565b604081015162000124906200044a565b5089516200013a9060009060208d019062001686565b50600980546001600160a01b03808c166001600160a01b031992831617909255600a80548b84169083161790556080849052600b80548216732d580f9cf2fb2d09bc411532988f2afda4e7beff1790556012805487841690831617905588821660009081526013602052604081208054938a16939092169290921790555b8551811015620002295762000214868281518110620001db57620001db62001ac9565b602002602001015160000151878381518110620001fc57620001fc62001ac9565b6020026020010151602001516200050160201b60201c565b80620002208162001af5565b915050620001b8565b506200023660016200080e565b6200024183620008b8565b60408051600080825260208201527fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234910160405180910390a15050505050505050505062000297868989620009b560201b60201c565b5050505050505050505086601860006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083601760006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050505050505050505062001b86565b3390565b6006546001600160a01b03163314620003525760405162461bcd60e51b815260206004820181905260248201526000805160206200638383398151915260448201526064015b60405180910390fd5b600c5460408051918252602082018390527f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100910160405180910390a1600c55565b6006546001600160a01b03163314620003de5760405162461bcd60e51b8152602060048201819052602482015260008051602062006383833981519152604482015260640162000349565b612710620003fd601054836200167160201b62001df71790919060201c565b11156200040957600080fd5b60115460408051918252602082018390527f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131910160405180910390a1601155565b6006546001600160a01b03163314620004955760405162461bcd60e51b8152602060048201819052602482015260008051602062006383833981519152604482015260640162000349565b612710620004b4601154836200167160201b62001df71790919060201c565b1115620004c057600080fd5b60105460408051918252602082018390527fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2910160405180910390a1601055565b600a546001600160a01b03838116911614620007bb57806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000556573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057c919062001b11565b6001600160a01b0316826001600160a01b0316036200066a57600a546040805163d21220a760e01b815290516001600160a01b039283169284169163d21220a79160048083019260209291908290030181865afa158015620005e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000608919062001b11565b6001600160a01b031614620006645760405162461bcd60e51b815260206004820152603a602482015260008051602062006343833981519152604482015260008051602062006363833981519152606482015260840162000349565b620007bb565b600a5460408051630dfe168160e01b815290516001600160a01b0392831692841691630dfe16819160048083019260209291908290030181865afa158015620006b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006dd919062001b11565b6001600160a01b0316148015620007695750816001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000738573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200075e919062001b11565b6001600160a01b0316145b620007bb5760405162461bcd60e51b815260206004820152603a602482015260008051602062006343833981519152604482015260008051602062006363833981519152606482015260840162000349565b6001600160a01b03828116600090815260136020908152604090912080546001600160a01b03191692841692909217909155601454620008079160019062001671811b62001df717901c565b6014555050565b6006546001600160a01b03163314620008595760405162461bcd60e51b8152602060048201819052602482015260008051602062006383833981519152604482015260640162000349565b600e5481151560ff9091161515036200087157600080fd5b600e805460ff19168215159081179091556040519081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859060200160405180910390a150565b6006546001600160a01b03163314620009035760405162461bcd60e51b8152602060048201819052602482015260008051602062006383833981519152604482015260640162000349565b6001600160a01b0381166200096a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000349565b6006546040516001600160a01b03808416921690600080516020620063a383398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a09573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a2f919062001b11565b6001600160a01b0316826001600160a01b03161415801562000adc5750600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000aa0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ac6919062001b11565b6001600160a01b0316826001600160a01b031614155b15620012865760208301516001600160a01b031662000b505760405162461bcd60e51b815260206004820152602960248201527f5377617020706169722030206973206e656365737361727920627574206e6f74604482015268081cdd5c1c1b1a595960ba1b606482015260840162000349565b60408301516001600160a01b031662000bbe5760405162461bcd60e51b815260206004820152602960248201527f5377617020706169722031206973206e656365737361727920627574206e6f74604482015268081cdd5c1c1b1a595960ba1b606482015260840162000349565b602080840151601580546001600160a01b039283166001600160a01b031991821681179092556040808801516016805491861691909316179091558051630dfe168160e01b81529051928616939192630dfe1681926004808401939192918290030181865afa15801562000c36573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c5c919062001b11565b6001600160a01b0316148062000cea57506015546040805163d21220a760e01b815290516001600160a01b0380861693169163d21220a79160048083019260209291908290030181865afa15801562000cb9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cdf919062001b11565b6001600160a01b0316145b62000d6c5760405162461bcd60e51b815260206004820152604560248201527f53776170207061697220737570706c69656420646f6573206e6f74206861766560448201527f207468652072657761726420746f6b656e206173206f6e65206f662069742773606482015264103830b4b960d91b608482015260a40162000349565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000dc0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000de6919062001b11565b6001600160a01b0316601560009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e69919062001b11565b6001600160a01b0316148062000f825750600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ece573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ef4919062001b11565b6001600160a01b0316601560009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000f51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f77919062001b11565b6001600160a01b0316145b62000ff65760405162461bcd60e51b815260206004820152603860248201527f537761702070616972203020737570706c69656420646f6573206e6f74206d6160448201527f74636820746865207061697220696e207175657374696f6e0000000000000000606482015260840162000349565b600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001070919062001b11565b6001600160a01b0316601660009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620010cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010f3919062001b11565b6001600160a01b031614806200120c5750600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001158573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200117e919062001b11565b6001600160a01b0316601660009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001201919062001b11565b6001600160a01b0316145b620012805760405162461bcd60e51b815260206004820152603860248201527f537761702070616972203120737570706c69656420646f6573206e6f74206d6160448201527f74636820746865207061697220696e207175657374696f6e0000000000000000606482015260840162000349565b620013f7565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001300919062001b11565b6001600160a01b0316826001600160a01b0316036200134157600954601680546001600160a01b0319166001600160a01b03909216919091179055620013f7565b600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001395573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013bb919062001b11565b6001600160a01b0316826001600160a01b031603620013f757600954601580546001600160a01b0319166001600160a01b039092169190911790555b82600001516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200143a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001460919062001b11565b6001600160a01b0316816001600160a01b0316036200154d57816001600160a01b031683600001516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620014c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014ec919062001b11565b6001600160a01b031614620015485760405162461bcd60e51b815260206004820152603a602482015260008051602062006343833981519152604482015260008051602062006363833981519152606482015260840162000349565b505050565b816001600160a01b031683600001516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200159a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015c0919062001b11565b6001600160a01b03161480156200161f5750806001600160a01b031683600001516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620014c6573d6000803e3d6000fd5b620015485760405162461bcd60e51b815260206004820152603a602482015260008051602062006343833981519152604482015260008051602062006363833981519152606482015260840162000349565b60006200167f828462001b2f565b9392505050565b828054620016949062001b4a565b90600052602060002090601f016020900481019282620016b8576000855562001703565b82601f10620016d357805160ff191683800117855562001703565b8280016001018555821562001703579182015b8281111562001703578251825591602001919060010190620016e6565b506200171192915062001715565b5090565b5b8082111562001711576000815560010162001716565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156200176757620017676200172c565b60405290565b604080519081016001600160401b03811182821017156200176757620017676200172c565b604051601f8201601f191681016001600160401b0381118282101715620017bd57620017bd6200172c565b604052919050565b600082601f830112620017d757600080fd5b81516001600160401b03811115620017f357620017f36200172c565b602062001809601f8301601f1916820162001792565b82815285828487010111156200181e57600080fd5b60005b838110156200183e57858101830151828201840152820162001821565b83811115620018505760008385840101525b5095945050505050565b80516001600160a01b03811681146200187257600080fd5b919050565b6000606082840312156200188a57600080fd5b6200189462001742565b9050620018a1826200185a565b8152620018b1602083016200185a565b6020820152620018c4604083016200185a565b604082015292915050565b600082601f830112620018e157600080fd5b815160206001600160401b03821115620018ff57620018ff6200172c565b6200190f818360051b0162001792565b82815260069290921b840181019181810190868411156200192f57600080fd5b8286015b848110156200198557604081890312156200194e5760008081fd5b620019586200176d565b62001963826200185a565b8152620019728583016200185a565b8186015283529183019160400162001933565b509695505050505050565b600060608284031215620019a357600080fd5b620019ad62001742565b905081518152602082015160208201526040820151604082015292915050565b6000806000806000806000806000806101c08b8d031215620019ee57600080fd5b8a516001600160401b038082111562001a0657600080fd5b62001a148e838f01620017c5565b9b5062001a2460208e016200185a565b9a5062001a3460408e016200185a565b995062001a4460608e016200185a565b985062001a558e60808f0162001877565b975060e08d015191508082111562001a6c57600080fd5b5062001a7b8d828e01620018cf565b95505062001a8d6101008c016200185a565b93506101208b0151925062001aa66101408c016200185a565b915062001ab88c6101608d0162001990565b90509295989b9194979a5092959850565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162001b0a5762001b0a62001adf565b5060010190565b60006020828403121562001b2457600080fd5b6200167f826200185a565b6000821982111562001b455762001b4562001adf565b500190565b600181811c9082168062001b5f57607f821691505b60208210810362001b8057634e487b7160e01b600052602260045260246000fd5b50919050565b60805161477762001bcc6000396000818161056e01528181610ffd01528181611705015281816120a20152818161296d01528181612d4e0152612ff901526147776000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c80638980f11f116101e9578063b9e57b801161010f578063dd62ed3e116100ad578063ed24911d1161007c578063ed24911d14610822578063f2fde38b1461082a578063f7c618c11461083d578063fdb5a03e1461085057600080fd5b8063dd62ed3e146107b0578063dd8ce4d6146107e9578063e21ac825146107fc578063eab89a5a1461080f57600080fd5b8063c89039c5116100e9578063c89039c514610764578063cff1b6ef14610777578063d505accf1461078a578063da09c72c1461079d57600080fd5b8063b9e57b801461074b578063bd079f5514610753578063c4b24a461461075c57600080fd5b80639e4e731811610187578063a9059cbb11610156578063a9059cbb14610705578063ac0d31ff14610718578063b52a321f1461072b578063b6b55f251461073857600080fd5b80639e4e73181461068f578063a4d5e67c146106b6578063a5534e71146106c9578063a8ae2b7c146106f257600080fd5b80638da5cb5b116101c35780638da5cb5b146106505780639291d5631461066157806395d89b411461067457806399729ec11461067c57600080fd5b80638980f11f146106215780638aff733d146106345780638b73e6061461063d57600080fd5b8063483c2ef0116102ce57806370a082311161026c5780637ae267731161023b5780637ae26773146105d35780637d882097146105e65780637ecebe00146105ee578063818372301461060e57600080fd5b806370a0823114610590578063715018a6146105b9578063789139bc146105c157806379085425146105ca57600080fd5b80634e77ace5116102a85780634e77ace51461053a5780634ebb79161461054d5780635ea682ea146105605780635eaec0e41461056957600080fd5b8063483c2ef0146104f15780634a970be7146105145780634bebd1e71461052757600080fd5b80632e1a7d4d1161033b578063313ce56711610315578063313ce567146104905780633bdc6e72146104aa5780634005760a146104b357806340b47e1a146104de57600080fd5b80632e1a7d4d146104415780632f4f21e21461045657806330adf81f1461046957600080fd5b80630f23475d116103775780630f23475d146103f657806318160ddd146103fe57806320606b701461040757806323b872dd1461042e57600080fd5b806306fdde031461039e57806307677111146103bc578063095ea7b3146103d3575b600080fd5b6103a6610858565b6040516103b39190614000565b60405180910390f35b6103c5600f5481565b6040519081526020016103b3565b6103e66103e1366004614028565b6108e6565b60405190151581526020016103b3565b6103c56108fc565b6103c560025481565b6103c57f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6103e661043c366004614054565b610937565b61045461044f366004614095565b610a1b565b005b610454610464366004614028565b610afd565b6103c57f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610498601281565b60405160ff90911681526020016103b3565b6103c560075481565b6017546104c6906001600160a01b031681565b6040516001600160a01b0390911681526020016103b3565b6104546104ec3660046140ae565b610b0b565b6103e66104ff3660046140e7565b60086020526000908152604090205460ff1681565b61045461052236600461411a565b610b6f565b6104546105353660046140e7565b610c21565b61045461054836600461416f565b610d3e565b61045461055b366004614095565b610de5565b6103c560115481565b6103c57f000000000000000000000000000000000000000000000000000000000000000081565b6103c561059e3660046140e7565b6001600160a01b031660009081526004602052604090205490565b610454610e9f565b6103c5600d5481565b6103c560145481565b6104546105e13660046140ae565b610f31565b6103c5610ff5565b6103c56105fc3660046140e7565b60056020526000908152604090205481565b61045461061c366004614095565b611027565b61045461062f366004614028565b6110b0565b6103c560105481565b61045461064b3660046140e7565b6111c5565b6006546001600160a01b03166104c6565b61045461066f3660046140e7565b611380565b6103a6611443565b61045461068a366004614095565b611450565b6103c57fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b6104546106c43660046140e7565b6114fc565b6104c66106d73660046140e7565b6013602052600090815260409020546001600160a01b031681565b610454610700366004614095565b611590565b6103e6610713366004614028565b61163c565b61045461072636600461418c565b611649565b600e546103e69060ff1681565b610454610746366004614095565b611889565b6103c5611896565b6103c5600c5481565b6103c56118d5565b6009546104c6906001600160a01b031681565b610454610785366004614095565b6118e0565b6104546107983660046141b1565b611974565b600b546104c6906001600160a01b031681565b6103c56107be3660046140ae565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6103c56107f7366004614095565b611a87565b61045461080a366004614095565b611ac1565b6103c561081d366004614095565b611b4a565b6103c5611b7e565b6104546108383660046140e7565b611c1e565b600a546104c6906001600160a01b031681565b610454611d3e565b600080546108659061421f565b80601f01602080910402602001604051908101604052809291908181526020018280546108919061421f565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b60006108f3338484611e03565b50600192915050565b600080610907610ff5565b90506000806109236127105b61091d8585611f11565b90611f1d565b905061092f8382611f29565b935050505090565b6001600160a01b03831660008181526003602090815260408083203380855292528220549192909190821480159061097157506000198114155b15610a0257600061099d856040518060600160405280602f81526020016146be602f9139849190611f35565b6001600160a01b038881166000818152600360209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b610a0d868686611f61565b6001925050505b9392505050565b6000610a2682611b4a565b905060008111610a7d5760405162461bcd60e51b815260206004820152601e60248201527f4d617374657243686566537472617465677956313a3a7769746864726177000060448201526064015b60405180910390fd5b610a868161209d565b600080610a94612710610913565b600954909150610ab7906001600160a01b031633610ab28685611f29565b6120c7565b610ac133856121b1565b60405183815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a250505050565b610b078282612287565b5050565b600b546001600160a01b03163314610b655760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c794465760000000000000000000000006044820152606401610a74565b610b07828261247b565b6009546040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c481018390526001600160a01b039091169063d505accf9060e401600060405180830381600087803b158015610bf857600080fd5b505af1158015610c0c573d6000803e3d6000fd5b50505050610c1a3386612287565b5050505050565b6006546001600160a01b03163314610c695760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b6001600160a01b03811660009081526008602052604090205460ff1615610cd25760405162461bcd60e51b815260206004820152601c60248201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f72000000006044820152606401610a74565b6001600160a01b0381166000908152600860205260409020805460ff19166001908117909155600754610d0491611df7565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b6006546001600160a01b03163314610d865760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b600e5481151560ff909116151503610d9d57600080fd5b600e805460ff19168215159081179091556040519081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e85906020015b60405180910390a150565b6006546001600160a01b03163314610e2d5760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b60008111610e3a57600080fd5b604051339082156108fc029083906000818181858888f19350505050158015610e67573d6000803e3d6000fd5b506040805160008152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa289101610dda565b6006546001600160a01b03163314610ee75760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b6006546001600160a01b03163314610f795760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b60405163095ea7b360e01b81526001600160a01b0382811660048301526000602483015283169063095ea7b3906044016020604051808303816000875af1158015610fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fec9190614259565b610b0757600080fd5b6000806110217f00000000000000000000000000000000000000000000000000000000000000006127da565b92915050565b6006546001600160a01b0316331461106f5760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b600c5460408051918252602082018390527f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100910160405180910390a1600c55565b6006546001600160a01b031633146110f85760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b6000811161110557600080fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614259565b61117f57600080fd5b604080516001600160a01b0384168152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28910160405180910390a15050565b6006546001600160a01b0316331461120d5760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b6000600754116112855760405162461bcd60e51b815260206004820152603460248201527f5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e60448201527f6f20616c6c6f776564206465706f7369746f72730000000000000000000000006064820152608401610a74565b6001600160a01b03811660009081526008602052604090205460ff1615156001146113185760405162461bcd60e51b815260206004820152602a60248201527f5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e60448201527f6f7420616c6c6f776564000000000000000000000000000000000000000000006064820152608401610a74565b6001600160a01b0381166000908152600860205260409020805460ff19169055600754611346906001611f29565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b600b546001600160a01b031633146113da5760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c794465760000000000000000000000006044820152606401610a74565b600b54604080516001600160a01b03928316815291831660208301527fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c00910160405180910390a1600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600180546108659061421f565b6006546001600160a01b031633146114985760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b6127106114b060105483611df790919063ffffffff16565b11156114bb57600080fd5b60115460408051918252602082018390527f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131910160405180910390a1601155565b600b546001600160a01b031633146115565760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c794465760000000000000000000000006044820152606401610a74565b6001600160a01b038116600090815260136020526040902080546001600160a01b031916905560145461158a906001611f29565b60145550565b6006546001600160a01b031633146115d85760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b6127106115f060115483611df790919063ffffffff16565b11156115fb57600080fd5b60105460408051918252602082018390527fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2910160405180910390a1601055565b60006108f3338484611f61565b6006546001600160a01b031633146116915760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b6009546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156116da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fe9190614276565b90506117297f000000000000000000000000000000000000000000000000000000000000000061286d565b6009546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611772573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117969190614276565b9050836117a38284611f29565b10156118175760405162461bcd60e51b815260206004820152602960248201527f4d617374657243686566537472617465677956313a3a7265736375654465706c60448201527f6f79656446756e647300000000000000000000000000000000000000000000006064820152608401610a74565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234611840610ff5565b6002546040805192835260208301919091520160405180910390a1600e5460ff161515600114801561187457506001831515145b15611883576118836000610d3e565b50505050565b6118933382612287565b50565b6000806118a16118d5565b9050600c5481106118cd576118c761271061091d60105484611f1190919063ffffffff16565b91505090565b600091505090565b600080610a14612963565b6006546001600160a01b031633146119285760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b801561193357600080fd5b600f5460408051918252602082018390527f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a910160405180910390a1600f55565b428410156119c45760405162461bcd60e51b815260206004820152600f60248201527f7065726d69743a3a6578706972656400000000000000000000000000000000006044820152606401610a74565b6001600160a01b038716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a919086611a11836142a5565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050611a728882868686612be9565b611a7d888888611e03565b5050505050505050565b6000611a9d611a94610ff5565b60025490611f11565b600003611aa8575090565b611021611ab3610ff5565b60025461091d908590611f11565b6006546001600160a01b03163314611b095760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b600d5460408051918252602082018390527fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f910160405180910390a1600d55565b6000611b57611a94610ff5565b600003611b6657506000919050565b61102160025461091d611b77610ff5565b8590611f11565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b6000604051611bb391906142be565b6040519081900390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6006546001600160a01b03163314611c665760405162461bcd60e51b8152602060048201819052602482015260008051602061469e8339815191526044820152606401610a74565b6001600160a01b038116611ce25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a74565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b323314611d8d5760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79454f410000000000000000000000006044820152606401610a74565b600080611d98612963565b91509150600c54811015611dee5760405162461bcd60e51b815260206004820152601e60248201527f4d617374657243686566537472617465677956313a3a7265696e7665737400006044820152606401610a74565b610b0782612d49565b6000610a148284614359565b6001600160a01b038316611e595760405162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f2061646472657373000000006044820152606401610a74565b6001600160a01b038216611eaf5760405162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f206164647265737300006044820152606401610a74565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610a148284614371565b6000610a148284614390565b6000610a1482846143b2565b60008184841115611f595760405162461bcd60e51b8152600401610a749190614000565b505050900390565b6001600160a01b038216611fdd5760405162461bcd60e51b815260206004820152603460248201527f5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657260448201527f20746f20746865207a65726f20616464726573730000000000000000000000006064820152608401610a74565b61201a816040518060600160405280602e8152602001614714602e91396001600160a01b0386166000908152600460205260409020549190611f35565b6001600160a01b0380851660009081526004602052604080822093909355908416815220546120499082611df7565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f049085815260200190565b6118937f000000000000000000000000000000000000000000000000000000000000000082612e71565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015612116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213a9190614259565b6121ac5760405162461bcd60e51b815260206004820152602a60248201527f4d617374657243686566537472617465677956313a3a5452414e534645525f4660448201527f524f4d5f4641494c4544000000000000000000000000000000000000000000006064820152608401610a74565b505050565b6121ee816040518060600160405280602781526020016146ed602791396001600160a01b0385166000908152600460205260409020549190611f35565b60046000846001600160a01b03166001600160a01b031681526020019081526020016000208190555061223e81604051806060016040528060278152602001614677602791396002549190611f35565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b600e5460ff1615156001146122de5760405162461bcd60e51b815260206004820152601e60248201527f4d617374657243686566537472617465677956313a3a5f6465706f73697400006044820152606401610a74565b600d541561230b576000806122f1612963565b91509150600d548111156123085761230882612d49565b50505b6009546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561237b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239f9190614259565b6124115760405162461bcd60e51b815260206004820152602560248201527f4d617374657243686566537472617465677956313a3a7472616e73666572206660448201527f61696c65640000000000000000000000000000000000000000000000000000006064820152608401610a74565b60008061241f612710610913565b9050612437846124326107f78685611f29565b612efa565b61244083612f7e565b836001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c84604051610aef91815260200190565b600a546001600160a01b0383811691161461279757806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f291906143c9565b6001600160a01b0316826001600160a01b03160361261457600a54604080517fd21220a700000000000000000000000000000000000000000000000000000000815290516001600160a01b039283169284169163d21220a79160048083019260209291908290030181865afa15801561256f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259391906143c9565b6001600160a01b03161461260f5760405162461bcd60e51b815260206004820152603a60248201527f537761702070616972207377617050616972506f6f6c52657761726420646f6560448201527f73206e6f7420636f6e7461696e2072657761726420746f6b656e0000000000006064820152608401610a74565b612797565b600a54604080517f0dfe168100000000000000000000000000000000000000000000000000000000815290516001600160a01b0392831692841691630dfe16819160048083019260209291908290030181865afa158015612679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269d91906143c9565b6001600160a01b03161480156127255750816001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271a91906143c9565b6001600160a01b0316145b6127975760405162461bcd60e51b815260206004820152603a60248201527f537761702070616972207377617050616972506f6f6c52657761726420646f6560448201527f73206e6f7420636f6e7461696e2072657761726420746f6b656e0000000000006064820152608401610a74565b6001600160a01b03828116600090815260136020526040902080546001600160a01b0319169183169190911790556014546127d3906001611df7565b6014555050565b6017546040517f93f1a40b000000000000000000000000000000000000000000000000000000008152600481018390523060248201526000916001600160a01b0316906393f1a40b906044016040805180830381865afa158015612842573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286691906143e6565b5092915050565b6017546040517f2f940c70000000000000000000000000000000000000000000000000000000008152600481018390523060248201526001600160a01b0390911690632f940c7090604401600060405180830381600087803b1580156128d257600080fd5b505af11580156128e6573d6000803e3d6000fd5b505060095460175460405163095ea7b360e01b81526001600160a01b039182166004820152600060248201529116925063095ea7b391506044016020604051808303816000875af115801561293f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b079190614259565b60606000806129917f000000000000000000000000000000000000000000000000000000000000000061301e565b600a546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156129df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a039190614276565b905060005b8251811015612bdf576000838281518110612a2557612a2561440a565b6020026020010151600001519050600060136000868581518110612a4b57612a4b61440a565b602090810291909101810151516001600160a01b03908116835290820192909252604090810160009081205491516370a0823160e01b81523060048201529183169350918416906370a0823190602401602060405180830381865afa158015612ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612adc9190614276565b600a549091506001600160a01b03848116911614612b96576000612b26878681518110612b0b57612b0b61440a565b60200260200101516020015183611df790919063ffffffff16565b9050600081118015612b4057506001600160a01b03831615155b15612b9057600a54612b6a90612b6390839087906001600160a01b03168761337d565b8790611df7565b955080878681518110612b7f57612b7f61440a565b602002602001015160200181815250505b50612bc9565b612bc6868581518110612bab57612bab61440a565b60200260200101516020015186611df790919063ffffffff16565b94505b5050508080612bd7906142a5565b915050612a08565b5090939092509050565b6000612bf3611b7e565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810186905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612c99573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590612ccf5750866001600160a01b0316816001600160a01b0316145b612d405760405162461bcd60e51b8152602060048201526024808201527f417263683a3a76616c69646174655369673a20696e76616c6964207369676e6160448201527f74757265000000000000000000000000000000000000000000000000000000006064820152608401610a74565b50505050505050565b612d727f000000000000000000000000000000000000000000000000000000000000000061343b565b6000612d7d826134b4565b90506000612d9c61271061091d60115485611f1190919063ffffffff16565b90508015612dc157600a54600b54612dc1916001600160a01b039081169116836120c7565b6000612dde61271061091d60105486611f1190919063ffffffff16565b90508015612dfd57600a54612dfd906001600160a01b031633836120c7565b6000612e1b612e1683612e108787611f29565b90611f29565b61368d565b9050612e2681612f7e565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234612e4f610ff5565b6002546040805192835260208301919091520160405180910390a15050505050565b6017546040517f0ad58d2f00000000000000000000000000000000000000000000000000000000815260048101849052602481018390523060448201526001600160a01b0390911690630ad58d2f906064015b600060405180830381600087803b158015612ede57600080fd5b505af1158015612ef2573d6000803e3d6000fd5b505050505050565b600254612f079082611df7565b6002556001600160a01b038216600090815260046020526040902054612f2d9082611df7565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061227b9085815260200190565b60008111612ff45760405162461bcd60e51b815260206004820152602960248201527f4d617374657243686566537472617465677956313a3a5f7374616b654465706f60448201527f736974546f6b656e7300000000000000000000000000000000000000000000006064820152608401610a74565b6118937f0000000000000000000000000000000000000000000000000000000000000000826136bc565b6017546040517f98969e82000000000000000000000000000000000000000000000000000000008152600481018390523060248201526060916000916001600160a01b03909116906398969e8290604401602060405180830381865afa15801561308c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b09190614276565b6017546040517fc346253d000000000000000000000000000000000000000000000000000000008152600481018690529192506000916001600160a01b039091169063c346253d90602401602060405180830381865afa158015613118573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313c91906143c9565b905060606001600160a01b038216156132f9576040517fd63b3c49000000000000000000000000000000000000000000000000000000008152600060048201819052306024830152604482018590529081906001600160a01b0385169063d63b3c4990606401600060405180830381865afa1580156131bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131e791908101906144f6565b815191935091506131f9906001611df7565b67ffffffffffffffff81111561321157613211614420565b60405190808252806020026020018201604052801561325657816020015b604080518082019091526000808252602082015281526020019060019003908161322f5790505b50925060005b82518110156132f15760405180604001604052808483815181106132825761328261440a565b60200260200101516001600160a01b031681526020018383815181106132aa576132aa61440a565b6020026020010151815250848260016132c39190614359565b815181106132d3576132d361440a565b602002602001018190525080806132e9906142a5565b91505061325c565b505050613338565b60408051600180825281830190925290816020015b604080518082019091526000808252602082015281526020019060019003908161330e5790505090505b604080518082019091526018546001600160a01b03168152602081018490528151829060009061336a5761336a61440a565b6020908102919091010152949350505050565b60008061338a858561378d565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156133ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f291906145d2565b5091509150866001600160a01b0316836001600160a01b03161461341257905b61342f88836001600160701b0316836001600160701b03166137be565b98975050505050505050565b6017546040517f18fccc76000000000000000000000000000000000000000000000000000000008152600481018390523060248201526001600160a01b03909116906318fccc7690604401600060405180830381600087803b1580156134a057600080fd5b505af1158015610c1a573d6000803e3d6000fd5b600a546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015613501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135259190614276565b905060005b83518110156128665760008482815181106135475761354761440a565b602090810291909101810151516001600160a01b0380821660009081526013909352604083205488519294501691908790859081106135885761358861440a565b6020026020010151602001519050600081111561367757600a546001600160a01b03908116908416036136405747801561363a5773b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561360b57600080fd5b505af115801561361f573d6000803e3d6000fd5b50505050506136378287611df790919063ffffffff16565b95505b50613677565b6001600160a01b0382161561367757600a546136749061366d90839086906001600160a01b03168661380c565b8690611df7565b94505b5050508080613685906142a5565b91505061352a565b600a546009546015546016546000936110219386936001600160a01b0392831693918316929081169116613999565b60095460175460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af1158015613711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137359190614259565b506017546040517f8dbdbe6d00000000000000000000000000000000000000000000000000000000815260048101849052602481018390523060448201526001600160a01b0390911690638dbdbe6d90606401612ec4565b600080826001600160a01b0316846001600160a01b0316106137b05782846137b3565b83835b915091509250929050565b6000806137cd856103e5611f11565b905060006137db8285611f11565b905060006137f5836137ef886103e8611f11565b90611df7565b90506138018282611f1d565b979650505050505050565b600080613819858561378d565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561385d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061388191906145d2565b5091509150866001600160a01b0316836001600160a01b0316146138a157905b6000806138c18a856001600160701b0316856001600160701b03166137be565b9050886001600160a01b0316856001600160a01b0316146138de57905b6138f26001600160a01b038a16888c613b4b565b604080516000815260208101918290527f022c0d9f000000000000000000000000000000000000000000000000000000009091526001600160a01b0388169063022c0d9f9061394a9085908590309060248101614622565b600060405180830381600087803b15801561396457600080fd5b505af1158015613978573d6000803e3d6000fd5b50505050818111613989578161398b565b805b9a9950505050505050505050565b6000806139a7876002611f1d565b905060008111613a1f5760405162461bcd60e51b815260206004820152602f60248201527f4465784c6962726172793a3a5f636f6e76657274526577617264546f6b656e7360448201527f546f4465706f736974546f6b656e7300000000000000000000000000000000006064820152608401610a74565b6000856001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a8391906143c9565b9050816001600160a01b0388811690831614613aa857613aa58389848961380c565b90505b6000876001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0c91906143c9565b9050836001600160a01b038a811690831614613b3157613b2e858b848a61380c565b90505b613b3c898483613bb2565b9b9a5050505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526121ac908490613da7565b6000806000856001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c1991906145d2565b50915091506000613c3d86846001600160701b0316846001600160701b0316613e8c565b905084811115613c6a57849050613c6785836001600160701b0316856001600160701b0316613e8c565b95505b613ce18787896001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd191906143c9565b6001600160a01b03169190613b4b565b613d248782896001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cad573d6000803e3d6000fd5b6040517f6a6278420000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03881690636a627842906024016020604051808303816000875af1158015613d83573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138019190614276565b6000613dfc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613ea49092919063ffffffff16565b8051909150156121ac5780806020019051810190613e1a9190614259565b6121ac5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610a74565b6000613e9c8361091d8685611f11565b949350505050565b6060613e9c8484600085856001600160a01b0385163b613f065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a74565b600080866001600160a01b03168587604051613f22919061465a565b60006040518083038185875af1925050503d8060008114613f5f576040519150601f19603f3d011682016040523d82523d6000602084013e613f64565b606091505b509150915061380182828660608315613f7e575081610a14565b825115613f8e5782518084602001fd5b8160405162461bcd60e51b8152600401610a749190614000565b60005b83811015613fc3578181015183820152602001613fab565b838111156118835750506000910152565b60008151808452613fec816020860160208601613fa8565b601f01601f19169290920160200192915050565b602081526000610a146020830184613fd4565b6001600160a01b038116811461189357600080fd5b6000806040838503121561403b57600080fd5b823561404681614013565b946020939093013593505050565b60008060006060848603121561406957600080fd5b833561407481614013565b9250602084013561408481614013565b929592945050506040919091013590565b6000602082840312156140a757600080fd5b5035919050565b600080604083850312156140c157600080fd5b82356140cc81614013565b915060208301356140dc81614013565b809150509250929050565b6000602082840312156140f957600080fd5b8135610a1481614013565b803560ff8116811461411557600080fd5b919050565b600080600080600060a0868803121561413257600080fd5b853594506020860135935061414960408701614104565b94979396509394606081013594506080013592915050565b801515811461189357600080fd5b60006020828403121561418157600080fd5b8135610a1481614161565b6000806040838503121561419f57600080fd5b8235915060208301356140dc81614161565b600080600080600080600060e0888a0312156141cc57600080fd5b87356141d781614013565b965060208801356141e781614013565b9550604088013594506060880135935061420360808901614104565b925060a0880135915060c0880135905092959891949750929550565b600181811c9082168061423357607f821691505b60208210810361425357634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561426b57600080fd5b8151610a1481614161565b60006020828403121561428857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016142b7576142b761428f565b5060010190565b600080835481600182811c9150808316806142da57607f831692505b602080841082036142f957634e487b7160e01b86526022600452602486fd5b81801561430d576001811461431e5761434b565b60ff1986168952848901965061434b565b60008a81526020902060005b868110156143435781548b82015290850190830161432a565b505084890196505b509498975050505050505050565b6000821982111561436c5761436c61428f565b500190565b600081600019048311821515161561438b5761438b61428f565b500290565b6000826143ad57634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156143c4576143c461428f565b500390565b6000602082840312156143db57600080fd5b8151610a1481614013565b600080604083850312156143f957600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561445f5761445f614420565b604052919050565b600067ffffffffffffffff82111561448157614481614420565b5060051b60200190565b600082601f83011261449c57600080fd5b815160206144b16144ac83614467565b614436565b82815260059290921b840181019181810190868411156144d057600080fd5b8286015b848110156144eb57805183529183019183016144d4565b509695505050505050565b6000806040838503121561450957600080fd5b825167ffffffffffffffff8082111561452157600080fd5b818501915085601f83011261453557600080fd5b815160206145456144ac83614467565b82815260059290921b8401810191818101908984111561456457600080fd5b948201945b8386101561458b57855161457c81614013565b82529482019490820190614569565b918801519196509093505050808211156145a457600080fd5b506145b18582860161448b565b9150509250929050565b80516001600160701b038116811461411557600080fd5b6000806000606084860312156145e757600080fd5b6145f0846145bb565b92506145fe602085016145bb565b9150604084015163ffffffff8116811461461757600080fd5b809150509250925092565b8481528360208201526001600160a01b03831660408201526080606082015260006146506080830184613fd4565b9695505050505050565b6000825161466c818460208701613fa8565b919091019291505056fe5f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c794f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65727472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e63655f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365a2646970667358221220682fb8cb40cef4715ae0948c495bc933e6278348fdb32df3d9755be34d47b54364736f6c634300080d0033537761702070616972207377617050616972506f6f6c52657761726420646f6573206e6f7420636f6e7461696e2072657761726420746f6b656e0000000000004f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000e0100ab771e9288e0aa97e11557e6654c3a9665000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000060781c2586d68229fde47564546784ab3faca982000000000000000000000000d7538cabbf8605bde1f4901b47b8d42c61de036700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0100ab771e9288e0aa97e11557e6654c3a966500000000000000000000000000000000000000000000000000000000000002000000000000000000000000001f806f7c8ded893fd3cae279191ad7aa3798e9280000000000000000000000000000000000000000000000000000000000000037000000000000000000000000302404cb8f34713a8b8dbf9b4989a41252332068000000000000000000000000000000000000000000000000002386f26fc1000000000000000000000000000000000000000000000000000000000000000002bc0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000001d5969656c642059616b3a2050616e676f6c696e20555344432d415641580000000000000000000000000000000000000000000000000000000000000000000000