[ { "inputs": [ { "internalType": "address", "name": "_pool", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_voter", "type": "address" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "int24", "name": "tick", "type": "int24" }, { "indexed": false, "internalType": "uint256", "name": "totalAmount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalAmount1", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "feeAmount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "feeAmount1", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalSupply", "type": "uint256" } ], "name": "Rebalance", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "newFee", "type": "uint8" } ], "name": "SetFee", "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": "address", "name": "newReceiver", "type": "address" } ], "name": "TransferReceiver", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "fee", "type": "uint8" }, { "indexed": false, "internalType": "uint256", "name": "fees0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fees1", "type": "uint256" } ], "name": "ZeroBurn", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PRECISION", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "int24", "name": "tickLower", "type": "int24" }, { "internalType": "int24", "name": "tickUpper", "type": "int24" }, { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" }, { "internalType": "uint256[2]", "name": "inMin", "type": "uint256[2]" } ], "name": "addLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseLower", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseUpper", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[4]", "name": "inMin", "type": "uint256[4]" } ], "name": "compound", "outputs": [ { "internalType": "uint128", "name": "baseToken0Owed", "type": "uint128" }, { "internalType": "uint128", "name": "baseToken1Owed", "type": "uint128" }, { "internalType": "uint128", "name": "limitToken0Owed", "type": "uint128" }, { "internalType": "uint128", "name": "limitToken1Owed", "type": "uint128" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "currentTick", "outputs": [ { "internalType": "int24", "name": "tick", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "deposit0", "type": "uint256" }, { "internalType": "uint256", "name": "deposit1", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256[4]", "name": "inMin", "type": "uint256[4]" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "deposit0Max", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "deposit1Max", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "directDeposit", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fee", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gauge", "outputs": [ { "internalType": "contract IGaugeV2", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBasePosition", "outputs": [ { "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getLimitPosition", "outputs": [ { "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getTotalAmounts", "outputs": [ { "internalType": "uint256", "name": "total0", "type": "uint256" }, { "internalType": "uint256", "name": "total1", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "limitLower", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "limitUpper", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTotalSupply", "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": "owner", "type": "address" } ], "name": "nonces", "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": [], "name": "pool", "outputs": [ { "internalType": "contract IClPool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "int24", "name": "tickLower", "type": "int24" }, { "internalType": "int24", "name": "tickUpper", "type": "int24" }, { "internalType": "uint128", "name": "shares", "type": "uint128" }, { "internalType": "uint256[2]", "name": "amountMin", "type": "uint256[2]" } ], "name": "pullLiquidity", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "ramsesV2MintCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "int24", "name": "_baseLower", "type": "int24" }, { "internalType": "int24", "name": "_baseUpper", "type": "int24" }, { "internalType": "int24", "name": "_limitLower", "type": "int24" }, { "internalType": "int24", "name": "_limitUpper", "type": "int24" }, { "internalType": "address", "name": "_feeRecipient", "type": "address" }, { "internalType": "uint256[4]", "name": "inMin", "type": "uint256[4]" }, { "internalType": "uint256[4]", "name": "outMin", "type": "uint256[4]" } ], "name": "rebalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "receiver", "outputs": [ { "internalType": "contract IMultiFeeDistribution", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "removeWhitelisted", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "newFee", "type": "uint8" } ], "name": "setFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "setWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tickSpacing", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "toggleDirectDeposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "token0", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token1", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newReceiver", "type": "address" } ], "name": "transferReceiver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newVeNFTTokenId", "type": "uint256" } ], "name": "transferVeNFTTokenId", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newVoter", "type": "address" } ], "name": "transferVoter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "veNFTTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "voter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "whitelistedAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256[4]", "name": "minAmounts", "type": "uint256[4]" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" } ]
6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c961012052600c805460ff60a01b1916601960a21b1790553480156200004a57600080fd5b50604051620054e4380380620054e4833981810160405260c08110156200007057600080fd5b8151602083015160408085015160608601516080870180519351959794969295919491939282019284640100000000821115620000ac57600080fd5b908301906020820185811115620000c257600080fd5b8251640100000000811182820188101715620000dd57600080fd5b82525081516020918201929091019080838360005b838110156200010c578181015183820152602001620000f2565b50505050905090810190601f1680156200013a5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200015e57600080fd5b9083019060208201858111156200017457600080fd5b82516401000000008111828201881017156200018f57600080fd5b82525081516020918201929091019080838360005b83811015620001be578181015183820152602001620001a4565b50505050905090810190601f168015620001ec5780820380516001836020036101000a031916815260200191505b506040525050508180604051806040016040528060018152602001603160f81b815250848481600390805190602001906200022992919062000666565b5080516200023f90600490602084019062000666565b50506005805460ff1916601217905550815160208084019190912082519183019190912060c082905260e08190527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f62000298620005fe565b60a052620002a881848462000602565b60805261010052505060016007555050506001600160a01b038616620002cd57600080fd5b6001600160a01b038516620002e157600080fd5b6001600160a01b038416620002f557600080fd5b6001600160a01b0383166200030957600080fd5b600880546001600160a01b0319166001600160a01b038881169182179092556040805163b9a09fd560e01b8152600481019290925251869283169163b9a09fd5916024808301926020929190829003018186803b1580156200036a57600080fd5b505afa1580156200037f573d6000803e3d6000fd5b505050506040513d60208110156200039657600080fd5b5051600980546001600160a01b0319166001600160a01b0392831617905560085460408051630dfe168160e01b815290519190921691630dfe1681916004808301926020929190829003018186803b158015620003f257600080fd5b505afa15801562000407573d6000803e3d6000fd5b505050506040513d60208110156200041e57600080fd5b5051600a80546001600160a01b0319166001600160a01b039283161790556008546040805163d21220a760e01b81529051919092169163d21220a7916004808301926020929190829003018186803b1580156200047a57600080fd5b505afa1580156200048f573d6000803e3d6000fd5b505050506040513d6020811015620004a657600080fd5b5051600b80546001600160a01b03199081166001600160a01b0393841617909155600c8054909116868316179055600a5416620004e257600080fd5b600b546001600160a01b0316620004f857600080fd5b600860009054906101000a90046001600160a01b03166001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200054757600080fd5b505afa1580156200055c573d6000803e3d6000fd5b505050506040513d60208110156200057357600080fd5b5051600c805460029290920b62ffffff16600160a81b0262ffffff60a81b199092169190911790555050600e80546001600160a01b039586166c01000000000000000000000000026001600160601b039091161790555050600f8054919092166001600160a01b0319909116179055506000600d819055601255600019601081905560115562000712565b4690565b600083838362000611620005fe565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200069e5760008555620006e9565b82601f10620006b957805160ff1916838001178555620006e9565b82800160010185558215620006e9579182015b82811115620006e9578251825591602001919060010190620006cc565b50620006f7929150620006fb565b5090565b5b80821115620006f75760008155600101620006fc565b60805160a05160c05160e0516101005161012051614d886200075c60003980612864525080612dd1525080612e13525080612df2525080612d78525080612da85250614d886000f3fe608060405234801561001057600080fd5b506004361061036d5760003560e01c8063854cff2f116101d3578063b1a3d53311610104578063d2eabcfc116100a2578063ddca3f431161007c578063ddca3f4314610b49578063f2fde38b14610b51578063f7260d3e14610b77578063fa08274314610b7f5761036d565b8063d2eabcfc14610ac2578063d505accf14610aca578063dd62ed3e14610b1b5761036d565b8063cb122a09116100de578063cb122a0914610a75578063cd2c3bc114610a95578063d0c93a7c14610ab2578063d21220a714610aba5761036d565b8063b1a3d53314610a5d578063c4a7761e14610a65578063c5241e2914610a6d5761036d565b806395d89b4111610171578063a6f19c841161014b578063a6f19c84146109b6578063a8559872146109be578063a9059cbb14610a29578063aaf5eb6814610a555761036d565b806395d89b4114610952578063a049de6b1461095a578063a457c2d71461098a5761036d565b8063888a9134116101ad578063888a91341461084b5780638da5cb5b146108535780638e3c92e41461085b57806395235656146108cc5761036d565b8063854cff2f1461077057806385919c5d1461079657806386a29081146108435761036d565b806339509351116102ad578063513ea8841161024b578063648cab8511610225578063648cab85146107145780636d90a39c1461071c57806370a08231146107245780637ecebe001461074a5761036d565b8063513ea8841461061e57806351e87af7146106a457806363e96836146106ac5761036d565b8063469048401161028757806346904840146105e057806346c96aac146105e857806349e83446146105f05780634d461fbb146106165761036d565b806339509351146105305780633d18b9121461055c5780633e48f417146105645761036d565b806318160ddd1161031a57806323b872dd116102f457806323b872dd146104cc5780632ab4d05214610502578063313ce5671461050a5780633644e515146105285761036d565b806318160ddd1461048257806318b3c1c81461049c5780631e59ded3146104a45761036d565b80630dfe16811161034b5780630dfe16811461044e5780630f35bcac1461047257806316f0115b1461047a5761036d565b8063065e53601461037257806306fdde0314610391578063095ea7b31461040e575b600080fd5b61037a610b87565b6040805160029290920b8252519081900360200190f35b610399610c00565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d35781810151838201526020016103bb565b50505050905090810190601f1680156104005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61043a6004803603604081101561042457600080fd5b506001600160a01b038135169060200135610c97565b604080519115158252519081900360200190f35b610456610cb5565b604080516001600160a01b039092168252519081900360200190f35b61037a610cc4565b610456610cd4565b61048a610ce3565b60408051918252519081900360200190f35b61048a610ce9565b6104ca600480360360208110156104ba57600080fd5b50356001600160a01b0316610cef565b005b61043a600480360360608110156104e257600080fd5b506001600160a01b03813581169160208101359091169060400135610da9565b61048a610e31565b610512610e37565b6040805160ff9092168252519081900360200190f35b61048a610e40565b61043a6004803603604081101561054657600080fd5b506001600160a01b038135169060200135610e4f565b6104ca610e9d565b6104ca6004803603606081101561057a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105a157600080fd5b8201836020820111156105b357600080fd5b803590602001918460018302840111640100000000831117156105d557600080fd5b509092509050610ea7565b610456610f41565b610456610f50565b6104ca6004803603602081101561060657600080fd5b50356001600160a01b0316610f5f565b61048a610fe7565b6106706004803603608081101561063457600080fd5b8101908080608001906004806020026040519081016040528092919082600460200280828437600092019190915250919450610fed9350505050565b604080516001600160801b039586168152938516602085015291841683830152909216606082015290519081900360800190f35b61037a61124c565b6104ca600480360360c08110156106c257600080fd5b6040805180820182528335600290810b946020810135820b9484820135946060830135949183019360c084019291608085019190839083908082843760009201919091525091945061125c9350505050565b61048a6112e9565b61043a6112ef565b61048a6004803603602081101561073a57600080fd5b50356001600160a01b03166112ff565b61048a6004803603602081101561076057600080fd5b50356001600160a01b031661131e565b6104ca6004803603602081101561078657600080fd5b50356001600160a01b031661133f565b6104ca60048036036101a08110156107ad57600080fd5b60408051608081810183528435600290810b956020810135820b9594810135820b94606082013590920b936001600160a01b03848301351693928201926101208301919060a0840190600490839083908082843760009201919091525050604080516080818101909252929594938181019392509060049083908390808284376000920191909152509194506113b49350505050565b6104566119d4565b61037a6119e3565b6104566119f3565b61048a600480360361010081101561087257600080fd5b60408051608081810183528435946020810135946001600160a01b0394820135851694606083013516939082019261010083019190808401906004908390839080828437600092019190915250919450611a099350505050565b610939600480360360a08110156108e257600080fd5b6040805180820182528335600290810b946020810135820b946001600160801b0385830135169490820193919260a0840192916060850191908390839080828437600092019190915250919450611ec39350505050565b6040805192835260208301919091528051918290030190f35b610399611f5b565b610962611fbc565b604080516001600160801b039094168452602084019290925282820152519081900360600190f35b61043a600480360360408110156109a057600080fd5b506001600160a01b038135169060200135612052565b6104566120ba565b610939600480360360e08110156109d457600080fd5b60408051608081810183528435946001600160a01b036020820135811695948201351693810192909160e083019190606084019060049083908390808284376000920191909152509194506120c99350505050565b61043a60048036036040811015610a3f57600080fd5b506001600160a01b038135169060200135612473565b61048a612487565b6104ca61249a565b61093961250e565b6104ca61261e565b6104ca60048036036020811015610a8b57600080fd5b503560ff16612683565b6104ca60048036036020811015610aab57600080fd5b5035612732565b61037a61278a565b61045661279a565b6109626127a9565b6104ca600480360360e0811015610ae057600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356127f5565b61048a60048036036040811015610b3157600080fd5b506001600160a01b03813581169160200135166129ac565b6105126129d7565b6104ca60048036036020811015610b6757600080fd5b50356001600160a01b03166129e7565b610456612a7a565b61037a612a89565b60085460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e0929190829003018186803b158015610bcc57600080fd5b505afa158015610be0573d6000803e3d6000fd5b505050506040513d60e0811015610bf657600080fd5b5060200151919050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c8c5780601f10610c6157610100808354040283529160200191610c8c565b820191906000526020600020905b815481529060010190602001808311610c6f57829003601f168201915b505050505090505b90565b6000610cab610ca4612a92565b8484612a96565b5060015b92915050565b600a546001600160a01b031681565b600e54600160481b900460020b81565b6008546001600160a01b031681565b60025490565b600d5481565b600e54600160601b90046001600160a01b03163314610d42576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6001600160a01b038116610d5557600080fd5b600c80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f4a558665c36272d3508d1143a280d81be952c3abd93ffd377aed6b0b996205ad9181900360200190a150565b6000610db6848484612b82565b610e2684610dc2612a92565b610e2185604051806060016040528060288152602001614c9b602891396001600160a01b038a16600090815260016020526040812090610e00612a92565b6001600160a01b031681526020810191909152604001600020549190612cdd565b612a96565b5060015b9392505050565b60125481565b60055460ff1690565b6000610e4a612d74565b905090565b6000610cab610e5c612a92565b84610e218560016000610e6d612a92565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612e3e565b610ea5612e98565b565b6008546001600160a01b03163314610ebe57600080fd5b601454600160a81b900460ff161515600114610ed957600080fd5b601480547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690558315610f1e57600a54610f1e906001600160a01b03163386613190565b8215610f3b57600b54610f3b906001600160a01b03163385613190565b50505050565b6014546001600160a01b031681565b600f546001600160a01b031681565b600e54600160601b90046001600160a01b03163314610fb2576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6001600160a01b038116610fc557600080fd5b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b60115481565b600080600080600e600c9054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b03161461105b576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6110636131fc565b505061106d612e98565b600e54600a54604080516370a0823160e01b8152306004820152905160009361117a93600282810b946301000000909304900b926001600160a01b03909116916370a08231916024808301926020929190829003018186803b1580156110d257600080fd5b505afa1580156110e6573d6000803e3d6000fd5b505050506040513d60208110156110fc57600080fd5b5051600b54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561114957600080fd5b505afa15801561115d573d6000803e3d6000fd5b505050506040513d602081101561117357600080fd5b5051613247565b600e5487519192506111a891600282810b9263010000009004900b90849030908b60015b60200201516132ed565b600e54600a54604080516370a0823160e01b8152306004820152905161121293600160301b8104600290810b94600160481b909204900b926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156110d257600080fd5b600e54604088015191925061124491600160301b8204600290810b92600160481b9004900b90849030908b600361119e565b509193509193565b600e54600160301b900460020b81565b600e54600160601b90046001600160a01b031633146112af576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6112b985856134d2565b5060006112c886868686613247565b90506112e186868330866000602002015187600161119e565b505050505050565b60105481565b601454600160a01b900460ff1681565b6001600160a01b0381166000908152602081905260409020545b919050565b6001600160a01b0381166000908152600660205260408120610caf90613861565b600e54600160601b90046001600160a01b03163314611392576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6002600754141561140c576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600755600e54600160601b90046001600160a01b03163314611464576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b8560020b8760020b1280156114965750600c54600160a81b9004600290810b810b9088900b8161149057fe5b0760020b155b80156114bf5750600c54600160a81b9004600290810b810b9087900b816114b957fe5b0760020b155b6114c857600080fd5b8360020b8560020b1280156114fa5750600c54600160a81b9004600290810b810b9086900b816114f457fe5b0760020b155b80156115235750600c54600160a81b9004600290810b810b9085900b8161151d57fe5b0760020b155b61152c57600080fd5b8560020b8460020b14158061154757508660020b8560020b14155b61155057600080fd5b6001600160a01b03831661156357600080fd5b601480546001600160a01b0319166001600160a01b0385161790556115866131fc565b5050611590612e98565b600e54600090819081906115b290600281810b9163010000009004900b613865565b600e549295506001600160801b039182169450169150600090819081906115ee90600160301b8104600290810b91600160481b9004900b613865565b600e549295506001600160801b03918216945016915061163190600281810b9163010000009004900b883060018c600060200201518d60015b6020020151613948565b5050600e5461166890600160301b8104600290810b91600160481b9004810b90869030906001908d905b60200201518d6003611627565b50507fbc4c20ad04f161d631d9ce94d27659391196415aa3c42f6a71c62e905ece782d611693610b87565b600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156116de57600080fd5b505afa1580156116f2573d6000803e3d6000fd5b505050506040513d602081101561170857600080fd5b5051600b54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561175557600080fd5b505afa158015611769573d6000803e3d6000fd5b505050506040513d602081101561177f57600080fd5b505161178b868a612e3e565b611795868a612e3e565b61179d610ce3565b6040805160029790970b87526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190a18c600e60006101000a81548162ffffff021916908360020b62ffffff1602179055508b600e60036101000a81548162ffffff021916908360020b62ffffff16021790555061189d600e60009054906101000a900460020b600e60039054906101000a900460020b600a60009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156110d257600080fd5b600e5489519197506118c591600282810b9263010000009004900b90899030908d600161119e565b8a600e60066101000a81548162ffffff021916908360020b62ffffff16021790555089600e60096101000a81548162ffffff021916908360020b62ffffff16021790555061198e600e60069054906101000a900460020b600e60099054906101000a900460020b600a60009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156110d257600080fd5b600e5460408a01519194506119c091600160301b8204600290810b92600160481b9004900b90869030908d600361119e565b505060016007555050505050505050505050565b6013546001600160a01b031681565b600e546301000000900460020b81565b600e54600160601b90046001600160a01b031681565b600060026007541415611a63576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260075585151580611a765750600085115b611a7f57600080fd5b6010548611158015611a9357506011548511155b611a9c57600080fd5b6001600160a01b03841615801590611abd57506001600160a01b0384163014155b611af3576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b6013546001600160a01b03163314611b38576040805162461bcd60e51b815260206004820152600360248201526257484560e81b604482015290519081900360640190fd5b611b406131fc565b5050611b4a612e98565b60085460408051633850c7bd60e01b815290516000926001600160a01b031691633850c7bd9160048083019260e0929190829003018186803b158015611b8f57600080fd5b505afa158015611ba3573d6000803e3d6000fd5b505050506040513d60e0811015611bb957600080fd5b505190506000611c04611bd56001600160a01b03841680613ba6565b6ec097ce7bc90715b34b9f10000000007801000000000000000000000000000000000000000000000000613bff565b9050600080611c1161250e565b9092509050611c43611c3c6ec097ce7bc90715b34b9f1000000000611c368d87613ba6565b90613cae565b8a90612e3e565b94508915611c6357600a54611c63906001600160a01b031688308d613d15565b8815611c8157600b54611c81906001600160a01b031688308c613d15565b6000611c8b610ce3565b90508015611e0d576000611cb26ec097ce7bc90715b34b9f1000000000611c368688613ba6565b9050611ccb611cc18285612e3e565b611c368985613ba6565b601454909750600160a01b900460ff1615611e0b57600e54600a54604080516370a0823160e01b81523060048201529051600093611d4593600282810b946301000000909304900b926001600160a01b03909116916370a08231916024808301926020929190829003018186803b1580156110d257600080fd5b600e548a51919250611d6d91600282810b9263010000009004900b90849030908e600161119e565b600e54600a54604080516370a0823160e01b81523060048201529051611dd793600160301b8104600290810b94600160481b909204900b926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156110d257600080fd5b600e5460408b0151919250611e0991600160301b8204600290810b92600160481b9004900b90849030908e600361119e565b505b505b611e178987613d84565b60408051878152602081018d90528082018c905290516001600160a01b03808c1692908b16917f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69181900360600190a36012541580611e7857506012548111155b611eaf576040805162461bcd60e51b81526020600482015260036024820152620dac2f60eb1b604482015290519081900360640190fd5b505060016007555091979650505050505050565b600e546000908190600160601b90046001600160a01b03163314611f1b576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b611f2586866134d2565b50611f4e8686611f3f8989896001600160801b0316613e74565b86513090600090896001611627565b9097909650945050505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610c8c5780601f10610c6157610100808354040283529160200191610c8c565b600080600080600080611fed600e60069054906101000a900460020b600e60099054906101000a900460020b613865565b600e54929550909350915061201890600160301b8104600290810b91600160481b9004900b85613eb4565b9095509350612030856001600160801b038416612e3e565b9450612045846001600160801b038316612e3e565b9350829550505050909192565b6000610cab61205f612a92565b84610e2185604051806060016040528060258152602001614d576025913960016000612089612a92565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612cdd565b6009546001600160a01b031681565b60008060026007541415612124576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026007558561217b576040805162461bcd60e51b815260206004820152600660248201527f7368617265730000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0385166121bb576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b6121c36131fc565b50506121cd612e98565b600e54600090819061220290600281810b9163010000009004900b6121f382828d613e74565b88518b906000908b6001611627565b600e549193509150600090819061223f90600160301b8104600290810b91600160481b9004900b61223482828f613e74565b8c60008c600261165b565b9150915060006122e8612250610ce3565b611c368d600a60009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156122b657600080fd5b505afa1580156122ca573d6000803e3d6000fd5b505050506040513d60208110156122e057600080fd5b505190613ba6565b9050600061235d6122f7610ce3565b611c368e600b60009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156122b657600080fd5b9050811561237c57600a5461237c906001600160a01b03168c84613190565b801561239957600b54612399906001600160a01b03168c83613190565b6123ad826123a78887612e3e565b90612e3e565b97506123bd816123a78786612e3e565b96506001600160a01b038a163314612402576040805162461bcd60e51b815260206004820152600360248201526237bbb760e91b604482015290519081900360640190fd5b61240c8a8d613f5e565b604080518d8152602081018a905280820189905290516001600160a01b03808e1692908d16917febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9181900360600190a3505050505050600160078190555094509492505050565b6000610cab612480612a92565b8484612b82565b6ec097ce7bc90715b34b9f100000000081565b600e54600160601b90046001600160a01b031633146124ed576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6014805460ff60a01b198116600160a01b9182900460ff1615909102179055565b60008060008061251c6127a9565b925092505060008061252c611fbc565b600a54604080516370a0823160e01b815230600482015290519396509194506125ba935085926123a79289926001600160a01b0316916370a0823191602480820192602092909190829003018186803b15801561258857600080fd5b505afa15801561259c573d6000803e3d6000fd5b505050506040513d60208110156125b257600080fd5b505190612e3e565b600b54604080516370a0823160e01b815230600482015290519298506126149284926123a79288926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561258857600080fd5b9450505050509091565b600e54600160601b90046001600160a01b03163314612671576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b601380546001600160a01b0319169055565b600e54600160601b90046001600160a01b031633146126d6576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600c805460ff808416600160a01b90810260ff60a01b199093169290921792839055604080519290930416815290517f91f2ade82ab0e77bb6823899e6daddc07e3da0e3ad998577e7c09c2f38943c439181900360200190a150565b600e54600160601b90046001600160a01b03163314612785576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600d55565b600c54600160a81b900460020b81565b600b546001600160a01b031681565b600e54600090819081908190819081906127d190600281810b9163010000009004900b613865565b600e54929550909350915061201890600281810b9163010000009004900b85613eb4565b8342111561284a576040805162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b6001600160a01b03871660009081526006602052604081207f00000000000000000000000000000000000000000000000000000000000000009089908990899061289390613861565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b03168152602001848152602001838152602001828152602001965050505050505060405160208183030381529060405280519060200120905060006128fc8261405a565b9050600061290c828787876140a6565b9050896001600160a01b0316816001600160a01b031614612974576040805162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b6001600160a01b038a1660009081526006602052604090206129959061421b565b6129a08a8a8a612a96565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600c54600160a01b900460ff1681565b600e54600160601b90046001600160a01b03163314612a3a576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6001600160a01b038116612a4d57600080fd5b600e80546001600160a01b03909216600160601b026bffffffffffffffffffffffff909216919091179055565b600c546001600160a01b031681565b600e5460020b81565b3390565b6001600160a01b038316612adb5760405162461bcd60e51b8152600401808060200182810382526024815260200180614d096024913960400191505060405180910390fd5b6001600160a01b038216612b205760405162461bcd60e51b8152600401808060200182810382526022815260200180614bc86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316612bc75760405162461bcd60e51b8152600401808060200182810382526025815260200180614ce46025913960400191505060405180910390fd5b6001600160a01b038216612c0c5760405162461bcd60e51b8152600401808060200182810382526023815260200180614b836023913960400191505060405180910390fd5b612c178383836131f7565b612c5481604051806060016040528060268152602001614bea602691396001600160a01b0386166000908152602081905260409020549190612cdd565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612c839082612e3e565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115612d6c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d31578181015183820152602001612d19565b50505050905090810190601f168015612d5e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60007f0000000000000000000000000000000000000000000000000000000000000000612d9f614224565b1415612dcc57507f0000000000000000000000000000000000000000000000000000000000000000610c94565b612e377f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614228565b9050610c94565b600082820183811015610e2a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6009546040805163c4f59f9b60e01b815290516000926001600160a01b03169163c4f59f9b9160048083019286929190829003018186803b158015612edc57600080fd5b505afa158015612ef0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015612f1957600080fd5b8101908080516040519392919084640100000000821115612f3957600080fd5b908301906020820185811115612f4e57600080fd5b8251866020820283011164010000000082111715612f6b57600080fd5b82525081516020918201928201910280838360005b83811015612f98578181015183820152602001612f80565b50505050919091016040819052600954600e54600c546318d9dceb60e31b84523060048501818152600060248701819052600285810b80820b60448a01526301000000909604810b9081900b60648901526001600160a01b0394851660a4890181905260c060848a019081528e5160c48b01528e519e9f50959097169c63c6cee7589c50939a5090985093965092948b9493929160e490910190602080870191028083838c5b8381101561305657818101518382015260200161303e565b50505050905001975050505050505050600060405180830381600087803b15801561308057600080fd5b505af1158015613094573d6000803e3d6000fd5b5050600954600e54600c546040516318d9dceb60e31b81523060048201818152600060248401819052600160301b8604600290810b80820b6044870152600160481b909704810b9081900b60648601526001600160a01b0395861660a4860181905260c0608487019081528c5160c48801528c51979099169a5063c6cee7589950939791969590948b9493929160e490910190602080870191028083838c5b8381101561314b578181015183820152602001613133565b50505050905001975050505050505050600060405180830381600087803b15801561317557600080fd5b505af1158015613189573d6000803e3d6000fd5b5050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526131f790849061428a565b505050565b600e54600090819061321c90600281810b9163010000009004900b6134d2565b600e5490925061324190600160301b8104600290810b91600160481b9004900b6134d2565b90509091565b600080600860009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561329857600080fd5b505afa1580156132ac573d6000803e3d6000fd5b505050506040513d60e08110156132c257600080fd5b505190506132e3816132d38861433b565b6132dc8861433b565b878761467a565b9695505050505050565b6001600160801b038416156112e1576001601460156101000a81548160ff021916908315150217905550600080600860009054906101000a90046001600160a01b03166001600160a01b031663a418e9e03060008b8b8b600d548c60405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518863ffffffff1660e01b815260040180886001600160a01b031681526020018781526020018660020b81526020018560020b8152602001846001600160801b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156133f85781810151838201526020016133e0565b50505050905090810190601f1680156134255780820380516001836020036101000a031916815260200191505b50985050505050505050506040805180830381600087803b15801561344957600080fd5b505af115801561345d573d6000803e3d6000fd5b505050506040513d604081101561347357600080fd5b50805160209091015190925090508382108015906134915750828110155b6134c8576040805162461bcd60e51b815260206004820152600360248201526250534360e81b604482015290519081900360640190fd5b5050505050505050565b60006134de8383613865565b50909150506001600160801b03811615610caf57600854600d5460408051631c7f367360e31b8152600060048201819052600288810b602484015287900b604483015260648201819052608482019390935281516001600160a01b039094169363e3f9b3989360a480840194938390030190829087803b15801561356157600080fd5b505af1158015613575573d6000803e3d6000fd5b505050506040513d604081101561358b57600080fd5b5050600854604080516309e3d67b60e31b8152306004820152600286810b602483015285900b60448201526001600160801b03606482018190526084820152815160009384936001600160a01b0390911692634f1eb3d89260a4808301939282900301818787803b1580156135ff57600080fd5b505af1158015613613573d6000803e3d6000fd5b505050506040513d604081101561362957600080fd5b508051602091820151600c546040805160ff600160a01b9093049290921682526001600160801b039384169482018590529290911681830181905291519294509092507f4606b8a47eb284e8e80929101ece6ab5fe8d4f8735acc56bd0c92ca872f2cfe7919081900360600190a1600c546000906136b4908490600160a01b900460ff166064613bff565b1180156137355750600a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561370757600080fd5b505afa15801561371b573d6000803e3d6000fd5b505050506040513d602081101561373157600080fd5b5051115b1561377857601454600c54613778916001600160a01b031690613765908590600160a01b900460ff166064613bff565b600a546001600160a01b03169190613190565b600c54600090613795908390600160a01b900460ff166064613bff565b1180156138165750600b54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156137e857600080fd5b505afa1580156137fc573d6000803e3d6000fd5b505050506040513d602081101561381257600080fd5b5051115b1561385957601454600c54613859916001600160a01b031690613846908490600160a01b900460ff166064613bff565b600b546001600160a01b03169190613190565b505092915050565b5490565b604080513060601b602080830191909152600060348301819052600286810b60e890811b60548601529086900b901b60578401528351808403603a018152605a84018086528151919093012060085463514ea4bf60e01b909352605e8401819052935190938493849391926001600160a01b039092169163514ea4bf91607e8082019260c092909190829003018186803b15801561390257600080fd5b505afa158015613916573d6000803e3d6000fd5b505050506040513d60c081101561392c57600080fd5b5080516060820151608090920151909891975095509350505050565b6000806001600160801b03871615613b9a5760085460408051631c7f367360e31b815260006004820181905260028d810b60248401528c900b60448301526001600160801b038b16606483015260001960848301528251909384936001600160a01b039091169263e3f9b3989260a4808301939282900301818787803b1580156139d157600080fd5b505af11580156139e5573d6000803e3d6000fd5b505050506040513d60408110156139fb57600080fd5b5080516020909101519092509050858210801590613a195750848110155b613a50576040805162461bcd60e51b815260206004820152600360248201526250534360e81b604482015290519081900360640190fd5b600087613a6557613a6083614732565b613a6e565b6001600160801b035b9050600088613a8557613a8083614732565b613a8e565b6001600160801b035b90506000826001600160801b03161180613ab157506000816001600160801b0316115b15613b9557600860009054906101000a90046001600160a01b03166001600160a01b0316634f1eb3d88b8f8f86866040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836001600160801b03168152602001826001600160801b03168152602001955050505050506040805180830381600087803b158015613b5157600080fd5b505af1158015613b65573d6000803e3d6000fd5b505050506040513d6040811015613b7b57600080fd5b5080516020909101516001600160801b0391821697501694505b505050505b97509795505050505050565b600082613bb557506000610caf565b82820282848281613bc257fe5b0414610e2a5760405162461bcd60e51b8152600401808060200182810382526021815260200180614c7a6021913960400191505060405180910390fd5b6000808060001985870986860292508281109083900303905080613c355760008411613c2a57600080fd5b508290049050610e2a565b808411613c4157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000808211613d04576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381613d0d57fe5b049392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052610f3b90859061428a565b6001600160a01b038216613ddf576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b613deb600083836131f7565b600254613df89082612e3e565b6002556001600160a01b038216600090815260208190526040902054613e1e9082612e3e565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600080613e818585613865565b50509050613eab613ea6613e93610ce3565b611c366001600160801b03851687613ba6565b614732565b95945050505050565b6000806000600860009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015613f0757600080fd5b505afa158015613f1b573d6000803e3d6000fd5b505050506040513d60e0811015613f3157600080fd5b50519050613f5181613f428861433b565b613f4b8861433b565b87614749565b9250925050935093915050565b6001600160a01b038216613fa35760405162461bcd60e51b8152600401808060200182810382526021815260200180614cc36021913960400191505060405180910390fd5b613faf826000836131f7565b613fec81604051806060016040528060228152602001614ba6602291396001600160a01b0385166000908152602081905260409020549190612cdd565b6001600160a01b03831660009081526020819052604090205560025461401290826147e5565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000614064612d74565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156141075760405162461bcd60e51b8152600401808060200182810382526022815260200180614c106022913960400191505060405180910390fd5b8360ff16601b148061411c57508360ff16601c145b6141575760405162461bcd60e51b8152600401808060200182810382526022815260200180614c586022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156141b3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613eab576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b80546001019055565b4690565b6000838383614235614224565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b60006142df826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166148429092919063ffffffff16565b8051909150156131f7578080602001905160208110156142fe57600080fd5b50516131f75760405162461bcd60e51b815260040180806020018281038252602a815260200180614d2d602a913960400191505060405180910390fd5b60008060008360020b12614352578260020b61435a565b8260020b6000035b9050620d89e8811115614398576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166143b9577001000000000000000000000000000000006143cb565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156143ff576ffff97272373d413259a46990580e213a0260801c5b600482161561441e576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561443d576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561445c576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561447b576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561449a576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156144b9576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156144d9576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156144f9576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614519576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614539576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614559576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614579576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614599576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156145b9576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156145da576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156145fa576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614619576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614636576b048a170391f7dc42444e8fa20260801c5b60008460020b131561465157806000198161464d57fe5b0490505b640100000000810615614665576001614668565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b0316111561469a579293925b846001600160a01b0316866001600160a01b0316116146c5576146be858585614859565b9050613eab565b836001600160a01b0316866001600160a01b031610156147275760006146ec878686614859565b905060006146fb8789866148bc565b9050806001600160801b0316826001600160801b03161061471c578061471e565b815b92505050613eab565b6132e38585846148bc565b60006001600160801b0382111561474557fe5b5090565b600080836001600160a01b0316856001600160a01b0316111561476a579293925b846001600160a01b0316866001600160a01b0316116147955761478e8585856148f9565b91506147dc565b836001600160a01b0316866001600160a01b031610156147ce576147ba8685856148f9565b91506147c7858785614962565b90506147dc565b6147d9858585614962565b90505b94509492505050565b60008282111561483c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b606061485184846000856149a5565b949350505050565b6000826001600160a01b0316846001600160a01b03161115614879579192915b600061489c856001600160a01b0316856001600160a01b0316600160601b613bff565b9050613eab6148b784838888036001600160a01b0316613bff565b614b00565b6000826001600160a01b0316846001600160a01b031611156148dc579192915b6148516148b783600160601b8787036001600160a01b0316613bff565b6000826001600160a01b0316846001600160a01b03161115614919579192915b836001600160a01b0316614952606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b0316613bff565b8161495957fe5b04949350505050565b6000826001600160a01b0316846001600160a01b03161115614982579192915b614851826001600160801b03168585036001600160a01b0316600160601b613bff565b6060824710156149e65760405162461bcd60e51b8152600401808060200182810382526026815260200180614c326026913960400191505060405180910390fd5b6149ef85614b16565b614a40576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310614a7e5780518252601f199092019160209182019101614a5f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614ae0576040519150601f19603f3d011682016040523d82523d6000602084013e614ae5565b606091505b5091509150614af5828286614b1c565b979650505050505050565b806001600160801b038116811461131957600080fd5b3b151590565b60608315614b2b575081610e2a565b825115614b3b5782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315612d31578181015183820152602001612d1956fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c7565416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a000000000000000000000000d27672ad4665865a453706d110aeb1b54ecdb00700000000000000000000000071e7d05be74ff748c45402c06a941c822d756dc5000000000000000000000000aaaf3d9cdd3602d117c67d80eec37a160c8d98690000000000000000000000000a3305e51bfcdc5ff4ecce0a46712c579fe7999a00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000c78574d4e542d6d45544830350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c78574d4e542d6d45544830350000000000000000000000000000000000000000