[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "address", "name": "_rewardController", "type": "address" }, { "internalType": "address", "name": "_tokenDelegator", "type": "address" }, { "internalType": "address", "name": "_rewardToken0", "type": "address" }, { "internalType": "address", "name": "_rewardToken1", "type": "address" }, { "internalType": "address", "name": "_swapPairToken0", "type": "address" }, { "internalType": "address", "name": "_swapPairToken1", "type": "address" }, { "internalType": "address", "name": "_timelock", "type": "address" }, { "internalType": "uint256", "name": "_minMinting", "type": "uint256" }, { "internalType": "uint256", "name": "_leverageLevel", "type": "uint256" }, { "internalType": "uint256", "name": "_leverageBips", "type": "uint256" }, { "internalType": "uint256", "name": "_minTokensToReinvest", "type": "uint256" }, { "internalType": "uint256", "name": "_adminFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "_devFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "_reinvestRewardBips", "type": "uint256" } ], "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": "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": "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": [], "name": "getActualLeverage", "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": "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": [], "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": "rewardToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "setAllowances", "outputs": [], "stateMutability": "nonpayable", "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": "_leverageLevel", "type": "uint256" }, { "internalType": "uint256", "name": "_leverageBips", "type": "uint256" } ], "name": "updateLeverage", "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" }, { "stateMutability": "payable", "type": "receive" } ]
60c060405260096080819052685969656c642059616b60b81b60a09081526200002c91600091906200123f565b506040805180820190915260038082526216549560ea1b602090920191825262000059916001916200123f565b503480156200006757600080fd5b50604051620061863803806200618683398181016040526102008110156200008e57600080fd5b8101908080516040519392919084640100000000821115620000af57600080fd5b908301906020820185811115620000c557600080fd5b8251640100000000811182820188101715620000e057600080fd5b82525081516020918201929091019080838360005b838110156200010f578181015183820152602001620000f5565b50505050905090810190601f1680156200013d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c086015160e08701516101008801516101208901516101408a01516101608b01516101808c01516101a08d01516101c08e01516101e0909e01519c9f509a9d50989b979a969995989497939692959194909390926000620001bc620003f0565b600680546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620060c8833981519152908290a3508f60009080519060200190620002119291906200123f565b508e600960006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d601260006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c601360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b601460006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a601560006101000a8154816001600160a01b0302191690836001600160a01b03160217905550601560009054906101000a90046001600160a01b0316600a60006101000a8154816001600160a01b0302191690836001600160a01b0316021790555086601a819055506200032a8686620003f460201b60201c565b600b80546001600160a01b0319163317905562000346620003ff565b620003528a8a620005ac565b6200035c62000b44565b620003678462000cbc565b620003728362000d66565b6200037d8262000e56565b620003888162000f32565b6200039460016200100e565b6200039f88620010d4565b604080516000808252602082015281517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234929181900390910190a150505050505050505050505050505050620012db565b3390565b601891909155601955565b60408051600180825281830190925260609160208083019080368337505060135482519293506001600160a01b0316918391506000906200043c57fe5b6001600160a01b03928316602091820292909201810191909152601254604051631853304760e31b815260048101838152855160248301528551929094169363c299823893869391928392604490910191858101910280838360005b83811015620004b257818101518382015260200162000498565b5050505090500192505050600060405180830381600087803b158015620004d857600080fd5b505af1158015620004ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156200051757600080fd5b81019080805160405193929190846401000000008211156200053857600080fd5b9083019060208201858111156200054e57600080fd5b82518660208202830111640100000000821117156200056c57600080fd5b82525081516020918201928201910280838360005b838110156200059b57818101518382015260200162000581565b505050509050016040525050505050565b6001600160a01b038216620005f35760405162461bcd60e51b81526004018080602001828103825260298152602001806200607f6029913960400191505060405180910390fd5b6001600160a01b0381166200063a5760405162461bcd60e51b81526004018080602001828103825260298152602001806200610f6029913960400191505060405180910390fd5b816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200067457600080fd5b505afa15801562000689573d6000803e3d6000fd5b505050506040513d6020811015620006a057600080fd5b50516014546001600160a01b0390811691161480620007345750816001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620006f457600080fd5b505afa15801562000709573d6000803e3d6000fd5b505050506040513d60208110156200072057600080fd5b50516014546001600160a01b039081169116145b620007715760405162461bcd60e51b81526004018080602001828103825260278152602001806200615f6027913960400191505060405180910390fd5b816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620007ab57600080fd5b505afa158015620007c0573d6000803e3d6000fd5b505050506040513d6020811015620007d757600080fd5b50516015546001600160a01b03908116911614806200086b5750816001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200082b57600080fd5b505afa15801562000840573d6000803e3d6000fd5b505050506040513d60208110156200085757600080fd5b50516015546001600160a01b039081169116145b620008a85760405162461bcd60e51b8152600401808060200182810382526027815260200180620060e86027913960400191505060405180910390fd5b806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620008e257600080fd5b505afa158015620008f7573d6000803e3d6000fd5b505050506040513d60208110156200090e57600080fd5b50516009546001600160a01b0390811691161480620009a25750806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200096257600080fd5b505afa15801562000977573d6000803e3d6000fd5b505050506040513d60208110156200098e57600080fd5b50516009546001600160a01b039081169116145b620009df5760405162461bcd60e51b8152600401808060200182810382526027815260200180620061386027913960400191505060405180910390fd5b806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000a1957600080fd5b505afa15801562000a2e573d6000803e3d6000fd5b505050506040513d602081101562000a4557600080fd5b50516015546001600160a01b039081169116148062000ad95750806001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801562000a9957600080fd5b505afa15801562000aae573d6000803e3d6000fd5b505050506040513d602081101562000ac557600080fd5b50516015546001600160a01b039081169116145b62000b165760405162461bcd60e51b8152600401808060200182810382526027815260200180620060326027913960400191505060405180910390fd5b601680546001600160a01b039384166001600160a01b03199182161790915560178054929093169116179055565b62000b4e620003f0565b6001600160a01b031662000b61620011ce565b6001600160a01b03161462000bac576040805162461bcd60e51b81526020600482018190526024820152600080516020620060a8833981519152604482015290519081900360640190fd5b6009546013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801562000c0757600080fd5b505af115801562000c1c573d6000803e3d6000fd5b505050506040513d602081101562000c3357600080fd5b50506013546040805163095ea7b360e01b81526001600160a01b039092166004830181905260001960248401529051909163095ea7b39160448083019260209291908290030181600087803b15801562000c8c57600080fd5b505af115801562000ca1573d6000803e3d6000fd5b505050506040513d602081101562000cb857600080fd5b5050565b62000cc6620003f0565b6001600160a01b031662000cd9620011ce565b6001600160a01b03161462000d24576040805162461bcd60e51b81526020600482018190526024820152600080516020620060a8833981519152604482015290519081900360640190fd5b600c54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600c55565b62000d70620003f0565b6001600160a01b031662000d83620011ce565b6001600160a01b03161462000dce576040805162461bcd60e51b81526020600482018190526024820152600080516020620060a8833981519152604482015290519081900360640190fd5b61271062000e08600f5462000df460115485620011dd60201b620029021790919060201c565b620011dd60201b620029021790919060201c565b111562000e1457600080fd5b601054604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601055565b62000e60620003f0565b6001600160a01b031662000e73620011ce565b6001600160a01b03161462000ebe576040805162461bcd60e51b81526020600482018190526024820152600080516020620060a8833981519152604482015290519081900360640190fd5b61271062000ee4600f5462000df460105485620011dd60201b620029021790919060201c565b111562000ef057600080fd5b601154604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601155565b62000f3c620003f0565b6001600160a01b031662000f4f620011ce565b6001600160a01b03161462000f9a576040805162461bcd60e51b81526020600482018190526024820152600080516020620060a8833981519152604482015290519081900360640190fd5b61271062000fc060115462000df460105485620011dd60201b620029021790919060201c565b111562000fcc57600080fd5b600f54604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1600f55565b62001018620003f0565b6001600160a01b03166200102b620011ce565b6001600160a01b03161462001076576040805162461bcd60e51b81526020600482018190526024820152600080516020620060a8833981519152604482015290519081900360640190fd5b600e5460ff16151581151514156200108d57600080fd5b600e805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b620010de620003f0565b6001600160a01b0316620010f1620011ce565b6001600160a01b0316146200113c576040805162461bcd60e51b81526020600482018190526024820152600080516020620060a8833981519152604482015290519081900360640190fd5b6001600160a01b038116620011835760405162461bcd60e51b8152600401808060200182810382526026815260200180620060596026913960400191505060405180910390fd5b6006546040516001600160a01b03808416921690600080516020620060c883398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031690565b60008282018381101562001238576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200128257805160ff1916838001178555620012b2565b82800160010185558215620012b2579182015b82811115620012b257825182559160200191906001019062001295565b50620012c0929150620012c4565b5090565b5b80821115620012c05760008155600101620012c5565b614d4780620012eb6000396000f3fe60806040526004361061036f5760003560e01c80638da5cb5b116101c6578063c89039c5116100f7578063dd8ce4d611610095578063ed24911d1161006f578063ed24911d14610c2d578063f2fde38b14610c42578063f7c618c114610c75578063fdb5a03e14610c8a576103bf565b8063dd8ce4d614610baf578063e21ac82514610bd9578063eab89a5a14610c03576103bf565b8063da09c72c116100d1578063da09c72c14610b35578063db8dd95c14610b4a578063dbd9a4d414610b5f578063dd62ed3e14610b74576103bf565b8063c89039c514610a98578063cff1b6ef14610aad578063d505accf14610ad7576103bf565b8063a9059cbb11610164578063b6b55f251161013e578063b6b55f2514610a2f578063b9e57b8014610a59578063bd079f5514610a6e578063c4b24a4614610a83576103bf565b8063a9059cbb146109af578063ac0d31ff146109e8578063b52a321f14610a1a576103bf565b806399729ec1116101a057806399729ec1146109165780639e4e731814610940578063a24159d314610955578063a8ae2b7c14610985576103bf565b80638da5cb5b1461089d5780639291d563146108ce57806395d89b4114610901576103bf565b80634bebd1e7116102a05780637ae267731161023e578063818372301161021857806381837230146107f25780638980f11f1461081c5780638aff733d146108555780638b73e6061461086a576103bf565b80637ae267731461076f5780637d882097146107aa5780637ecebe00146107bf576103bf565b80635ea682ea1161027a5780635ea682ea146106fd57806370a0823114610712578063715018a614610745578063789139bc1461075a576103bf565b80634bebd1e7146106745780634e77ace5146106a75780634ebb7916146106d3576103bf565b80632e1a7d4d1161030d578063313ce567116102e7578063313ce567146105bc5780633bdc6e72146105e7578063483c2ef0146105fc5780634a970be71461062f576103bf565b80632e1a7d4d146105445780632f4f21e21461056e57806330adf81f146105a7576103bf565b80630f23475d116103495780630f23475d146104c257806318160ddd146104d757806320606b70146104ec57806323b872dd14610501576103bf565b806306fdde03146103c4578063076771111461044e578063095ea7b314610475576103bf565b366103bf576012546001600160a01b031633146103bd5760405162461bcd60e51b81526004018080602001828103825260258152602001806149f96025913960400191505060405180910390fd5b005b600080fd5b3480156103d057600080fd5b506103d9610c9f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104135781810151838201526020016103fb565b50505050905090810190601f1680156104405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561045a57600080fd5b50610463610d2d565b60408051918252519081900360200190f35b34801561048157600080fd5b506104ae6004803603604081101561049857600080fd5b506001600160a01b038135169060200135610d33565b604080519115158252519081900360200190f35b3480156104ce57600080fd5b50610463610d4a565b3480156104e357600080fd5b50610463610d5a565b3480156104f857600080fd5b50610463610d60565b34801561050d57600080fd5b506104ae6004803603606081101561052457600080fd5b506001600160a01b03813581169160208101359091169060400135610d84565b34801561055057600080fd5b506103bd6004803603602081101561056757600080fd5b5035610e66565b34801561057a57600080fd5b506103bd6004803603604081101561059157600080fd5b506001600160a01b038135169060200135610f33565b3480156105b357600080fd5b50610463610f3d565b3480156105c857600080fd5b506105d1610f61565b6040805160ff9092168252519081900360200190f35b3480156105f357600080fd5b50610463610f66565b34801561060857600080fd5b506104ae6004803603602081101561061f57600080fd5b50356001600160a01b0316610f6c565b34801561063b57600080fd5b506103bd600480360360a081101561065257600080fd5b5080359060208101359060ff6040820135169060608101359060800135610f81565b34801561068057600080fd5b506103bd6004803603602081101561069757600080fd5b50356001600160a01b031661103a565b3480156106b357600080fd5b506103bd600480360360208110156106ca57600080fd5b50351515611176565b3480156106df57600080fd5b506103bd600480360360208110156106f657600080fd5b5035611235565b34801561070957600080fd5b50610463611311565b34801561071e57600080fd5b506104636004803603602081101561073557600080fd5b50356001600160a01b0316611317565b34801561075157600080fd5b506103bd611336565b34801561076657600080fd5b506104636113ef565b34801561077b57600080fd5b506103bd6004803603604081101561079257600080fd5b506001600160a01b03813581169160200135166113f5565b3480156107b657600080fd5b506104636114e4565b3480156107cb57600080fd5b50610463600480360360208110156107e257600080fd5b50356001600160a01b03166115a0565b3480156107fe57600080fd5b506103bd6004803603602081101561081557600080fd5b50356115b2565b34801561082857600080fd5b506103bd6004803603604081101561083f57600080fd5b506001600160a01b038135169060200135611656565b34801561086157600080fd5b506104636117aa565b34801561087657600080fd5b506103bd6004803603602081101561088d57600080fd5b50356001600160a01b03166117b0565b3480156108a957600080fd5b506108b2611917565b604080516001600160a01b039092168252519081900360200190f35b3480156108da57600080fd5b506103bd600480360360208110156108f157600080fd5b50356001600160a01b0316611926565b34801561090d57600080fd5b506103d96119fc565b34801561092257600080fd5b506103bd6004803603602081101561093957600080fd5b5035611a56565b34801561094c57600080fd5b50610463611b29565b34801561096157600080fd5b506103bd6004803603604081101561097857600080fd5b5080359060200135611b4d565b34801561099157600080fd5b506103bd600480360360208110156109a857600080fd5b5035611c4e565b3480156109bb57600080fd5b506104ae600480360360408110156109d257600080fd5b506001600160a01b038135169060200135611d1b565b3480156109f457600080fd5b506103bd60048036036040811015610a0b57600080fd5b50803590602001351515611d28565b348015610a2657600080fd5b506104ae612042565b348015610a3b57600080fd5b506103bd60048036036020811015610a5257600080fd5b503561204b565b348015610a6557600080fd5b50610463612058565b348015610a7a57600080fd5b50610463612099565b348015610a8f57600080fd5b5061046361209f565b348015610aa457600080fd5b506108b26120aa565b348015610ab957600080fd5b506103bd60048036036020811015610ad057600080fd5b50356120b9565b348015610ae357600080fd5b506103bd600480360360e0811015610afa57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135612186565b348015610b4157600080fd5b506108b2612286565b348015610b5657600080fd5b50610463612295565b348015610b6b57600080fd5b506103bd61236b565b348015610b8057600080fd5b5061046360048036036040811015610b9757600080fd5b506001600160a01b03813581169160200135166124d3565b348015610bbb57600080fd5b5061046360048036036020811015610bd257600080fd5b50356124fe565b348015610be557600080fd5b506103bd60048036036020811015610bfc57600080fd5b5035612538565b348015610c0f57600080fd5b5061046360048036036020811015610c2657600080fd5b50356125dc565b348015610c3957600080fd5b5061046361260d565b348015610c4e57600080fd5b506103bd60048036036020811015610c6557600080fd5b50356001600160a01b031661271a565b348015610c8157600080fd5b506108b261282a565b348015610c9657600080fd5b506103bd612839565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d255780601f10610cfa57610100808354040283529160200191610d25565b820191906000526020600020905b815481529060010190602001808311610d0857829003601f168201915b505050505081565b60105481565b6000610d40338484612963565b5060015b92915050565b6000610d546114e4565b90505b90565b60025481565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6001600160a01b038316600081815260036020908152604080832033808552925282205491929091908214801590610dbe57506000198114155b15610e4f576000610dea856040518060600160405280602f8152602001614c48602f9139849190612a7b565b6001600160a01b0380891660008181526003602090815260408083209489168084529482529182902085905581518581529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b610e5a868686612b12565b50600195945050505050565b601a548111610ea65760405162461bcd60e51b8152600401808060200182810382526028815260200180614a1e6028913960400191505060405180910390fd5b6000610ec6600254610ec084610eba612c1f565b90612d2d565b90612d86565b90508015610f2f57610ed83383612dc8565b610ee181612e9d565b600954610ef8906001600160a01b03163383612ffc565b60408051828152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a25b5050565b610f2f82826130ba565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60075481565b60086020526000908152604090205460ff1681565b600954604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810187905260ff8616608482015260a4810185905260c4810184905290516001600160a01b039092169163d505accf9160e48082019260009290919082900301818387803b15801561101157600080fd5b505af1158015611025573d6000803e3d6000fd5b5050505061103333866130ba565b5050505050565b611042613333565b6001600160a01b0316611053611917565b6001600160a01b03161461109c576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff161561110a576040805162461bcd60e51b815260206004820152601c60248201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f7200000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600860205260409020805460ff1916600190811790915560075461113c91612902565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b61117e613333565b6001600160a01b031661118f611917565b6001600160a01b0316146111d8576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b600e5460ff16151581151514156111ee57600080fd5b600e805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b61123d613333565b6001600160a01b031661124e611917565b6001600160a01b031614611297576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b600081116112a457600080fd5b604051339082156108fc029083906000818181858888f193505050501580156112d1573d6000803e3d6000fd5b5060408051600081526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a150565b60115481565b6001600160a01b0381166000908152600460205260409020545b919050565b61133e613333565b6001600160a01b031661134f611917565b6001600160a01b031614611398576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36006805473ffffffffffffffffffffffffffffffffffffffff19169055565b600d5481565b6113fd613333565b6001600160a01b031661140e611917565b6001600160a01b031614611457576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b816001600160a01b031663095ea7b38260006040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156114af57600080fd5b505af11580156114c3573d6000803e3d6000fd5b505050506040513d60208110156114d957600080fd5b5051610f2f57600080fd5b601354604080516361bfb47160e11b815230600482015290516000928392839283926001600160a01b03169163c37f68e2916024808301926080929190829003018186803b15801561153557600080fd5b505afa158015611549573d6000803e3d6000fd5b505050506040513d608081101561155f57600080fd5b5060208101516040820151606090920151909450909250905061159882611592670de0b6b3a7640000610ec08786612d2d565b90613337565b935050505090565b60056020526000908152604090205481565b6115ba613333565b6001600160a01b03166115cb611917565b6001600160a01b031614611614576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b600c54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600c55565b61165e613333565b6001600160a01b031661166f611917565b6001600160a01b0316146116b8576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b600081116116c557600080fd5b604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b15801561172d57600080fd5b505af1158015611741573d6000803e3d6000fd5b505050506040513d602081101561175757600080fd5b505161176257600080fd5b604080516001600160a01b03841681526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a15050565b600f5481565b6117b8613333565b6001600160a01b03166117c9611917565b6001600160a01b031614611812576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b6000600754116118535760405162461bcd60e51b8152600401808060200182810382526034815260200180614a9a6034913960400191505060405180910390fd5b6001600160a01b03811660009081526008602052604090205460ff1615156001146118af5760405162461bcd60e51b815260040180806020018281038252602a815260200180614b19602a913960400191505060405180910390fd5b6001600160a01b0381166000908152600860205260409020805460ff191690556007546118dd906001613337565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b6006546001600160a01b031690565b600b546001600160a01b03163314611985576040805162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604482015290519081900360640190fd5b600b54604080516001600160a01b039283168152918316602083015280517fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c009281900390910190a1600b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d255780601f10610cfa57610100808354040283529160200191610d25565b611a5e613333565b6001600160a01b0316611a6f611917565b6001600160a01b031614611ab8576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b612710611adc600f54611ad66010548561290290919063ffffffff16565b90612902565b1115611ae757600080fd5b601154604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601155565b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b600b546001600160a01b03163314611bac576040805162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604482015290519081900360640190fd5b611bb68282613379565b611bbe613384565b60135460408051633af9e66960e01b815230600482015290516000926001600160a01b031691633af9e66991602480830192602092919082900301818787803b158015611c0a57600080fd5b505af1158015611c1e573d6000803e3d6000fd5b505050506040513d6020811015611c3457600080fd5b505190508015611c4957611c49816000613650565b505050565b611c56613333565b6001600160a01b0316611c67611917565b6001600160a01b031614611cb0576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b612710611cce601154611ad66010548561290290919063ffffffff16565b1115611cd957600080fd5b600f54604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1600f55565b6000610d40338484612b12565b611d30613333565b6001600160a01b0316611d41611917565b6001600160a01b031614611d8a576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b600954604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611dd557600080fd5b505afa158015611de9573d6000803e3d6000fd5b505050506040513d6020811015611dff57600080fd5b50519050611e0b613384565b60135460408051633af9e66960e01b815230600482015290516001600160a01b039092169163852a12e3918391633af9e669916024808201926020929091908290030181600087803b158015611e6057600080fd5b505af1158015611e74573d6000803e3d6000fd5b505050506040513d6020811015611e8a57600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092525160248083019260209291908290030181600087803b158015611ee357600080fd5b505af1158015611ef7573d6000803e3d6000fd5b505050506040513d6020811015611f0d57600080fd5b5050600954604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611f5a57600080fd5b505afa158015611f6e573d6000803e3d6000fd5b505050506040513d6020811015611f8457600080fd5b5051905083611f938284613337565b1015611fd05760405162461bcd60e51b8152600401808060200182810382526024815260200180614c246024913960400191505060405180910390fd5b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234611ff96114e4565b6002546040805192835260208301919091528051918290030190a1600e5460ff161515600114801561202d57506001831515145b1561203c5761203c6000611176565b50505050565b600e5460ff1681565b61205533826130ba565b50565b60008061206361209f565b9050600c54811061209157612089612710610ec0600f5484612d2d90919063ffffffff16565b915050610d57565b600091505090565b600c5481565b600080611598613900565b6009546001600160a01b031681565b6120c1613333565b6001600160a01b03166120d2611917565b6001600160a01b03161461211b576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b612710612139600f54611ad66011548561290290919063ffffffff16565b111561214457600080fd5b601054604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601055565b428410156121db576040805162461bcd60e51b815260206004820152600f60248201527f7065726d69743a3a657870697265640000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938a1660608401526080830189905260a083019390935260c08083018890528151808403909101815260e0909201905280519101206122718882868686613967565b61227c888888612963565b5050505050505050565b600b546001600160a01b031681565b601354604080516361bfb47160e11b815230600482015290516000928392839283926001600160a01b03169163c37f68e2916024808301926080929190829003018186803b1580156122e657600080fd5b505afa1580156122fa573d6000803e3d6000fd5b505050506040513d608081101561231057600080fd5b506020810151604082015160609092015190945090925090506000612341670de0b6b3a7640000610ec08685612d2d565b90506123626123508285613337565b610ec083670de0b6b3a7640000612d2d565b94505050505090565b612373613333565b6001600160a01b0316612384611917565b6001600160a01b0316146123cd576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b6009546013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561242757600080fd5b505af115801561243b573d6000803e3d6000fd5b505050506040513d602081101561245157600080fd5b50506013546040805163095ea7b360e01b81526001600160a01b039092166004830181905260001960248401529051909163095ea7b39160448083019260209291908290030181600087803b1580156124a957600080fd5b505af11580156124bd573d6000803e3d6000fd5b505050506040513d6020811015610f2f57600080fd5b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b600061251461250b6114e4565b60025490612d2d565b61251f575080611331565b610d4461252a6114e4565b600254610ec0908590612d2d565b612540613333565b6001600160a01b0316612551611917565b6001600160a01b03161461259a576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f9281900390910190a1600d55565b60006125e961250b6114e4565b6125f557506000611331565b610d44600254610ec06126066114e4565b8590612d2d565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b600060405180828054600181600116156101000203166002900480156126905780601f1061266e576101008083540402835291820191612690565b820191906000526020600020905b81548152906001019060200180831161267c575b505091505060405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660001b6126c9613a96565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b612722613333565b6001600160a01b0316612733611917565b6001600160a01b03161461277c576040805162461bcd60e51b81526020600482018190526024820152600080516020614bac833981519152604482015290519081900360640190fd5b6001600160a01b0381166127c15760405162461bcd60e51b8152600401808060200182810382526026815260200180614a466026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600a546001600160a01b031681565b32331461288d576040805162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79454f41000000000000000000000000604482015290519081900360640190fd5b600080600061289a613900565b925092509250600c548110156128f7576040805162461bcd60e51b815260206004820152601960248201527f42656e7169537472617465677956313a3a7265696e7665737400000000000000604482015290519081900360640190fd5b611c49838383613a9a565b60008282018381101561295c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0383166129be576040805162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038216612a19576040805162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f20616464726573730000604482015290519081900360640190fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60008184841115612b0a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612acf578181015183820152602001612ab7565b50505050905090810190601f168015612afc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216612b575760405162461bcd60e51b8152600401808060200182810382526034815260200180614bf06034913960400191505060405180910390fd5b612b94816040518060600160405280602e8152602001614ce4602e91396001600160a01b0386166000908152600460205260409020549190612a7b565b6001600160a01b038085166000908152600460205260408082209390935590841681522054612bc39082612902565b6001600160a01b0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b601354604080516305eff7ef60e21b8152306004820152905160009283926001600160a01b03909116916317bfdfbc9160248082019260209290919082900301818787803b158015612c7057600080fd5b505af1158015612c84573d6000803e3d6000fd5b505050506040513d6020811015612c9a57600080fd5b505160135460408051633af9e66960e01b815230600482015290519293506000926001600160a01b0390921691633af9e6699160248082019260209290919082900301818787803b158015612cee57600080fd5b505af1158015612d02573d6000803e3d6000fd5b505050506040513d6020811015612d1857600080fd5b50519050612d268183613337565b9250505090565b600082612d3c57506000610d44565b82820282848281612d4957fe5b041461295c5760405162461bcd60e51b8152600401808060200182810382526021815260200180614b8b6021913960400191505060405180910390fd5b600061295c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d5b565b612e0581604051806060016040528060278152602001614c98602791396001600160a01b0385166000908152600460205260409020549190612a7b565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550612e5581604051806060016040528060278152602001614b43602791396002549190612a7b565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b612ea5613384565b6013546040805163852a12e360e01b81526004810184905290516001600160a01b039092169163852a12e3916024808201926020929091908290030181600087803b158015612ef357600080fd5b505af1158015612f07573d6000803e3d6000fd5b505050506040513d6020811015612f1d57600080fd5b505115612f71576040805162461bcd60e51b815260206004820152601e60248201527f42656e7169537472617465677956313a3a72656465656d206661696c65640000604482015290519081900360640190fd5b60135460408051633af9e66960e01b815230600482015290516000926001600160a01b031691633af9e66991602480830192602092919082900301818787803b158015612fbd57600080fd5b505af1158015612fd1573d6000803e3d6000fd5b505050506040513d6020811015612fe757600080fd5b505190508015610f2f57610f2f816000613650565b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561305357600080fd5b505af1158015613067573d6000803e3d6000fd5b505050506040513d602081101561307d57600080fd5b5051611c495760405162461bcd60e51b8152600401808060200182810382526025815260200180614cbf6025913960400191505060405180910390fd5b60075415613115573360009081526008602052604090205460ff1615156001146131155760405162461bcd60e51b815260040180806020018281038252602e815260200180614a6c602e913960400191505060405180910390fd5b600e5460ff161515600114613171576040805162461bcd60e51b815260206004820152601960248201527f42656e7169537472617465677956313a3a5f6465706f73697400000000000000604482015290519081900360640190fd5b600d54156131a5576000806000613186613900565b925092509250600d548111156131a1576131a1838383613a9a565b5050505b600954604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561321857600080fd5b505af115801561322c573d6000803e3d6000fd5b505050506040513d602081101561324257600080fd5b5051613295576040805162461bcd60e51b815260206004820181905260248201527f42656e7169537472617465677956313a3a7472616e73666572206661696c6564604482015290519081900360640190fd5b8060006132a0612c1f565b905060006132b982600254612d2d90919063ffffffff16565b11156132db576132d881610ec060025486612d2d90919063ffffffff16565b91505b6132e58483613dc0565b6132ee83613e4b565b6040805184815290516001600160a01b038616917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a250505050565b3390565b600061295c83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612a7b565b601891909155601955565b601354604080516305eff7ef60e21b815230600482015290516000926001600160a01b0316916317bfdfbc91602480830192602092919082900301818787803b1580156133d057600080fd5b505af11580156133e4573d6000803e3d6000fd5b505050506040513d60208110156133fa57600080fd5b505160135460408051633af9e66960e01b815230600482015290519293506000926001600160a01b0390921691633af9e6699160248082019260209290919082900301818787803b15801561344e57600080fd5b505af1158015613462573d6000803e3d6000fd5b505050506040513d602081101561347857600080fd5b50519050600080613487614058565b915091505b831561203c5760006134a084868585614102565b9050848111156134ad5750835b6013546040805163852a12e360e01b81526004810184905290516001600160a01b039092169163852a12e3916024808201926020929091908290030181600087803b1580156134fb57600080fd5b505af115801561350f573d6000803e3d6000fd5b505050506040513d602081101561352557600080fd5b5051156135635760405162461bcd60e51b8152600401808060200182810382526021815260200180614c776021913960400191505060405180910390fd5b601354604080517f0e7527020000000000000000000000000000000000000000000000000000000081526004810184905290516001600160a01b0390921691630e752702916024808201926020929091908290030181600087803b1580156135ca57600080fd5b505af11580156135de573d6000803e3d6000fd5b505050506040513d60208110156135f457600080fd5b5051156136325760405162461bcd60e51b8152600401808060200182810382526027815260200180614af26027913960400191505060405180910390fd5b61363c8482613337565b93506136488582613337565b94505061348c565b60008061365b614058565b9150915060008490506000613685601954610ec0601854610eba898b61333790919063ffffffff16565b9050845b818310156138f757600061369f84838888614125565b9050826136ac8583612902565b11156136bf576136bc8385613337565b90505b601a548110156136cf57506138f7565b601354604080517fc5ebeaec0000000000000000000000000000000000000000000000000000000081526004810184905290516001600160a01b039092169163c5ebeaec916024808201926020929091908290030181600087803b15801561373657600080fd5b505af115801561374a573d6000803e3d6000fd5b505050506040513d602081101561376057600080fd5b50511561379e5760405162461bcd60e51b8152600401808060200182810382526021815260200180614b6a6021913960400191505060405180910390fd5b6013546040805163140e25ad60e31b81526004810184905290516001600160a01b039092169163a0712d68916024808201926020929091908290030181600087803b1580156137ec57600080fd5b505af1158015613800573d6000803e3d6000fd5b505050506040513d602081101561381657600080fd5b50511561386a576040805162461bcd60e51b815260206004820152601f60248201527f42656e7169537472617465677956313a3a6c656e64696e67206661696c656400604482015290519081900360640190fd5b60135460408051633af9e66960e01b815230600482015290516001600160a01b0390921691633af9e669916024808201926020929091908290030181600087803b1580156138b757600080fd5b505af11580156138cb573d6000803e3d6000fd5b505050506040513d60208110156138e157600080fd5b505193506138ef8282612902565b915050613689565b50505050505050565b600080600080613911600030614139565b90506000613920600130614139565b60145460155460165492935060009261394b9286926001600160a01b039182169290821691166145cb565b905082826139598184612902565b955095509550505050909192565b600061397161260d565b8560405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613a25573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590613a5b5750866001600160a01b0316816001600160a01b0316145b6138f75760405162461bcd60e51b8152600401808060200182810382526024815260200180614ace6024913960400191505060405180910390fd5b4690565b60125460408051630952c56360e01b815260006004820181905230602483015291516001600160a01b0390931692630952c5639260448084019391929182900301818387803b158015613aec57600080fd5b505af1158015613b00573d6000803e3d6000fd5b505060125460408051630952c56360e01b81526001600482015230602482015290516001600160a01b039092169350630952c563925060448082019260009290919082900301818387803b158015613b5757600080fd5b505af1158015613b6b573d6000803e3d6000fd5b505050506000821115613be15773b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015613bc757600080fd5b505af1158015613bdb573d6000803e3d6000fd5b50505050505b8215613c0e57601454601554601654613c0c9286926001600160a01b0391821692908216911661469b565b505b6000613c2b612710610ec060115485612d2d90919063ffffffff16565b90508015613c5057600a54600b54613c50916001600160a01b03908116911683612ffc565b6000613c6d612710610ec060105486612d2d90919063ffffffff16565b90508015613c9357600a54613c93906001600160a01b0316613c8d611917565b83612ffc565b6000613cb0612710610ec0600f5487612d2d90919063ffffffff16565b90508015613ccf57600a54613ccf906001600160a01b03163383612ffc565b6000613d03613ce48361159286818a8a613337565b6015546009546017546001600160a01b0392831692918216911661469b565b9050613d0e81613e4b565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234613d376114e4565b6002546040805192835260208301919091528051918290030190a150505050505050565b60008183613daa5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612acf578181015183820152602001612ab7565b506000838581613db657fe5b0495945050505050565b600254613dcd9082612902565b6002556001600160a01b038216600090815260046020526040902054613df39082612902565b6001600160a01b03831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008111613e8a5760405162461bcd60e51b8152600401808060200182810382526024815260200180614bcc6024913960400191505060405180910390fd5b6013546040805163140e25ad60e31b81526004810184905290516001600160a01b039092169163a0712d68916024808201926020929091908290030181600087803b158015613ed857600080fd5b505af1158015613eec573d6000803e3d6000fd5b505050506040513d6020811015613f0257600080fd5b505115613f56576040805162461bcd60e51b815260206004820152601f60248201527f42656e7169537472617465677956313a3a4465706f736974206661696c656400604482015290519081900360640190fd5b601354604080516305eff7ef60e21b815230600482015290516000926001600160a01b0316916317bfdfbc91602480830192602092919082900301818787803b158015613fa257600080fd5b505af1158015613fb6573d6000803e3d6000fd5b505050506040513d6020811015613fcc57600080fd5b505160135460408051633af9e66960e01b815230600482015290519293506000926001600160a01b0390921691633af9e6699160248082019260209290919082900301818787803b15801561402057600080fd5b505af1158015614034573d6000803e3d6000fd5b505050506040513d602081101561404a57600080fd5b50519050611c498183613650565b601254601354604080517f8e8f294b0000000000000000000000000000000000000000000000000000000081526001600160a01b039283166004820152815160009485948594911692638e8f294b9260248083019392829003018186803b1580156140c257600080fd5b505afa1580156140d6573d6000803e3d6000fd5b505050506040513d60408110156140ec57600080fd5b506020015193670de0b6b3a76400009350915050565b600061411c61411584610ec08786612d2d565b8690613337565b95945050505050565b600061411c8461159284610ec08988612d2d565b601254604080517f05b9783d00000000000000000000000000000000000000000000000000000000815260ff851660048201526001600160a01b0384811660248301529151600093849316916305b9783d916044808301926020929190829003018186803b1580156141aa57600080fd5b505afa1580156141be573d6000803e3d6000fd5b505050506040513d60208110156141d457600080fd5b5051601254604080517fd81c5e4500000000000000000000000000000000000000000000000000000000815260ff881660048201526001600160a01b038781166024830152825194955060009493169263d81c5e4592604480840193919291829003018186803b15801561424757600080fd5b505afa15801561425b573d6000803e3d6000fd5b505050506040513d604081101561427157600080fd5b5051601254601354604080517f88e972b800000000000000000000000000000000000000000000000000000000815260ff8a1660048201526001600160a01b0392831660248201528883166044820152905193945060009391909216916388e972b8916064808301926020929190829003018186803b1580156142f357600080fd5b505afa158015614307573d6000803e3d6000fd5b505050506040513d602081101561431d57600080fd5b5051905060006001600160e01b0383168210156143435781836001600160e01b03160390505b601354604080516370a0823160e01b81526001600160a01b03898116600483015291516000936143ca9386939116916370a0823191602480820192602092909190829003018186803b15801561439857600080fd5b505afa1580156143ac573d6000803e3d6000fd5b505050506040513d60208110156143c257600080fd5b505190612d2d565b601254604080517f4b3a0a7400000000000000000000000000000000000000000000000000000000815260ff8c1660048201526001600160a01b038b811660248301528251949550600094931692634b3a0a7492604480840193919291829003018186803b15801561443b57600080fd5b505afa15801561444f573d6000803e3d6000fd5b505050506040513d604081101561446557600080fd5b5051601254601354604080517f7937969d00000000000000000000000000000000000000000000000000000000815260ff8e1660048201526001600160a01b0392831660248201528c8316604482015290519394506000939190921691637937969d916064808301926020929190829003018186803b1580156144e757600080fd5b505afa1580156144fb573d6000803e3d6000fd5b505050506040513d602081101561451157600080fd5b5051905060006001600160e01b0383168210156145375781836001600160e01b03160390505b601354604080517f95dd91930000000000000000000000000000000000000000000000000000000081526001600160a01b038d8116600483015291516000936145a59386939116916395dd919391602480820192602092909190829003018186803b15801561439857600080fd5b90506145bb6145b48683613337565b8a90612902565b9c9b505050505050505050505050565b6000806145d885856148ab565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561461757600080fd5b505afa15801561462b573d6000803e3d6000fd5b505050506040513d606081101561464157600080fd5b50805160209091015190925090506001600160a01b038381169088161461466457905b61468f88836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff166148dc565b98975050505050505050565b6000806146a885856148ab565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156146e757600080fd5b505afa1580156146fb573d6000803e3d6000fd5b505050506040513d606081101561471157600080fd5b50805160209091015190925090506001600160a01b038381169088161461473457905b6000806147628a856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff166148dc565b9050886001600160a01b0316856001600160a01b03161461477f57905b61478a89888c614924565b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201858152604483018590523060648401819052608060848501908152845160a486018190526001600160a01b038e169663022c0d9f968a968a9691949193919260c486019290918190849084905b8381101561482757818101518382015260200161480f565b50505050905090810190601f1680156148545780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561487657600080fd5b505af115801561488a573d6000803e3d6000fd5b5050505081811161489b578161489d565b805b9a9950505050505050505050565b600080826001600160a01b0316846001600160a01b0316106148ce5782846148d1565b83835b915091509250929050565b6000806148eb856103e5612d2d565b905060006148f98285612d2d565b9050600061490d83611ad6886103e8612d2d565b90506149198282612d86565b979650505050505050565b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561497b57600080fd5b505af115801561498f573d6000803e3d6000fd5b505050506040513d60208110156149a557600080fd5b5051611c49576040805162461bcd60e51b815260206004820181905260248201527f4465784c6962726172793a3a5452414e534645525f46524f4d5f4641494c4544604482015290519081900360640190fdfe42656e7169537472617465677956313a3a7061796d656e7473206e6f7420616c6c6f77656442656e7169537472617465677956313a3a2062656c6f77206d696e696d756d2077697468647261774f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735065726d697373696f6e65643a3a6f6e6c79416c6c6f7765644465706f736974732c206e6f7420616c6c6f7765645065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f20616c6c6f776564206465706f7369746f7273417263683a3a76616c69646174655369673a20696e76616c6964207369676e617475726542656e7169537472617465677956313a3a6661696c656420746f20726570617920626f72726f775065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f7420616c6c6f7765645f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c7942656e7169537472617465677956313a3a626f72726f77696e67206661696c6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657242656e7169537472617465677956313a3a5f7374616b654465706f736974546f6b656e735f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f206164647265737342656e7169537472617465677956313a3a7265736375654465706c6f79656446756e64737472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636542656e7169537472617465677956313a3a6661696c656420746f2072656465656d5f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e636542656e7169537472617465677956313a3a5452414e534645525f46524f4d5f4641494c45445f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365a26469706673582212208521fb57616665c32792f58112b03091e82be89ce5391c358efbaf8aa0c29fe164736f6c63430007030033537761702070616972203120646f6573206e6f74206d6174636820726577617264546f6b656e314f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735377617020706169722030206973206e656365737361727920627574206e6f7420737570706c6965644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0537761702070616972203020646f6573206e6f74206d6174636820726577617264546f6b656e315377617020706169722031206973206e656365737361727920627574206e6f7420737570706c696564537761702070616972203120646f6573206e6f74206d61746368206465706f736974546f6b656e537761702070616972203020646f6573206e6f74206d6174636820726577617264546f6b656e300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000c7198437980c041c805a1edcba50c1ce5db95118000000000000000000000000486af39519b4dc9a7fccd318217352830e8ad9b4000000000000000000000000c9e5999b8e75c3feb117f6f73e664b9f3c8ca65c0000000000000000000000008729438eb15e2c8b576fcc6aecda6a148776c0f5000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c7000000000000000000000000e530dc2095ef5653205cf5ea79f8979a7028065c000000000000000000000000e28984e1ee8d431346d32bec9ec800efb643eef40000000000000000000000008d36c5c6947adccd25ef49ea1aac2ceacfff0bd7000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000009184e72a0000000000000000000000000000000000000000000000000000000000000000258000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000175969656c642059616b3a2042656e716920555344542e65000000000000000000