[ { "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": "adminFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "devFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "reinvestRewardBips", "type": "uint256" } ], "internalType": "struct MasterChefVariableRewardsStrategy.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": "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": "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" } ]
60e0604052600960a0819052685969656c642059616b60b81b60c09081526200002c916000919062001676565b506040805180820190915260038082526216549560ea1b6020909201918252620000599160019162001676565b5060016014553480156200006c57600080fd5b5060405162006825380380620068258339810160408190526200008f9162001992565b89898989898989888a8989898989896000015189898989896000620000b9620002f460201b60201c565b600680546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062006805833981519152908290a35089516200010b9060009060208d019062001676565b50600980546001600160a01b03808c166001600160a01b031992831617909255600a80548b84169083161790556080849052600b80548216732d580f9cf2fb2d09bc411532988f2afda4e7beff1790556012805487841690831617905588821660009081526013602052604081208054938a16939092169290921790555b8551811015620001de57620001d5868281518110620001a457fe5b602002602001015160000151878381518110620001bd57fe5b602002602001015160200151620002f860201b60201c565b60010162000189565b508051620001ec90620005e9565b6020810151620001fc9062000671565b60408101516200020c906200073f565b60608101516200021c90620007f9565b620002286001620008b3565b62000233836200095b565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2346000806040516200026792919062001a96565b60405180910390a1505050505050505050506200028c86898962000a1560201b60201c565b5050505050505050505086601860006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083601760006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050505050505050505062001d8e565b3390565b600a546001600160a01b038381169116146200059657806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034857600080fd5b505afa1580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000383919062001975565b6001600160a01b0316826001600160a01b031614156200045857600a546040805163d21220a760e01b815290516001600160a01b039283169284169163d21220a7916004808301926020929190829003018186803b158015620003e557600080fd5b505afa158015620003fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000420919062001975565b6001600160a01b031614620004525760405162461bcd60e51b8152600401620004499062001b21565b60405180910390fd5b62000596565b600a5460408051630dfe168160e01b815290516001600160a01b0392831692841691630dfe1681916004808301926020929190829003018186803b158015620004a057600080fd5b505afa158015620004b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004db919062001975565b6001600160a01b0316148015620005775750816001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200053157600080fd5b505afa15801562000546573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200056c919062001975565b6001600160a01b0316145b620005965760405162461bcd60e51b8152600401620004499062001b21565b6001600160a01b03828116600090815260136020908152604090912080546001600160a01b03191692841692909217909155601454620005e29160019062001638811b62001c4217901c565b6014555050565b620005f3620002f4565b6001600160a01b03166200060662001667565b6001600160a01b0316146200062f5760405162461bcd60e51b8152600401620004499062001c32565b7f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100600c54826040516200066492919062001a96565b60405180910390a1600c55565b6200067b620002f4565b6001600160a01b03166200068e62001667565b6001600160a01b031614620006b75760405162461bcd60e51b8152600401620004499062001c32565b612710620006f1600f54620006dd601154856200163860201b62001c421790919060201c565b6200163860201b62001c421790919060201c565b1115620006fd57600080fd5b7f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a601054826040516200073292919062001a96565b60405180910390a1601055565b62000749620002f4565b6001600160a01b03166200075c62001667565b6001600160a01b031614620007855760405162461bcd60e51b8152600401620004499062001c32565b612710620007ab600f54620006dd601054856200163860201b62001c421790919060201c565b1115620007b757600080fd5b7f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d65172613160115482604051620007ec92919062001a96565b60405180910390a1601155565b62000803620002f4565b6001600160a01b03166200081662001667565b6001600160a01b0316146200083f5760405162461bcd60e51b8152600401620004499062001c32565b61271062000865601154620006dd601054856200163860201b62001c421790919060201c565b11156200087157600080fd5b7fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2600f5482604051620008a692919062001a96565b60405180910390a1600f55565b620008bd620002f4565b6001600160a01b0316620008d062001667565b6001600160a01b031614620008f95760405162461bcd60e51b8152600401620004499062001c32565b600e5460ff16151581151514156200091057600080fd5b600e805460ff19168215151790556040517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e85906200095090839062001a8b565b60405180910390a150565b62000965620002f4565b6001600160a01b03166200097862001667565b6001600160a01b031614620009a15760405162461bcd60e51b8152600401620004499062001c32565b6001600160a01b038116620009ca5760405162461bcd60e51b8152600401620004499062001aa4565b6006546040516001600160a01b038084169216906000805160206200680583398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000a6457600080fd5b505afa15801562000a79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a9f919062001975565b6001600160a01b0316826001600160a01b03161415801562000b5c5750600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801562000b0b57600080fd5b505afa15801562000b20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b46919062001975565b6001600160a01b0316826001600160a01b031614155b15620012195760208301516001600160a01b031662000b8f5760405162461bcd60e51b8152600401620004499062001be9565b60408301516001600160a01b031662000bbc5760405162461bcd60e51b8152600401620004499062001cc4565b602083810151601580546001600160a01b03199081166001600160a01b03938416179182905560408088015160168054909316908516179091558051630dfe168160e01b81529051868416949290931692630dfe168192600480840193919291829003018186803b15801562000c3157600080fd5b505afa15801562000c46573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c6c919062001975565b6001600160a01b0316148062000d0a57506015546040805163d21220a760e01b815290516001600160a01b0380861693169163d21220a7916004808301926020929190829003018186803b15801562000cc457600080fd5b505afa15801562000cd9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cff919062001975565b6001600160a01b0316145b62000d295760405162461bcd60e51b8152600401620004499062001b7e565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000d7857600080fd5b505afa15801562000d8d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000db3919062001975565b6001600160a01b0316601560009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000e0b57600080fd5b505afa15801562000e20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e46919062001975565b6001600160a01b0316148062000f7f5750600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562000ea657600080fd5b505afa15801562000ebb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ee1919062001975565b6001600160a01b0316601560009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801562000f3957600080fd5b505afa15801562000f4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f74919062001975565b6001600160a01b0316145b62000f9e5760405162461bcd60e51b8152600401620004499062001c67565b600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801562000fed57600080fd5b505afa15801562001002573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001028919062001975565b6001600160a01b0316601660009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200108057600080fd5b505afa15801562001095573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010bb919062001975565b6001600160a01b03161480620011f45750600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200111b57600080fd5b505afa15801562001130573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001156919062001975565b6001600160a01b0316601660009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620011ae57600080fd5b505afa158015620011c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011e9919062001975565b6001600160a01b0316145b620012135760405162461bcd60e51b8152600401620004499062001d0d565b620013ac565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200126857600080fd5b505afa1580156200127d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012a3919062001975565b6001600160a01b0316826001600160a01b03161415620012e557600954601680546001600160a01b0319166001600160a01b03909216919091179055620013ac565b600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200133457600080fd5b505afa15801562001349573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200136f919062001975565b6001600160a01b0316826001600160a01b03161415620013ac57600954601580546001600160a01b0319166001600160a01b039092169190911790555b82600001516001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620013ea57600080fd5b505afa158015620013ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001425919062001975565b6001600160a01b0316816001600160a01b03161415620014f157816001600160a01b031683600001516001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200148757600080fd5b505afa1580156200149c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014c2919062001975565b6001600160a01b031614620014eb5760405162461bcd60e51b8152600401620004499062001b21565b62001633565b816001600160a01b031683600001516001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200153957600080fd5b505afa1580156200154e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001574919062001975565b6001600160a01b0316148015620016145750806001600160a01b031683600001516001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620015ce57600080fd5b505afa158015620015e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001609919062001975565b6001600160a01b0316145b620016335760405162461bcd60e51b8152600401620004499062001b21565b505050565b600082820183811015620016605760405162461bcd60e51b8152600401620004499062001aea565b9392505050565b6006546001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620016b957805160ff1916838001178555620016e9565b82800160010185558215620016e9579182015b82811115620016e9578251825591602001919060010190620016cc565b50620016f7929150620016fb565b5090565b5b80821115620016f75760008155600101620016fc565b80516001600160a01b03811681146200172a57600080fd5b919050565b600082601f83011262001740578081fd5b81516001600160401b038111156200175457fe5b602062001765818284020162001d6a565b82815292508083018482016040808502870184018810156200178657600080fd5b60005b85811015620017b1576200179e89846200184a565b8452928401929181019160010162001789565b50505050505092915050565b600082601f830112620017ce578081fd5b81516001600160401b03811115620017e257fe5b6020620017f8601f8301601f1916820162001d6a565b925081835284818386010111156200180f57600080fd5b60005b828110156200182f57848101820151848201830152810162001812565b82811115620018415760008284860101525b50505092915050565b6000604082840312156200185c578081fd5b604080519081016001600160401b03811182821017156200187957fe5b6040529050806200188a8362001712565b81526200189a6020840162001712565b60208201525092915050565b600060808284031215620018b8578081fd5b604051608081016001600160401b0381118282101715620018d557fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201525092915050565b60006060828403121562001918578081fd5b604051606081016001600160401b03811182821017156200193557fe5b604052905080620019468362001712565b8152620019566020840162001712565b6020820152620019696040840162001712565b60408201525092915050565b60006020828403121562001987578081fd5b620016608262001712565b6000806000806000806000806000806101e08b8d031215620019b2578586fd5b8a516001600160401b0380821115620019c9578788fd5b620019d78e838f01620017bd565b9b50620019e760208e0162001712565b9a50620019f760408e0162001712565b995062001a0760608e0162001712565b985062001a188e60808f0162001906565b975060e08d015191508082111562001a2e578687fd5b5062001a3d8d828e016200172f565b95505062001a4f6101008c0162001712565b93506101208b0151925062001a686101408c0162001712565b915062001a7a8c6101608d01620018a6565b90509295989b9194979a5092959850565b901515815260200190565b918252602082015260400190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252603a908201527f537761702070616972207377617050616972506f6f6c52657761726420646f6560408201527f73206e6f7420636f6e7461696e2072657761726420746f6b656e000000000000606082015260800190565b60208082526045908201527f53776170207061697220737570706c69656420646f6573206e6f74206861766560408201527f207468652072657761726420746f6b656e206173206f6e65206f662069742773606082015264103830b4b960d91b608082015260a00190565b60208082526029908201527f5377617020706169722030206973206e656365737361727920627574206e6f74604082015268081cdd5c1c1b1a595960ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526038908201527f537761702070616972203020737570706c69656420646f6573206e6f74206d6160408201527f74636820746865207061697220696e207175657374696f6e0000000000000000606082015260800190565b60208082526029908201527f5377617020706169722031206973206e656365737361727920627574206e6f74604082015268081cdd5c1c1b1a595960ba1b606082015260800190565b60208082526038908201527f537761702070616972203120737570706c69656420646f6573206e6f74206d6160408201527f74636820746865207061697220696e207175657374696f6e0000000000000000606082015260800190565b6040518181016001600160401b038111828210171562001d8657fe5b604052919050565b608051614a2f62001dd6600039806107e952806109985280610da25280610f4952806115eb5280611efd52806121b452806126e95280612a5e5280612ce05250614a2f6000f3fe608060405234801561001057600080fd5b50600436106103a45760003560e01c80638aff733d116101e9578063bd079f551161010f578063dd62ed3e116100ad578063ed24911d1161007c578063ed24911d146106ff578063f2fde38b14610707578063f7c618c11461071a578063fdb5a03e14610722576103a4565b8063dd62ed3e146106b3578063dd8ce4d6146106c6578063e21ac825146106d9578063eab89a5a146106ec576103a4565b8063cff1b6ef116100e9578063cff1b6ef1461067d578063d505accf14610690578063da09c72c146106a3578063dbd9a4d4146106ab576103a4565b8063bd079f5514610665578063c4b24a461461066d578063c89039c514610675576103a4565b8063a4d5e67c11610187578063ac0d31ff11610156578063ac0d31ff1461062f578063b52a321f14610642578063b6b55f251461064a578063b9e57b801461065d576103a4565b8063a4d5e67c146105e3578063a5534e71146105f6578063a8ae2b7c14610609578063a9059cbb1461061c576103a4565b80639291d563116101c35780639291d563146105ad57806395d89b41146105c057806399729ec1146105c85780639e4e7318146105db576103a4565b80638aff733d1461058a5780638b73e606146105925780638da5cb5b146105a5576103a4565b80634a970be7116102ce578063715018a61161026c5780637d8820971161023b5780637d882097146105495780637ecebe001461055157806381837230146105645780638980f11f14610577576103a4565b8063715018a61461051e578063789139bc14610526578063790854251461052e5780637ae2677314610536576103a4565b80634ebb7916116102a85780634ebb7916146104e85780635ea682ea146104fb5780635eaec0e41461050357806370a082311461050b576103a4565b80634a970be7146104af5780634bebd1e7146104c25780634e77ace5146104d5576103a4565b80632e1a7d4d116103465780633bdc6e72116103155780633bdc6e721461046c5780634005760a1461047457806340b47e1a14610489578063483c2ef01461049c576103a4565b80632e1a7d4d146104275780632f4f21e21461043c57806330adf81f1461044f578063313ce56714610457576103a4565b80630f23475d116103825780630f23475d146103fc57806318160ddd1461040457806320606b701461040c57806323b872dd14610414576103a4565b806306fdde03146103a957806307677111146103c7578063095ea7b3146103dc575b600080fd5b6103b161072a565b6040516103be9190614129565b60405180910390f35b6103cf6107b8565b6040516103be9190614083565b6103ef6103ea366004613caa565b6107be565b6040516103be9190614078565b6103cf6107d5565b6103cf610841565b6103cf610847565b6103ef610422366004613bfd565b61086b565b61043a610435366004613e1e565b610952565b005b61043a61044a366004613caa565b610a3f565b6103cf610a4d565b61045f610a71565b6040516103be91906148db565b6103cf610a76565b61047c610a7c565b6040516103be9190613fcc565b61043a610497366004613bc5565b610a8b565b6103ef6104aa366004613b8d565b610abf565b61043a6104bd366004613e95565b610ad4565b61043a6104d0366004613b8d565b610b6c565b61043a6104e3366004613d98565b610c50565b61043a6104f6366004613e1e565b610cee565b6103cf610d9a565b6103cf610da0565b6103cf610519366004613b8d565b610dc4565b61043a610de3565b6103cf610e6c565b6103cf610e72565b61043a610544366004613bc5565b610e78565b6103cf610f41565b6103cf61055f366004613b8d565b610f73565b61043a610572366004613e1e565b610f85565b61043a610585366004613caa565b611004565b6103cf611116565b61043a6105a0366004613b8d565b61111c565b61047c611222565b61043a6105bb366004613b8d565b611231565b6103b16112c4565b61043a6105d6366004613e1e565b61131e565b6103cf6113cc565b61043a6105f1366004613b8d565b6113f0565b61047c610604366004613b8d565b611454565b61043a610617366004613e1e565b61146f565b6103ef61062a366004613caa565b611517565b61043a61063d366004613e4e565b611524565b6103ef61172b565b61043a610658366004613e1e565b611734565b6103cf611741565b6103cf611782565b6103cf611788565b61047c61179a565b61043a61068b366004613e1e565b6117a9565b61043a61069e366004613c3d565b611851565b61047c611906565b61043a611915565b6103cf6106c1366004613bc5565b61196c565b6103cf6106d4366004613e1e565b611997565b61043a6106e7366004613e1e565b6119d1565b6103cf6106fa366004613e1e565b611a50565b6103cf611a81565b61043a610715366004613b8d565b611b18565b61047c611bd9565b61043a611be8565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107b05780601f10610785576101008083540402835291602001916107b0565b820191906000526020600020905b81548152906001019060200180831161079357829003601f168201915b505050505081565b60105481565b60006107cb338484611c6e565b5060015b92915050565b6000806107e0610f41565b9050600061080d7f0000000000000000000000000000000000000000000000000000000000000000611d22565b9050600061082c61081c611d28565b6108268585611d2e565b90611d68565b90506108388382611daa565b93505050505b90565b60025481565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6001600160a01b0383166000818152600360209081526040808320338085529252822054919290919082148015906108a557506000198114155b1561093b5760006108d1856040518060600160405280602f8152602001614976602f9139849190611de8565b6001600160a01b03808916600081815260036020908152604080832094891680845294909152908190208490555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610931908590614083565b60405180910390a3505b610946868686611e14565b50600195945050505050565b600061095d82611a50565b9050600081116109885760405162461bcd60e51b815260040161097f90614446565b60405180910390fd5b61099181611ef8565b60006109bc7f0000000000000000000000000000000000000000000000000000000000000000611d22565b905060006109cb61081c611d28565b6009549091506109ee906001600160a01b0316336109e98685611daa565b611f22565b6109f83385611fc3565b336001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436484604051610a319190614083565b60405180910390a250505050565b610a49828261209d565b5050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60075481565b6017546001600160a01b031681565b600b546001600160a01b03163314610ab55760405162461bcd60e51b815260040161097f9061474e565b610a498282612241565b60086020526000908152604090205460ff1681565b6009546040517fd505accf0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063d505accf90610b2990339030908a908a908a908a908a90600401614004565b600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b50505050610b65338661209d565b5050505050565b610b74612531565b6001600160a01b0316610b85611222565b6001600160a01b031614610bab5760405162461bcd60e51b815260040161097f906145f1565b6001600160a01b03811660009081526008602052604090205460ff1615610be45760405162461bcd60e51b815260040161097f9061431e565b6001600160a01b0381166000908152600860205260409020805460ff19166001908117909155600754610c1691611c42565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b610c58612531565b6001600160a01b0316610c69611222565b6001600160a01b031614610c8f5760405162461bcd60e51b815260040161097f906145f1565b600e5460ff1615158115151415610ca557600080fd5b600e805460ff19168215151790556040517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e8590610ce3908390614078565b60405180910390a150565b610cf6612531565b6001600160a01b0316610d07611222565b6001600160a01b031614610d2d5760405162461bcd60e51b815260040161097f906145f1565b60008111610d3a57600080fd5b604051339082156108fc029083906000818181858888f19350505050158015610d67573d6000803e3d6000fd5b507f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28600082604051610ce3929190614045565b60115481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152600460205260409020545b919050565b610deb612531565b6001600160a01b0316610dfc611222565b6001600160a01b031614610e225760405162461bcd60e51b815260040161097f906145f1565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b600d5481565b60145481565b610e80612531565b6001600160a01b0316610e91611222565b6001600160a01b031614610eb75760405162461bcd60e51b815260040161097f906145f1565b60405163095ea7b360e01b81526001600160a01b0383169063095ea7b390610ee6908490600090600401614045565b602060405180830381600087803b158015610f0057600080fd5b505af1158015610f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f389190613db4565b610a4957600080fd5b600080610f6d7f0000000000000000000000000000000000000000000000000000000000000000612535565b91505090565b60056020526000908152604090205481565b610f8d612531565b6001600160a01b0316610f9e611222565b6001600160a01b031614610fc45760405162461bcd60e51b815260040161097f906145f1565b7f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100600c5482604051610ff7929190614876565b60405180910390a1600c55565b61100c612531565b6001600160a01b031661101d611222565b6001600160a01b0316146110435760405162461bcd60e51b815260040161097f906145f1565b6000811161105057600080fd5b60405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb9061107e9033908590600401614045565b602060405180830381600087803b15801561109857600080fd5b505af11580156110ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d09190613db4565b6110d957600080fd5b7f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28828260405161110a929190614045565b60405180910390a15050565b600f5481565b611124612531565b6001600160a01b0316611135611222565b6001600160a01b03161461115b5760405162461bcd60e51b815260040161097f906145f1565b60006007541161117d5760405162461bcd60e51b815260040161097f90614207565b6001600160a01b03811660009081526008602052604090205460ff1615156001146111ba5760405162461bcd60e51b815260040161097f9061447d565b6001600160a01b0381166000908152600860205260409020805460ff191690556007546111e8906001611daa565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b6006546001600160a01b031690565b600b546001600160a01b0316331461125b5760405162461bcd60e51b815260040161097f9061474e565b600b546040517fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c009161129a916001600160a01b0390911690849061405e565b60405180910390a1600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107b05780601f10610785576101008083540402835291602001916107b0565b611326612531565b6001600160a01b0316611337611222565b6001600160a01b03161461135d5760405162461bcd60e51b815260040161097f906145f1565b612710611381600f5461137b60105485611c4290919063ffffffff16565b90611c42565b111561138c57600080fd5b7f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131601154826040516113bf929190614876565b60405180910390a1601155565b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b600b546001600160a01b0316331461141a5760405162461bcd60e51b815260040161097f9061474e565b6001600160a01b038116600090815260136020526040902080546001600160a01b031916905560145461144e906001611daa565b60145550565b6013602052600090815260409020546001600160a01b031681565b611477612531565b6001600160a01b0316611488611222565b6001600160a01b0316146114ae5760405162461bcd60e51b815260040161097f906145f1565b6127106114cc60115461137b60105485611c4290919063ffffffff16565b11156114d757600080fd5b7fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2600f548260405161150a929190614876565b60405180910390a1600f55565b60006107cb338484611e14565b61152c612531565b6001600160a01b031661153d611222565b6001600160a01b0316146115635760405162461bcd60e51b815260040161097f906145f1565b6009546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611594903090600401613fcc565b60206040518083038186803b1580156115ac57600080fd5b505afa1580156115c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e49190613e36565b905061160f7f00000000000000000000000000000000000000000000000000000000000000006125d7565b6009546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611640903090600401613fcc565b60206040518083038186803b15801561165857600080fd5b505afa15801561166c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116909190613e36565b90508361169d8284611daa565b10156116bb5760405162461bcd60e51b815260040161097f90614355565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2346116e4610f41565b6002546040516116f5929190614876565b60405180910390a1600e5460ff161515600114801561171657506001831515145b15611725576117256000610c50565b50505050565b600e5460ff1681565b61173e338261209d565b50565b60008061174c611788565b9050600c54811061177a57611772612710610826600f5484611d2e90919063ffffffff16565b91505061083e565b600091505090565b600c5481565b6000806117936126de565b9250505090565b6009546001600160a01b031681565b6117b1612531565b6001600160a01b03166117c2611222565b6001600160a01b0316146117e85760405162461bcd60e51b815260040161097f906145f1565b612710611806600f5461137b60115485611c4290919063ffffffff16565b111561181157600080fd5b7f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a60105482604051611844929190614876565b60405180910390a1601055565b428410156118715760405162461bcd60e51b815260040161097f9061440f565b6001600160a01b038716600090815260056020908152604080832080546001810190915590516118cc927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c92918c910161408c565b6040516020818303038152906040528051906020012090506118f1888286868661297f565b6118fc888888611c6e565b5050505050505050565b600b546001600160a01b031681565b61191d612531565b6001600160a01b031661192e611222565b6001600160a01b0316146119545760405162461bcd60e51b815260040161097f906145f1565b60405162461bcd60e51b815260040161097f90614717565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b60006119ad6119a4610f41565b60025490611d2e565b6119b8575080610dde565b6107cf6119c3610f41565b600254610826908590611d2e565b6119d9612531565b6001600160a01b03166119ea611222565b6001600160a01b031614611a105760405162461bcd60e51b815260040161097f906145f1565b7fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f600d5482604051611a43929190614876565b60405180910390a1600d55565b6000611a5d6119a4610f41565b611a6957506000610dde565b6107cf600254610826611a7a610f41565b8590611d2e565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b6000604051611ab69190613f26565b6040519081900390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6611ae8612a55565b30604051602001611afd9594939291906140c0565b60405160208183030381529060405280519060200120905090565b611b20612531565b6001600160a01b0316611b31611222565b6001600160a01b031614611b575760405162461bcd60e51b815260040161097f906145f1565b6001600160a01b038116611b7d5760405162461bcd60e51b815260040161097f9061413c565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b031681565b323314611c075760405162461bcd60e51b815260040161097f90614199565b60606000611c136126de565b91509150600c54811015611c395760405162461bcd60e51b815260040161097f90614785565b610a4982612a59565b600082820183811015611c675760405162461bcd60e51b815260040161097f906141d0565b9392505050565b6001600160a01b038316611c945760405162461bcd60e51b815260040161097f90614626565b6001600160a01b038216611cba5760405162461bcd60e51b815260040161097f906147f3565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611d15908590614083565b60405180910390a3505050565b50600090565b61271090565b600082611d3d575060006107cf565b82820282848281611d4a57fe5b0414611c675760405162461bcd60e51b815260040161097f90614594565b6000611c6783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b7f565b6000611c6783836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152505b60008184841115611e0c5760405162461bcd60e51b815260040161097f9190614129565b505050900390565b6001600160a01b038216611e3a5760405162461bcd60e51b815260040161097f9061465d565b611e77816040518060600160405280602e81526020016149cc602e91396001600160a01b0386166000908152600460205260409020549190611de8565b6001600160a01b038085166000908152600460205260408082209390935590841681522054611ea69082611c42565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d15908590614083565b61173e7f000000000000000000000000000000000000000000000000000000000000000082612bb6565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb90611f509085908590600401614045565b602060405180830381600087803b158015611f6a57600080fd5b505af1158015611f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa29190613db4565b611fbe5760405162461bcd60e51b815260040161097f906143b2565b505050565b612000816040518060600160405280602781526020016149a5602791396001600160a01b0385166000908152600460205260409020549190611de8565b60046000846001600160a01b03166001600160a01b03168152602001908152602001600020819055506120508160405180606001604052806027815260200161494f602791396002549190611de8565b6002556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612091908590614083565b60405180910390a35050565b600e5460ff1615156001146120c45760405162461bcd60e51b815260040161097f906147bc565b600d54156120f257606060006120d86126de565b91509150600d548111156120ef576120ef82612a59565b50505b6009546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906323b872dd9061213f90339030908690600401613fe0565b602060405180830381600087803b15801561215957600080fd5b505af115801561216d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121919190613db4565b6121ad5760405162461bcd60e51b815260040161097f906146ba565b60006121d87f0000000000000000000000000000000000000000000000000000000000000000611d22565b905060006121e761081c611d28565b90506121ff846121fa6106d48685611daa565b612c39565b61220883612cbb565b836001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c84604051610a319190614083565b600a546001600160a01b038381169116146124ee57806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561228f57600080fd5b505afa1580156122a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c79190613ba9565b6001600160a01b0316826001600160a01b031614156123a357600a54604080517fd21220a700000000000000000000000000000000000000000000000000000000815290516001600160a01b039283169284169163d21220a7916004808301926020929190829003018186803b15801561234057600080fd5b505afa158015612354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123789190613ba9565b6001600160a01b03161461239e5760405162461bcd60e51b815260040161097f906142c1565b6124ee565b600a54604080517f0dfe168100000000000000000000000000000000000000000000000000000000815290516001600160a01b0392831692841691630dfe1681916004808301926020929190829003018186803b15801561240357600080fd5b505afa158015612417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243b9190613ba9565b6001600160a01b03161480156124d25750816001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561248f57600080fd5b505afa1580156124a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c79190613ba9565b6001600160a01b0316145b6124ee5760405162461bcd60e51b815260040161097f906142c1565b6001600160a01b03828116600090815260136020526040902080546001600160a01b03191691831691909117905560145461252a906001611c42565b6014555050565b3390565b6017546040517f93f1a40b0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906393f1a40b90612581908590309060040161485f565b604080518083038186803b15801561259857600080fd5b505afa1580156125ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d09190613e72565b5092915050565b6017546040517f2f940c700000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690632f940c7090612622908490309060040161485f565b600060405180830381600087803b15801561263c57600080fd5b505af1158015612650573d6000803e3d6000fd5b505060095460175460405163095ea7b360e01b81526001600160a01b03928316945063095ea7b3935061268c9290911690600090600401614045565b602060405180830381600087803b1580156126a657600080fd5b505af11580156126ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a499190613db4565b60606000606061270d7f0000000000000000000000000000000000000000000000000000000000000000612d05565b600a546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190612743903090600401613fcc565b60206040518083038186803b15801561275b57600080fd5b505afa15801561276f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127939190613e36565b905060005b82518110156129755760008382815181106127af57fe5b60200260200101516000015190506000601360008685815181106127cf57fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b031690506000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161283f9190613fcc565b60206040518083038186803b15801561285757600080fd5b505afa15801561286b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288f9190613e36565b600a549091506001600160a01b0384811691161461293d5760006128d38786815181106128b857fe5b60200260200101516020015183611c4290919063ffffffff16565b90506000811180156128ed57506001600160a01b03831615155b1561293757600a546129179061291090839087906001600160a01b031687613031565b8790611c42565b95508087868151811061292657fe5b602002602001015160200181815250505b5061296a565b61296786858151811061294c57fe5b60200260200101516020015186611c4290919063ffffffff16565b94505b505050600101612798565b5090925090509091565b6000612989611a81565b8560405160200161299b929190613f96565b6040516020818303038152906040528051906020012090506000600182868686604051600081526020016040526040516129d894939291906140ec565b6020604051602081039080840390855afa1580156129fa573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590612a305750866001600160a01b0316816001600160a01b0316145b612a4c5760405162461bcd60e51b815260040161097f90614264565b50505050505050565b4690565b612a827f00000000000000000000000000000000000000000000000000000000000000006130fe565b6000612a8d82613177565b90506000612aac61271061082660115485611d2e90919063ffffffff16565b90508015612ad157600a54600b54612ad1916001600160a01b03908116911683611f22565b6000612aee612710610826600f5486611d2e90919063ffffffff16565b90508015612b0d57600a54612b0d906001600160a01b03163383611f22565b6000612b2b612b2683612b208787611daa565b90611daa565b61334d565b9050612b3681612cbb565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234612b5f610f41565b600254604051612b70929190614876565b60405180910390a15050505050565b60008183612ba05760405162461bcd60e51b815260040161097f9190614129565b506000838581612bac57fe5b0495945050505050565b6017546040517f0ad58d2f0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690630ad58d2f90612c0390859085903090600401614884565b600060405180830381600087803b158015612c1d57600080fd5b505af1158015612c31573d6000803e3d6000fd5b505050505050565b600254612c469082611c42565b6002556001600160a01b038216600090815260046020526040902054612c6c9082611c42565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612091908590614083565b60008111612cdb5760405162461bcd60e51b815260040161097f90614537565b61173e7f00000000000000000000000000000000000000000000000000000000000000008261337c565b6017546040517f98969e820000000000000000000000000000000000000000000000000000000081526060916000916001600160a01b03909116906398969e8290612d56908690309060040161485f565b60206040518083038186803b158015612d6e57600080fd5b505afa158015612d82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da69190613e36565b6017546040517fc346253d0000000000000000000000000000000000000000000000000000000081529192506000916001600160a01b039091169063c346253d90612df5908790600401614083565b60206040518083038186803b158015612e0d57600080fd5b505afa158015612e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e459190613ba9565b905060606001600160a01b03821615612fbf57606080836001600160a01b031663d63b3c49600030886040518463ffffffff1660e01b8152600401612e8c9392919061410a565b60006040518083038186803b158015612ea457600080fd5b505afa158015612eb8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ee09190810190613cd5565b81519193509150612ef2906001611c42565b67ffffffffffffffff81118015612f0857600080fd5b50604051908082528060200260200182016040528015612f4257816020015b612f2f613ae0565b815260200190600190039081612f275790505b50925060005b8251811015612fb7576040518060400160405280848381518110612f6857fe5b60200260200101516001600160a01b03168152602001838381518110612f8a57fe5b6020026020010151815250848260010181518110612fa457fe5b6020908102919091010152600101612f48565b505050612ff2565b60408051600180825281830190925290816020015b612fdc613ae0565b815260200190600190039081612fd45790505090505b604080518082019091526018546001600160a01b03168152602081018490528151829060009061301e57fe5b6020908102919091010152949350505050565b60008061303e8585613452565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561307d57600080fd5b505afa158015613091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b59190613dd0565b5091509150866001600160a01b0316836001600160a01b0316146130d557905b6130f288836001600160701b0316836001600160701b0316613483565b98975050505050505050565b6017546040517f18fccc760000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906318fccc7690613149908490309060040161485f565b600060405180830381600087803b15801561316357600080fd5b505af1158015610b65573d6000803e3d6000fd5b600a546040516370a0823160e01b815260009182916001600160a01b03909116906370a08231906131ac903090600401613fcc565b60206040518083038186803b1580156131c457600080fd5b505afa1580156131d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131fc9190613e36565b905060005b83518110156125d057600084828151811061321857fe5b602090810291909101810151516001600160a01b03808216600090815260139093526040832054885192945016919087908590811061325357fe5b6020026020010151602001519050600081111561334257600a546001600160a01b038481169116141561330b574780156133055773b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156132d657600080fd5b505af11580156132ea573d6000803e3d6000fd5b50505050506133028287611c4290919063ffffffff16565b95505b50613342565b6001600160a01b0382161561334257600a5461333f9061333890839086906001600160a01b0316866134cb565b8690611c42565b94505b505050600101613201565b600a546009546015546016546000936107cf9386936001600160a01b039283169391831692908116911661365e565b60095460175460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926133b2929116908590600401614045565b602060405180830381600087803b1580156133cc57600080fd5b505af11580156133e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134049190613db4565b506017546040517f8dbdbe6d0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690638dbdbe6d90612c0390859085903090600401614884565b600080826001600160a01b0316846001600160a01b031610613475578284613478565b83835b915091509250929050565b600080613492856103e5611d2e565b905060006134a08285611d2e565b905060006134b48361137b886103e8611d2e565b90506134c08282611d68565b979650505050505050565b6000806134d88585613452565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561351757600080fd5b505afa15801561352b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354f9190613dd0565b5091509150866001600160a01b0316836001600160a01b03161461356f57905b60008061358f8a856001600160701b0316856001600160701b0316613483565b9050886001600160a01b0316856001600160a01b0316146135ac57905b6135b789888c6137d8565b604080516000815260208101918290527f022c0d9f000000000000000000000000000000000000000000000000000000009091526001600160a01b0388169063022c0d9f9061360f90859085903090602481016148a3565b600060405180830381600087803b15801561362957600080fd5b505af115801561363d573d6000803e3d6000fd5b5050505081811161364e5781613650565b805b9a9950505050505050505050565b60008061366c876002611d68565b90506000811161368e5760405162461bcd60e51b815260040161097f906144da565b6000856001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156136c957600080fd5b505afa1580156136dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137019190613ba9565b9050816001600160a01b038881169083161461372657613723838984896134cb565b90505b6000876001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561376157600080fd5b505afa158015613775573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137999190613ba9565b9050836001600160a01b038a8116908316146137be576137bb858b848a6134cb565b90505b6137c9898483613874565b9b9a5050505050505050505050565b60405163a9059cbb60e01b81526001600160a01b0384169063a9059cbb906138069085908590600401614045565b602060405180830381600087803b15801561382057600080fd5b505af1158015613834573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138589190613db4565b611fbe5760405162461bcd60e51b815260040161097f9061482a565b6000806000856001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156138b257600080fd5b505afa1580156138c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ea9190613dd0565b5091509150600061390e86846001600160701b0316846001600160701b0316613ac8565b90508481111561393b5784905061393885836001600160701b0316856001600160701b0316613ac8565b95505b6139b6876001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561397757600080fd5b505afa15801561398b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139af9190613ba9565b88886137d8565b613a31876001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156139f257600080fd5b505afa158015613a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2a9190613ba9565b88836137d8565b6040517f6a6278420000000000000000000000000000000000000000000000000000000081526001600160a01b03881690636a62784290613a76903090600401613fcc565b602060405180830381600087803b158015613a9057600080fd5b505af1158015613aa4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c09190613e36565b6000613ad8836108268685611d2e565b949350505050565b604080518082019091526000808252602082015290565b600082601f830112613b07578081fd5b8151613b1a613b158261490d565b6148e9565b818152915060208083019084810181840286018201871015613b3b57600080fd5b60005b84811015613b5a57815184529282019290820190600101613b3e565b505050505092915050565b80516001600160701b0381168114610dde57600080fd5b803560ff81168114610dde57600080fd5b600060208284031215613b9e578081fd5b8135611c678161492b565b600060208284031215613bba578081fd5b8151611c678161492b565b60008060408385031215613bd7578081fd5b8235613be28161492b565b91506020830135613bf28161492b565b809150509250929050565b600080600060608486031215613c11578081fd5b8335613c1c8161492b565b92506020840135613c2c8161492b565b929592945050506040919091013590565b600080600080600080600060e0888a031215613c57578283fd5b8735613c628161492b565b96506020880135613c728161492b565b95506040880135945060608801359350613c8e60808901613b7c565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613cbc578182fd5b8235613cc78161492b565b946020939093013593505050565b60008060408385031215613ce7578182fd5b825167ffffffffffffffff80821115613cfe578384fd5b818501915085601f830112613d11578384fd5b8151613d1f613b158261490d565b80828252602080830192508086018a828387028901011115613d3f578889fd5b8896505b84871015613d6a578051613d568161492b565b845260019690960195928101928101613d43565b508801519096509350505080821115613d81578283fd5b50613d8e85828601613af7565b9150509250929050565b600060208284031215613da9578081fd5b8135611c6781614940565b600060208284031215613dc5578081fd5b8151611c6781614940565b600080600060608486031215613de4578283fd5b613ded84613b65565b9250613dfb60208501613b65565b9150604084015163ffffffff81168114613e13578182fd5b809150509250925092565b600060208284031215613e2f578081fd5b5035919050565b600060208284031215613e47578081fd5b5051919050565b60008060408385031215613e60578182fd5b823591506020830135613bf281614940565b60008060408385031215613e84578182fd5b505080516020909101519092909150565b600080600080600060a08688031215613eac578283fd5b8535945060208601359350613ec360408701613b7c565b94979396509394606081013594506080013592915050565b60008151808452815b81811015613f0057602081850181015186830182015201613ee4565b81811115613f115782602083870101525b50601f01601f19169290920160200192915050565b6000808354600180821660008114613f455760018114613f5c57613f8b565b60ff198316865260028304607f1686019350613f8b565b600283048786526020808720875b83811015613f835781548a820152908501908201613f6a565b505050860193505b509195945050505050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b93845260ff9290921660208401526040830152606082015260800190565b9283526001600160a01b03919091166020830152604082015260600190565b600060208252611c676020830184613edb565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f59616b53747261746567793a3a6f6e6c79454f41000000000000000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526034908201527f5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e60408201527f6f20616c6c6f776564206465706f7369746f7273000000000000000000000000606082015260800190565b60208082526024908201527f417263683a3a76616c69646174655369673a20696e76616c6964207369676e6160408201527f7475726500000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252603a908201527f537761702070616972207377617050616972506f6f6c52657761726420646f6560408201527f73206e6f7420636f6e7461696e2072657761726420746f6b656e000000000000606082015260800190565b6020808252601c908201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f7200000000604082015260600190565b60208082526029908201527f4d617374657243686566537472617465677956313a3a7265736375654465706c60408201527f6f79656446756e64730000000000000000000000000000000000000000000000606082015260800190565b6020808252602a908201527f4d617374657243686566537472617465677956313a3a5452414e534645525f4660408201527f524f4d5f4641494c454400000000000000000000000000000000000000000000606082015260800190565b6020808252600f908201527f7065726d69743a3a657870697265640000000000000000000000000000000000604082015260600190565b6020808252601e908201527f4d617374657243686566537472617465677956313a3a77697468647261770000604082015260600190565b6020808252602a908201527f5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e60408201527f6f7420616c6c6f77656400000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4465784c6962726172793a3a5f636f6e76657274526577617264546f6b656e7360408201527f546f4465706f736974546f6b656e730000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d617374657243686566537472617465677956313a3a5f7374616b654465706f60408201527f736974546f6b656e730000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f5f617070726f76653a3a6f776e6572207a65726f206164647265737300000000604082015260600190565b60208082526034908201527f5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657260408201527f20746f20746865207a65726f2061646472657373000000000000000000000000606082015260800190565b60208082526025908201527f4d617374657243686566537472617465677956313a3a7472616e73666572206660408201527f61696c6564000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f736574416c6c6f77616e6365733a3a6465707265636174656400000000000000604082015260600190565b60208082526014908201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604082015260600190565b6020808252601e908201527f4d617374657243686566537472617465677956313a3a7265696e766573740000604082015260600190565b6020808252601e908201527f4d617374657243686566537472617465677956313a3a5f6465706f7369740000604082015260600190565b6020808252601e908201527f5f617070726f76653a3a7370656e646572207a65726f20616464726573730000604082015260600190565b6020808252818101527f4465784c6962726172793a3a5452414e534645525f46524f4d5f4641494c4544604082015260600190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b92835260208301919091526001600160a01b0316604082015260600190565b60008582528460208301526001600160a01b0384166040830152608060608301526148d16080830184613edb565b9695505050505050565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561490557fe5b604052919050565b600067ffffffffffffffff82111561492157fe5b5060209081020190565b6001600160a01b038116811461173e57600080fd5b801515811461173e57600080fdfe5f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c797472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e63655f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365a2646970667358221220937f52542d55590a8847209f599945b2c2b1a87bbd7b26211e808797c98aab2a64736f6c634300070300338be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000c013f541f55461cc039bcdba9c4dc3bdded6c828000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c700000000000000000000000060781c2586d68229fde47564546784ab3faca982000000000000000000000000d7538cabbf8605bde1f4901b47b8d42c61de0367000000000000000000000000c013f541f55461cc039bcdba9c4dc3bdded6c828000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002200000000000000000000000001f806f7c8ded893fd3cae279191ad7aa3798e928000000000000000000000000000000000000000000000000000000000000006a000000000000000000000000302404cb8f34713a8b8dbf9b4989a41252332068000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002580000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000001c5969656c642059616b3a2050616e676f6c696e204b54452d41564158000000000000000000000000000000000000000000000000000000000000000000000000