[ { "inputs": [ { "internalType": "address", "name": "_pool", "type": "address" }, { "internalType": "address", "name": "_owner", "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": 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": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "algebraMintCallback", "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": "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": "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 IAlgebraPool", "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": "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": "removeWhitelisted", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "newFee", "type": "uint8" } ], "name": "setFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "int24", "name": "newTickSpacing", "type": "int24" } ], "name": "setTickSpacing", "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": [], "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" } ]
6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c961012052600a805460ff60a01b1916600160a01b1790553480156200004a57600080fd5b5060405162004ea938038062004ea9833981810160405260808110156200007057600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200009c57600080fd5b908301906020820185811115620000b257600080fd5b8251640100000000811182820188101715620000cd57600080fd5b82525081516020918201929091019080838360005b83811015620000fc578181015183820152602001620000e2565b50505050905090810190601f1680156200012a5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200014e57600080fd5b9083019060208201858111156200016457600080fd5b82516401000000008111828201881017156200017f57600080fd5b82525081516020918201929091019080838360005b83811015620001ae57818101518382015260200162000194565b50505050905090810190601f168015620001dc5780820380516001836020036101000a031916815260200191505b506040525050508180604051806040016040528060018152602001603160f81b815250848481600390805190602001906200021992919062000575565b5080516200022f90600490602084019062000575565b50506005805460ff1916601217905550815160208084019190912082519183019190912060c082905260e08190527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620002886200050d565b60a0526200029881848462000511565b60805261010052505060016007555050506001600160a01b038416620002bd57600080fd5b6001600160a01b038316620002d157600080fd5b600880546001600160a01b0319166001600160a01b03868116919091179182905560408051630dfe168160e01b815290519290911691630dfe168191600480820192602092909190829003018186803b1580156200032e57600080fd5b505afa15801562000343573d6000803e3d6000fd5b505050506040513d60208110156200035a57600080fd5b5051600980546001600160a01b0319166001600160a01b039283161790556008546040805163d21220a760e01b81529051919092169163d21220a7916004808301926020929190829003018186803b158015620003b657600080fd5b505afa158015620003cb573d6000803e3d6000fd5b505050506040513d6020811015620003e257600080fd5b5051600a80546001600160a01b0319166001600160a01b03928316179055600954166200040e57600080fd5b600a546001600160a01b03166200042457600080fd5b600860009054906101000a90046001600160a01b03166001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200047357600080fd5b505afa15801562000488573d6000803e3d6000fd5b505050506040513d60208110156200049f57600080fd5b5051600a805460029290920b62ffffff16600160a81b0262ffffff60a81b199092169190911790555050600b80546001600160a01b03909216660100000000000002600160301b600160d01b0319909216919091179055506000600e55600019600c819055600d5562000621565b4690565b6000838383620005206200050d565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620005ad5760008555620005f8565b82601f10620005c857805160ff1916838001178555620005f8565b82800160010185558215620005f8579182015b82811115620005f8578251825591602001919060010190620005db565b50620006069291506200060a565b5090565b5b808211156200060657600081556001016200060b565b60805160a05160c05160e051610100516101205161483e6200066b600039806125c9525080612bd6525080612c18525080612bf7525080612b7d525080612bad525061483e6000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c806386a29081116101a7578063c4a7761e116100ee578063d505accf11610097578063f085a61011610071578063f085a61014610a7b578063f2fde38b14610a9b578063fa08274314610ac157610320565b8063d505accf146109f4578063dd62ed3e14610a45578063ddca3f4314610a7357610320565b8063d0c93a7c116100c8578063d0c93a7c146109dc578063d21220a7146109e4578063d2eabcfc146109ec57610320565b8063c4a7761e146109ac578063c5241e29146109b4578063cb122a09146109bc57610320565b8063a049de6b11610150578063a9059cbb1161012a578063a9059cbb14610970578063aaf5eb681461099c578063b1a3d533146109a457610320565b8063a049de6b146108a9578063a457c2d7146108d9578063a85598721461090557610320565b80638e3c92e4116101815780638e3c92e4146107aa578063952356561461081b57806395d89b41146108a157610320565b806386a2908114610792578063888a91341461079a5780638da5cb5b146107a257610320565b80633dd657c51161026b578063648cab85116102145780637ecebe00116101ee5780637ecebe0014610699578063854cff2f146106bf57806385919c5d146106e557610320565b8063648cab85146106635780636d90a39c1461066b57806370a082311461067357610320565b8063513ea88411610245578063513ea8841461056d57806351e87af7146105f357806363e96836146105fb57610320565b80633dd657c5146104df578063469048401461055d5780634d461fbb1461056557610320565b806318160ddd116102cd578063313ce567116102a7578063313ce5671461048d5780633644e515146104ab57806339509351146104b357610320565b806318160ddd1461043557806323b872dd1461044f5780632ab4d0521461048557610320565b80630dfe1681116102fe5780630dfe1681146104015780630f35bcac1461042557806316f0115b1461042d57610320565b8063065e53601461032557806306fdde0314610344578063095ea7b3146103c1575b600080fd5b61032d610ac9565b6040805160029290920b8252519081900360200190f35b61034c610b42565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038657818101518382015260200161036e565b50505050905090810190601f1680156103b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ed600480360360408110156103d757600080fd5b506001600160a01b038135169060200135610bd9565b604080519115158252519081900360200190f35b610409610bf7565b604080516001600160a01b039092168252519081900360200190f35b61032d610c06565b610409610c16565b61043d610c25565b60408051918252519081900360200190f35b6103ed6004803603606081101561046557600080fd5b506001600160a01b03813581169160208101359091169060400135610c2b565b61043d610cb3565b610495610cb9565b6040805160ff9092168252519081900360200190f35b61043d610cc2565b6103ed600480360360408110156104c957600080fd5b506001600160a01b038135169060200135610cd1565b61055b600480360360608110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184600183028401116401000000008311171561055057600080fd5b509092509050610d1f565b005b610409610db9565b61043d610dc8565b6105bf6004803603608081101561058357600080fd5b8101908080608001906004806020026040519081016040528092919082600460200280828437600092019190915250919450610dce9350505050565b604080516001600160801b039586168152938516602085015291841683830152909216606082015290519081900360800190f35b61032d611025565b61055b600480360360c081101561061157600080fd5b6040805180820182528335600290810b946020810135820b9484820135946060830135949183019360c084019291608085019190839083908082843760009201919091525091945061102e9350505050565b61043d6110bb565b6103ed6110c1565b61043d6004803603602081101561068957600080fd5b50356001600160a01b03166110d1565b61043d600480360360208110156106af57600080fd5b50356001600160a01b03166110f0565b61055b600480360360208110156106d557600080fd5b50356001600160a01b0316611111565b61055b60048036036101a08110156106fc57600080fd5b60408051608081810183528435600290810b956020810135820b9594810135820b94606082013590920b936001600160a01b03848301351693928201926101208301919060a0840190600490839083908082843760009201919091525050604080516080818101909252929594938181019392509060049083908390808284376000920191909152509194506111939350505050565b6104096117b8565b61032d6117c7565b6104096117d7565b61043d60048036036101008110156107c157600080fd5b60408051608081810183528435946020810135946001600160a01b03948201358516946060830135169390820192610100830191908084019060049083908390808284376000920191909152509194506117ed9350505050565b610888600480360360a081101561083157600080fd5b6040805180820182528335600290810b946020810135820b946001600160801b0385830135169490820193919260a0840192916060850191908390839080828437600092019190915250919450611c8a9350505050565b6040805192835260208301919091528051918290030190f35b61034c611d22565b6108b1611d83565b604080516001600160801b039094168452602084019290925282820152519081900360600190f35b6103ed600480360360408110156108ef57600080fd5b506001600160a01b038135169060200135611e09565b610888600480360360e081101561091b57600080fd5b60408051608081810183528435946001600160a01b036020820135811695948201351693810192909160e08301919060608401906004908390839080828437600092019190915250919450611e719350505050565b6103ed6004803603604081101561098657600080fd5b506001600160a01b038135169060200135612213565b61043d612227565b61055b61223a565b6108886122ae565b61055b6123be565b61055b600480360360208110156109d257600080fd5b503560ff16612430565b61032d6124df565b6104096124ef565b6108b16124fe565b61055b600480360360e0811015610a0a57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561255a565b61043d60048036036040811015610a5b57600080fd5b506001600160a01b0381358116916020013516612711565b61049561273c565b61055b60048036036020811015610a9157600080fd5b503560020b61274c565b61055b60048036036020811015610ab157600080fd5b50356001600160a01b03166127e0565b61032d612887565b600854604080516339db007960e21b815290516000926001600160a01b03169163e76c01e49160048083019260e0929190829003018186803b158015610b0e57600080fd5b505afa158015610b22573d6000803e3d6000fd5b505050506040513d60e0811015610b3857600080fd5b5060200151919050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bce5780601f10610ba357610100808354040283529160200191610bce565b820191906000526020600020905b815481529060010190602001808311610bb157829003601f168201915b505050505090505b90565b6000610bed610be6612897565b848461289b565b5060015b92915050565b6009546001600160a01b031681565b600b546301000000900460020b81565b6008546001600160a01b031681565b60025490565b6000610c38848484612987565b610ca884610c44612897565b610ca385604051806060016040528060288152602001614751602891396001600160a01b038a16600090815260016020526040812090610c82612897565b6001600160a01b031681526020810191909152604001600020549190612ae2565b61289b565b5060015b9392505050565b600e5481565b60055460ff1690565b6000610ccc612b79565b905090565b6000610bed610cde612897565b84610ca38560016000610cef612897565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612c43565b6008546001600160a01b03163314610d3657600080fd5b601054600160a81b900460ff161515600114610d5157600080fd5b601080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690558315610d9657600954610d96906001600160a01b03163386612c9d565b8215610db357600a54610db3906001600160a01b03163385612c9d565b50505050565b6010546001600160a01b031681565b600d5481565b600080600080600b60069054906101000a90046001600160a01b03166001600160a01b0316336001600160a01b031614610e3c576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b610e44612d09565b5050600a54600954604080516370a0823160e01b81523060048201529051600093610f5a93600160c01b8204600290810b94600160d81b909304900b926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610eb257600080fd5b505afa158015610ec6573d6000803e3d6000fd5b505050506040513d6020811015610edc57600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610f2957600080fd5b505afa158015610f3d573d6000803e3d6000fd5b505050506040513d6020811015610f5357600080fd5b5051612d54565b600a548751919250610f8f91600160c01b8204600290810b92600160d81b9004900b90849030908b60015b6020020151612dfa565b600b54600954604080516370a0823160e01b81523060048201529051610ff293600281810b946301000000909204900b926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015610eb257600080fd5b600b54604088015191925061101d91600282810b9263010000009004900b90849030908b6003610f85565b509193509193565b600b5460020b81565b600b54600160301b90046001600160a01b03163314611081576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b61108b8585612fde565b50600061109a86868686612d54565b90506110b3868683308660006020020151876001610f85565b505050505050565b600c5481565b601054600160a01b900460ff1681565b6001600160a01b0381166000908152602081905260409020545b919050565b6001600160a01b0381166000908152600660205260408120610bf190613355565b600b54600160301b90046001600160a01b03163314611164576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600260075414156111eb576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600755600b54600160301b90046001600160a01b03163314611243576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b8560020b8760020b1280156112755750600a54600160a81b9004600290810b810b9088900b8161126f57fe5b0760020b155b801561129e5750600a54600160a81b9004600290810b810b9087900b8161129857fe5b0760020b155b6112a757600080fd5b8360020b8560020b1280156112d95750600a54600160a81b9004600290810b810b9086900b816112d357fe5b0760020b155b80156113025750600a54600160a81b9004600290810b810b9085900b816112fc57fe5b0760020b155b61130b57600080fd5b8560020b8460020b14158061132657508660020b8560020b14155b61132f57600080fd5b6001600160a01b03831661134257600080fd5b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038516179055611372612d09565b5050600a546000908190819061139d90600160c01b8104600290810b91600160d81b9004900b613359565b600b549295506001600160801b039182169450169150600090819081906113d290600281810b9163010000009004900b613359565b600a549295506001600160801b03918216945016915061141c90600160c01b8104600290810b91600160d81b9004900b883060018c600060200201518d60015b602002015161341b565b5050600b5461144c90600281810b9163010000009004810b90869030906001908d905b60200201518d6003611412565b50507fbc4c20ad04f161d631d9ce94d27659391196415aa3c42f6a71c62e905ece782d611477610ac9565b600954604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156114c257600080fd5b505afa1580156114d6573d6000803e3d6000fd5b505050506040513d60208110156114ec57600080fd5b5051600a54604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561153957600080fd5b505afa15801561154d573d6000803e3d6000fd5b505050506040513d602081101561156357600080fd5b505161156f868a612c43565b611579868a612c43565b611581610c25565b6040805160029790970b87526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190a18c600a60186101000a81548162ffffff021916908360020b62ffffff1602179055508b600a601b6101000a81548162ffffff021916908360020b62ffffff160217905550611681600a60189054906101000a900460020b600a601b9054906101000a900460020b600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610eb257600080fd5b600a5489519197506116b091600160c01b8204600290810b92600160d81b9004900b90899030908d6001610f85565b8a600b60006101000a81548162ffffff021916908360020b62ffffff16021790555089600b60036101000a81548162ffffff021916908360020b62ffffff160217905550611779600b60009054906101000a900460020b600b60039054906101000a900460020b600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610eb257600080fd5b600b5460408a01519194506117a491600282810b9263010000009004900b90869030908d6003610f85565b505060016007555050505050505050505050565b600f546001600160a01b031681565b600a54600160d81b900460020b81565b600b54600160301b90046001600160a01b031681565b600060026007541415611847576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026007558515158061185a5750600085115b61186357600080fd5b600c5486111580156118775750600d548511155b61188057600080fd5b6001600160a01b038416158015906118a157506001600160a01b0384163014155b6118d7576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b600f546001600160a01b0316331461191c576040805162461bcd60e51b815260206004820152600360248201526257484560e81b604482015290519081900360640190fd5b611924612d09565b5050600854604080516339db007960e21b815290516000926001600160a01b03169163e76c01e49160048083019260e0929190829003018186803b15801561196b57600080fd5b505afa15801561197f573d6000803e3d6000fd5b505050506040513d60e081101561199557600080fd5b5051905060006119cb6119b16001600160a01b03841680613669565b6ec097ce7bc90715b34b9f1000000000600160c01b6136c2565b90506000806119d86122ae565b9092509050611a0a611a036ec097ce7bc90715b34b9f10000000006119fd8d87613669565b90613771565b8a90612c43565b94508915611a2a57600954611a2a906001600160a01b031688308d6137d8565b8815611a4857600a54611a48906001600160a01b031688308c6137d8565b6000611a52610c25565b90508015611bd4576000611a796ec097ce7bc90715b34b9f10000000006119fd8688613669565b9050611a92611a888285612c43565b6119fd8985613669565b601054909750600160a01b900460ff1615611bd257600a54600954604080516370a0823160e01b81523060048201529051600093611b1393600160c01b8204600290810b94600160d81b909304900b926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610eb257600080fd5b600a548a51919250611b4291600160c01b8204600290810b92600160d81b9004900b90849030908e6001610f85565b600b54600954604080516370a0823160e01b81523060048201529051611ba593600281810b946301000000909204900b926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b158015610eb257600080fd5b600b5460408b0151919250611bd091600282810b9263010000009004900b90849030908e6003610f85565b505b505b611bde8987613847565b60408051878152602081018d90528082018c905290516001600160a01b03808c1692908b16917f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69181900360600190a3600e541580611c3f5750600e548111155b611c76576040805162461bcd60e51b81526020600482015260036024820152620dac2f60eb1b604482015290519081900360640190fd5b505060016007555091979650505050505050565b600b546000908190600160301b90046001600160a01b03163314611ce2576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b611cec8686612fde565b50611d158686611d068989896001600160801b0316613937565b86513090600090896001611412565b9097909650945050505050565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bce5780601f10610ba357610100808354040283529160200191610bce565b600b5460009081908190819081908190611dab90600281810b9163010000009004900b613359565b600b549295509093509150611dcf90600281810b9163010000009004900b85613977565b9095509350611de7856001600160801b038416612c43565b9450611dfc846001600160801b038316612c43565b9350829550505050909192565b6000610bed611e16612897565b84610ca38560405180606001604052806025815260200161480d6025913960016000611e40612897565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612ae2565b60008060026007541415611ecc576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260075585611f23576040805162461bcd60e51b815260206004820152600660248201527f7368617265730000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038516611f63576040805162461bcd60e51b8152602060048201526002602482015261746f60f01b604482015290519081900360640190fd5b611f6b612d09565b5050600a546000908190611fa990600160c01b8104600290810b91600160d81b9004900b611f9a82828d613937565b88518b906000908b6001611412565b600b5491935091506000908190611fdf90600281810b9163010000009004900b611fd482828f613937565b8c60008c600261143f565b915091506000612088611ff0610c25565b6119fd8d600960009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561205657600080fd5b505afa15801561206a573d6000803e3d6000fd5b505050506040513d602081101561208057600080fd5b505190613669565b905060006120fd612097610c25565b6119fd8e600a60009054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561205657600080fd5b9050811561211c5760095461211c906001600160a01b03168c84612c9d565b801561213957600a54612139906001600160a01b03168c83612c9d565b61214d826121478887612c43565b90612c43565b975061215d816121478786612c43565b96506001600160a01b038a1633146121a2576040805162461bcd60e51b815260206004820152600360248201526237bbb760e91b604482015290519081900360640190fd5b6121ac8a8d613a21565b604080518d8152602081018a905280820189905290516001600160a01b03808e1692908d16917febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9181900360600190a3505050505050600160078190555094509492505050565b6000610bed612220612897565b8484612987565b6ec097ce7bc90715b34b9f100000000081565b600b54600160301b90046001600160a01b0316331461228d576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6010805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6000806000806122bc6124fe565b92509250506000806122cc611d83565b600954604080516370a0823160e01b8152306004820152905193965091945061235a935085926121479289926001600160a01b0316916370a0823191602480820192602092909190829003018186803b15801561232857600080fd5b505afa15801561233c573d6000803e3d6000fd5b505050506040513d602081101561235257600080fd5b505190612c43565b600a54604080516370a0823160e01b815230600482015290519298506123b49284926121479288926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561232857600080fd5b9450505050509091565b600b54600160301b90046001600160a01b03163314612411576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600f805473ffffffffffffffffffffffffffffffffffffffff19169055565b600b54600160301b90046001600160a01b03163314612483576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600a805460ff808416600160a01b90810260ff60a01b199093169290921792839055604080519290930416815290517f91f2ade82ab0e77bb6823899e6daddc07e3da0e3ad998577e7c09c2f38943c439181900360200190a150565b600a54600160a81b900460020b81565b600a546001600160a01b031681565b60008060008060008061252f600a60189054906101000a900460020b600a601b9054906101000a900460020b613359565b600a549295509093509150611dcf90600160c01b8104600290810b91600160d81b9004900b85613977565b834211156125af576040805162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b6001600160a01b03871660009081526006602052604081207f0000000000000000000000000000000000000000000000000000000000000000908990899089906125f890613355565b8960405160200180878152602001866001600160a01b03168152602001856001600160a01b031681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050600061266182613b1d565b9050600061267182878787613b69565b9050896001600160a01b0316816001600160a01b0316146126d9576040805162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b6001600160a01b038a1660009081526006602052604090206126fa90613cde565b6127058a8a8a61289b565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600a54600160a01b900460ff1681565b600b54600160301b90046001600160a01b0316331461279f576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600a805460029290920b62ffffff16600160a81b027fffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600b54600160301b90046001600160a01b03163314612833576040805162461bcd60e51b815260206004820152600a60248201526937b7363c9037bbb732b960b11b604482015290519081900360640190fd5b6001600160a01b03811661284657600080fd5b600b80546001600160a01b03909216600160301b027fffffffffffff0000000000000000000000000000000000000000ffffffffffff909216919091179055565b600a54600160c01b900460020b81565b3390565b6001600160a01b0383166128e05760405162461bcd60e51b81526004018080602001828103825260248152602001806147bf6024913960400191505060405180910390fd5b6001600160a01b0382166129255760405162461bcd60e51b815260040180806020018281038252602281526020018061467e6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166129cc5760405162461bcd60e51b815260040180806020018281038252602581526020018061479a6025913960400191505060405180910390fd5b6001600160a01b038216612a115760405162461bcd60e51b81526004018080602001828103825260238152602001806146396023913960400191505060405180910390fd5b612a1c838383612d04565b612a59816040518060600160405280602681526020016146a0602691396001600160a01b0386166000908152602081905260409020549190612ae2565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612a889082612c43565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115612b715760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612b36578181015183820152602001612b1e565b50505050905090810190601f168015612b635780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60007f0000000000000000000000000000000000000000000000000000000000000000612ba4613ce7565b1415612bd157507f0000000000000000000000000000000000000000000000000000000000000000610bd6565b612c3c7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000613ceb565b9050610bd6565b600082820183811015610cac576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052612d04908490613d4d565b505050565b600a546000908190612d3090600160c01b8104600290810b91600160d81b9004900b612fde565b600b54909250612d4e90600281810b9163010000009004900b612fde565b90509091565b600080600860009054906101000a90046001600160a01b03166001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160e06040518083038186803b158015612da557600080fd5b505afa158015612db9573d6000803e3d6000fd5b505050506040513d60e0811015612dcf57600080fd5b50519050612df081612de088613dfe565b612de988613dfe565b8787614130565b9695505050505050565b6001600160801b038416156110b3576001601060156101000a81548160ff021916908315150217905550600080600860009054906101000a90046001600160a01b03166001600160a01b031663aafe29c030308b8b8b8b60405160200180826001600160a01b031681526020019150506040516020818303038152906040526040518763ffffffff1660e01b815260040180876001600160a01b03168152602001866001600160a01b031681526020018560020b81526020018460020b8152602001836001600160801b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612f04578181015183820152602001612eec565b50505050905090810190601f168015612f315780820380516001836020036101000a031916815260200191505b50975050505050505050606060405180830381600087803b158015612f5557600080fd5b505af1158015612f69573d6000803e3d6000fd5b505050506040513d6060811015612f7f57600080fd5b5080516020909101519092509050838210801590612f9d5750828110155b612fd4576040805162461bcd60e51b815260206004820152600360248201526250534360e81b604482015290519081900360640190fd5b5050505050505050565b6000612fea8383613359565b50909150506001600160801b03811615610bf1576008546040805163a34123a760e01b8152600286810b600483015285900b602482015260006044820181905282516001600160a01b039094169363a34123a7936064808501949193918390030190829087803b15801561305d57600080fd5b505af1158015613071573d6000803e3d6000fd5b505050506040513d604081101561308757600080fd5b5050600854604080516309e3d67b60e31b8152306004820152600286810b602483015285900b60448201526001600160801b03606482018190526084820152815160009384936001600160a01b0390911692634f1eb3d89260a4808301939282900301818787803b1580156130fb57600080fd5b505af115801561310f573d6000803e3d6000fd5b505050506040513d604081101561312557600080fd5b508051602091820151600a546040805160ff600160a01b9093049290921682526001600160801b039384169482018590529290911681830181905291519294509092507f4606b8a47eb284e8e80929101ece6ab5fe8d4f8735acc56bd0c92ca872f2cfe7919081900360600190a1600a546000906131ae908490600160a01b900460ff16613771565b11801561322f5750600954604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561320157600080fd5b505afa158015613215573d6000803e3d6000fd5b505050506040513d602081101561322b57600080fd5b5051115b1561327057601054600a54613270916001600160a01b03169061325d908590600160a01b900460ff16613771565b6009546001600160a01b03169190612c9d565b600a5460009061328b908390600160a01b900460ff16613771565b11801561330c5750600a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156132de57600080fd5b505afa1580156132f2573d6000803e3d6000fd5b505050506040513d602081101561330857600080fd5b5051115b1561334d57601054600a5461334d916001600160a01b03169061333a908490600160a01b900460ff16613771565b600a546001600160a01b03169190612c9d565b505092915050565b5490565b600080600080600030905062ffffff861662ffffff88168260181b1760181b179150600860009054906101000a90046001600160a01b03166001600160a01b031663514ea4bf836040518263ffffffff1660e01b81526004018082815260200191505060c06040518083038186803b1580156133d457600080fd5b505afa1580156133e8573d6000803e3d6000fd5b505050506040513d60c08110156133fe57600080fd5b508051608082015160a09092015190999198509650945050505050565b6000806001600160801b0387161561365d576008546040805163a34123a760e01b815260028c810b60048301528b900b60248201526001600160801b038a166044820152815160009384936001600160a01b039091169263a34123a7926064808301939282900301818787803b15801561349457600080fd5b505af11580156134a8573d6000803e3d6000fd5b505050506040513d60408110156134be57600080fd5b50805160209091015190925090508582108015906134dc5750848110155b613513576040805162461bcd60e51b815260206004820152600360248201526250534360e81b604482015290519081900360640190fd5b60008761352857613523836141e8565b613531565b6001600160801b035b905060008861354857613543836141e8565b613551565b6001600160801b035b90506000826001600160801b0316118061357457506000816001600160801b0316115b1561365857600860009054906101000a90046001600160a01b03166001600160a01b0316634f1eb3d88b8f8f86866040518663ffffffff1660e01b815260040180866001600160a01b031681526020018560020b81526020018460020b8152602001836001600160801b03168152602001826001600160801b03168152602001955050505050506040805180830381600087803b15801561361457600080fd5b505af1158015613628573d6000803e3d6000fd5b505050506040513d604081101561363e57600080fd5b5080516020909101516001600160801b0391821697501694505b505050505b97509795505050505050565b60008261367857506000610bf1565b8282028284828161368557fe5b0414610cac5760405162461bcd60e51b81526004018080602001828103825260218152602001806147306021913960400191505060405180910390fd5b60008080600019858709868602925082811090839003039050806136f857600084116136ed57600080fd5b508290049050610cac565b80841161370457600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60008082116137c7576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816137d057fe5b049392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b179052610db3908590613d4d565b6001600160a01b0382166138a2576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6138ae60008383612d04565b6002546138bb9082612c43565b6002556001600160a01b0382166000908152602081905260409020546138e19082612c43565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000806139448585613359565b5050905061396e613969613956610c25565b6119fd6001600160801b03851687613669565b6141e8565b95945050505050565b6000806000600860009054906101000a90046001600160a01b03166001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160e06040518083038186803b1580156139ca57600080fd5b505afa1580156139de573d6000803e3d6000fd5b505050506040513d60e08110156139f457600080fd5b50519050613a1481613a0588613dfe565b613a0e88613dfe565b876141ff565b9250925050935093915050565b6001600160a01b038216613a665760405162461bcd60e51b81526004018080602001828103825260218152602001806147796021913960400191505060405180910390fd5b613a7282600083612d04565b613aaf8160405180606001604052806022815260200161465c602291396001600160a01b0385166000908152602081905260409020549190612ae2565b6001600160a01b038316600090815260208190526040902055600254613ad5908261429b565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6000613b27612b79565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613bca5760405162461bcd60e51b81526004018080602001828103825260228152602001806146c66022913960400191505060405180910390fd5b8360ff16601b1480613bdf57508360ff16601c145b613c1a5760405162461bcd60e51b815260040180806020018281038252602281526020018061470e6022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015613c76573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661396e576040805162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b80546001019055565b4690565b6000838383613cf8613ce7565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b03168152602001955050505050506040516020818303038152906040528051906020012090509392505050565b6000613da2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166142f89092919063ffffffff16565b805190915015612d0457808060200190516020811015613dc157600080fd5b5051612d045760405162461bcd60e51b815260040180806020018281038252602a8152602001806147e3602a913960400191505060405180910390fd5b6000600282810b60171d90818418829003900b620d89e8811115613e4d576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216613e6e57700100000000000000000000000000000000613e80565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613eb4576ffff97272373d413259a46990580e213a0260801c5b6004821615613ed3576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613ef2576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613f11576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613f30576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613f4f576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613f6e576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613f8e576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613fae576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613fce576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613fee576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561400e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561402e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561404e576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561406e576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561408f576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156140af576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156140ce576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156140eb576b048a170391f7dc42444e8fa20260801c5b60008560020b131561410657806000198161410257fe5b0490505b64010000000081061561411a57600161411d565b60005b60ff16602082901c019350505050919050565b6000836001600160a01b0316856001600160a01b03161115614150579293925b846001600160a01b0316866001600160a01b03161161417b5761417485858561430f565b905061396e565b836001600160a01b0316866001600160a01b031610156141dd5760006141a287868661430f565b905060006141b1878986614372565b9050806001600160801b0316826001600160801b0316106141d257806141d4565b815b9250505061396e565b612df0858584614372565b60006001600160801b038211156141fb57fe5b5090565b600080836001600160a01b0316856001600160a01b03161115614220579293925b846001600160a01b0316866001600160a01b03161161424b576142448585856143af565b9150614292565b836001600160a01b0316866001600160a01b03161015614284576142708685856143af565b915061427d858785614418565b9050614292565b61428f858585614418565b90505b94509492505050565b6000828211156142f2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6060614307848460008561445b565b949350505050565b6000826001600160a01b0316846001600160a01b0316111561432f579192915b6000614352856001600160a01b0316856001600160a01b0316600160601b6136c2565b905061396e61436d84838888036001600160a01b03166136c2565b6145b6565b6000826001600160a01b0316846001600160a01b03161115614392579192915b61430761436d83600160601b8787036001600160a01b03166136c2565b6000826001600160a01b0316846001600160a01b031611156143cf579192915b836001600160a01b0316614408606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b03166136c2565b8161440f57fe5b04949350505050565b6000826001600160a01b0316846001600160a01b03161115614438579192915b614307826001600160801b03168585036001600160a01b0316600160601b6136c2565b60608247101561449c5760405162461bcd60e51b81526004018080602001828103825260268152602001806146e86026913960400191505060405180910390fd5b6144a5856145cc565b6144f6576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106145345780518252601f199092019160209182019101614515565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614596576040519150601f19603f3d011682016040523d82523d6000602084013e61459b565b606091505b50915091506145ab8282866145d2565b979650505050505050565b806001600160801b03811681146110eb57600080fd5b3b151590565b606083156145e1575081610cac565b8251156145f15782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315612b36578181015183820152602001612b1e56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545434453413a20696e76616c6964207369676e6174757265202773272076616c7565416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c45434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a0000000000000000000000002b419080b9f4b4ecfaf3598e3c51f7e601946b3400000000000000000000000071e7d05be74ff748c45402c06a941c822d756dc5000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000b6157455448652d55534474000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b6157455448652d55534474000000000000000000000000000000000000000000