[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" }, { "internalType": "address", "name": "traderJoePoolAddress", "type": "address" }, { "internalType": "address", "name": "traderJoeRouterAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [], "name": "BinHelper__LiquidityOverflow", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "MathOverflowedMulDiv", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "x", "type": "uint256" }, { "internalType": "int256", "name": "y", "type": "int256" } ], "name": "Uint128x128Math__PowUnderflow", "type": "error" }, { "inputs": [], "name": "Uint256x256Math__MulShiftOverflow", "type": "error" }, { "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": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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" }, { "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": "value", "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": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals0", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals1", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "deposit0", "type": "uint256" }, { "internalType": "uint256", "name": "deposit1", "type": "uint256" }, { "internalType": "uint16", "name": "slippage", "type": "uint16" }, { "internalType": "uint16", "name": "liquiditySlippage", "type": "uint16" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "lowerBin", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "managementFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "managementFeeReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "previous0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "previous1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "_lowerBin", "type": "uint24" }, { "internalType": "uint24", "name": "_upperBin", "type": "uint24" }, { "internalType": "uint16", "name": "slippage", "type": "uint16" }, { "internalType": "uint16", "name": "liquiditySlippage", "type": "uint16" } ], "name": "rebalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint16", "name": "liquiditySlippage", "type": "uint16" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_managementFee", "type": "uint16" } ], "name": "setManagementFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_managementFeeReceiver", "type": "address" } ], "name": "setManagementFeeReceiver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "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": [], "name": "totalTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "traderJoePool", "outputs": [ { "internalType": "contract ILBPair", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "traderJoeRouter", "outputs": [ { "internalType": "contract ILBRouter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "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": "upperBin", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" } ]
6101406040526008805461ffff19166105dc1790553480156200002157600080fd5b5060405162005a2c38038062005a2c83398101604081905262000044916200094d565b826040518060400160405280601081526020016f2cb4b2b632102130b9b2902a37b5b2b760811b8152506040518060400160405280600381526020016216509560ea1b81525081600390816200009b919062000a46565b506004620000aa828262000a46565b5050506001600160a01b038116620000dd57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000e881620003c9565b506001600160a01b03808216608052821660a0819052604080516305e8746d60e01b815290516305e8746d916004808201926020929091908290030181865afa1580156200013a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000160919062000b12565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e0919062000b12565b6001600160a01b031660e05260c0516000908190620001ff906200041b565b91509150816200021157601262000213565b805b60ff166101005260e05160009081906200022d906200041b565b91509150816200023f57601262000241565b805b60ff166101208160ff1681525050601460a0516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000292573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b8919062000b39565b620002c4919062000b76565b600560146101000a81548162ffffff021916908362ffffff16021790555060a0516001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000323573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000349919062000b39565b6200035690601462000b9c565b6005805462ffffff60b81b1916600160b81b62ffffff938416810291909117918290556200039392600160a01b8304811692919091041662000500565b5050600880546001600160a01b03909616620100000262010000600160b01b0319909616959095179094555062000ce692505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b03871691620004649162000bbb565b600060405180830381855afa9150503d8060008114620004a1576040519150601f19603f3d011682016040523d82523d6000602084013e620004a6565b606091505b5091509150818015620004bb57506020815110155b15620004f357600081806020019051810190620004d9919062000bec565b905060ff8111620004f1576001969095509350505050565b505b5060009485945092505050565b60006200050e838362000b76565b6200051b90600162000b9c565b62ffffff169050806001600160401b038111156200053d576200053d620009a1565b60405190808252806020026020018201604052801562000567578160200160208202803683370190505b5080516200057e91600691602090910190620008d7565b50806001600160401b038111156200059a576200059a620009a1565b604051908082528060200260200182016040528015620005c4578160200160208202803683370190505b508051620005db91600791602090910190620008d7565b5060005b818110156200089b57600062000605620005ff8362ffffff881662000c06565b620008a1565b60a051604051627eeac760e11b815230600482015262ffffff831660248201529192506000916001600160a01b039091169062fdd58e90604401602060405180830381865afa1580156200065d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000683919062000bec565b60a051604051630157d2d160e31b815262ffffff8516600482015291925060009182916001600160a01b031690630abe9688906024016040805180830381865afa158015620006d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006fc919062000c3f565b60a05160405163bd85b03960e01b815262ffffff881660048201526001600160801b0393841695509190921692506001600160a01b039091169063bd85b03990602401602060405180830381865afa1580156200075d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000783919062000bec565b6200078f838562000c77565b6200079b919062000c91565b60068681548110620007b157620007b162000cb4565b60009182526020909120015560a05160405163bd85b03960e01b815262ffffff861660048201526001600160a01b039091169063bd85b03990602401602060405180830381865afa1580156200080b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000831919062000bec565b6200083d828562000c77565b62000849919062000c91565b600786815481106200085f576200085f62000cb4565b9060005260206000200160008282546200087a919062000c06565b92505081905550505050508080620008929062000cca565b915050620005df565b50505050565b600062ffffff821115620008d3576040516306dfcc6560e41b81526018600482015260248101839052604401620000d4565b5090565b82805482825590600052602060002090810192821562000915579160200282015b8281111562000915578251825591602001919060010190620008f8565b50620008d39291505b80821115620008d357600081556001016200091e565b6001600160a01b03811681146200094a57600080fd5b50565b6000806000606084860312156200096357600080fd5b8351620009708162000934565b6020850151909350620009838162000934565b6040850151909250620009968162000934565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620009cc57607f821691505b602082108103620009ed57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000a4157600081815260208120601f850160051c8101602086101562000a1c5750805b601f850160051c820191505b8181101562000a3d5782815560010162000a28565b5050505b505050565b81516001600160401b0381111562000a625762000a62620009a1565b62000a7a8162000a738454620009b7565b84620009f3565b602080601f83116001811462000ab2576000841562000a995750858301515b600019600386901b1c1916600185901b17855562000a3d565b600085815260208120601f198616915b8281101562000ae35788860151825594840194600190910190840162000ac2565b508582101562000b025787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000b2557600080fd5b815162000b328162000934565b9392505050565b60006020828403121562000b4c57600080fd5b815162ffffff8116811462000b3257600080fd5b634e487b7160e01b600052601160045260246000fd5b62ffffff82811682821603908082111562000b955762000b9562000b60565b5092915050565b62ffffff81811683821601908082111562000b955762000b9562000b60565b6000825160005b8181101562000bde576020818601810151858301520162000bc2565b506000920191825250919050565b60006020828403121562000bff57600080fd5b5051919050565b8082018082111562000c1c5762000c1c62000b60565b92915050565b80516001600160801b038116811462000c3a57600080fd5b919050565b6000806040838503121562000c5357600080fd5b62000c5e8362000c22565b915062000c6e6020840162000c22565b90509250929050565b808202811582820484141762000c1c5762000c1c62000b60565b60008262000caf57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820162000cdf5762000cdf62000b60565b5060010190565b60805160a05160c05160e0516101005161012051614b5262000eda6000396000818161047001528181612498015281816124e60152818161252b015281816125d10152818161279401526135f401526000818161041501528181612474015281816124c50152818161254c0152818161258d0152818161275001526135b20152600081816104f1015281816106cc01528181610fb7015281816110040152818161180a01528181611dd801528181612c6b0152612edb01526000818161023b0152818161069101528181610f9601528181611025015281816117e901528181611db601528181612c3c0152612dd101526000818161035901528181610a6701528181610b2201528181610bea01528181610cb501528181610ecd01528181611097015281816113b6015281816114b00152818161156f0152818161163a0152818161175c0152818161182b015281816119d501528181611a9101528181611b8001528181611c2001528181611f9101528181612025015281816120c20152818161217a015281816124000152818161292301528181612a7901528181612c9a01526135330152600081816102b20152818161172d015281816117ba01528181611d88015281816127fa01528181612aba01528181612b6201528181612e0001528181612eac0152612f4e0152614b526000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f578063a28af8a4116100a2578063ccdca12c11610071578063ccdca12c146104d9578063d21220a7146104ec578063dd62ed3e14610513578063f2fde38b1461054c57600080fd5b8063a28af8a41461046b578063a6f7f5d614610492578063a9059cbb146104b3578063afca6fec146104c657600080fd5b80637e1c0c09116100de5780637e1c0c09146104375780638da5cb5b1461043f5780638dd09af31461045057806395d89b411461046357600080fd5b806370a08231146103cc578063715018a6146103f557806379cc6790146103fd5780637bdd6b441461041057600080fd5b806336da1a1c116101875780635e2f0e3b116101565780635e2f0e3b146103545780635f04faa21461037b5780635fccd5451461038e5780636decb9f5146103b657600080fd5b806336da1a1c146102e957806342401ac6146102fc57806342966c6814610326578063430399471461033b57600080fd5b80631ca64a7d116101c35780631ca64a7d1461028757806323b872dd1461029a5780632faff427146102ad578063313ce567146102d457600080fd5b806306fdde03146101f5578063095ea7b3146102135780630dfe16811461023657806318160ddd14610275575b600080fd5b6101fd61055f565b60405161020a9190614089565b60405180910390f35b6102266102213660046140d8565b6105f1565b604051901515815260200161020a565b61025d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161020a565b6002545b60405190815260200161020a565b610279610295366004614112565b61060b565b6102266102a836600461415c565b61074a565b61025d7f000000000000000000000000000000000000000000000000000000000000000081565b60125b60405160ff909116815260200161020a565b6102796102f7366004614198565b610770565b60055461031290600160a01b900462ffffff1681565b60405162ffffff909116815260200161020a565b610339610334366004614198565b610791565b005b60085461025d906201000090046001600160a01b031681565b61025d7f000000000000000000000000000000000000000000000000000000000000000081565b6103396103893660046141c2565b61079e565b6103a161039c366004614203565b61092a565b6040805192835260208301919091520161020a565b60055461031290600160b81b900462ffffff1681565b6102796103da366004614233565b6001600160a01b031660009081526020819052604090205490565b6103396109f0565b61033961040b3660046140d8565b610a04565b6102d77f000000000000000000000000000000000000000000000000000000000000000081565b6103a1610a1d565b6005546001600160a01b031661025d565b61033961045e36600461424e565b610d9a565b6101fd610dba565b6102d77f000000000000000000000000000000000000000000000000000000000000000081565b6008546104a09061ffff1681565b60405161ffff909116815260200161020a565b6102266104c13660046140d8565b610dc9565b6103396104d4366004614233565b610dd7565b6102796104e7366004614198565b610e09565b61025d7f000000000000000000000000000000000000000000000000000000000000000081565b61027961052136600461426b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61033961055a366004614233565b610e19565b60606003805461056e9061429e565b80601f016020809104026020016040519081016040528092919081815260200182805461059a9061429e565b80156105e75780601f106105bc576101008083540402835291602001916105e7565b820191906000526020600020905b8154815290600101906020018083116105ca57829003601f168201915b5050505050905090565b6000336105ff818585610e54565b60019150505b92915050565b60008085118061061b5750600084115b61067e5760405162461bcd60e51b815260206004820152602960248201527f4465706f73697420616d6f756e7473206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084015b60405180910390fd5b84156106b9576106b96001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333088610e66565b83156106f4576106f46001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333087610e66565b600554600090819061072390889088908890889062ffffff600160a01b8204811691600160b81b900416610ec6565b915091506000610733838361108f565b905061073f3382611182565b979650505050505050565b6000336107588582856111b8565b610763858585611230565b60019150505b9392505050565b6006818154811061078057600080fd5b600091825260209091200154905081565b61079b338261128f565b50565b6107a66112c5565b8262ffffff168462ffffff16106108195760405162461bcd60e51b815260206004820152603160248201527f546865206c6f7765722062696e2073686f756c6420626520696e666572696f72604482015270103a37903a3432903ab83832b9103134b760791b6064820152608401610675565b603361082585856142ee565b61083090600161430a565b62ffffff1611156108925760405162461bcd60e51b815260206004820152602660248201527f4d6178206e756d626572206f662062696e7320666f72205472616465724a6f6560448201526520697320353160d01b6064820152608401610675565b60008061089d610a1d565b9150915060008211806108b05750600081115b156108e95760006108c060025490565b90506000806108d1838730866112f2565b915091506108e3828289898d8d610ec6565b50505050505b50506005805465ffffffffffff60a01b1916600160a01b62ffffff9687160262ffffff60b81b191617600160b81b9490951693909302939093179091555050565b6000806000841161098d5760405162461bcd60e51b815260206004820152602760248201527f53686172657320616d6f756e74206d7573742062652067726561746572207468604482015266616e207a65726f60c81b6064820152608401610675565b600061099860025490565b90506109a43386610a04565b6109ac611977565b50506000806109bd878733866112f2565b60055491935091506109e49062ffffff600160a01b8204811691600160b81b900416611e72565b90969095509350505050565b6109f86112c5565b610a02600061224b565b565b610a0f8233836111b8565b610a19828261128f565b5050565b60008060008060005b600554610a489062ffffff600160a01b8204811691600160b81b9004166142ee565b610a5390600161430a565b62ffffff16811015610d90576005546000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062fdd58e903090610aae908690600160a01b900462ffffff16614326565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015610af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1b9190614339565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630abe968885600560149054906101000a900462ffffff1662ffffff16610b719190614326565b6040516001600160e01b031960e084901b16815262ffffff90911660048201526024016040805180830381865afa158015610bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd49190614369565b6005546001600160801b039283169450911691507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bd85b03990610c30908790600160a01b900462ffffff16614326565b6040518263ffffffff1660e01b8152600401610c4e91815260200190565b602060405180830381865afa158015610c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8f9190614339565b610c998385614393565b610ca391906143c0565b610cad9087614326565b6005549096507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bd85b03990610cfb908790600160a01b900462ffffff16614326565b6040518263ffffffff1660e01b8152600401610d1991815260200190565b602060405180830381865afa158015610d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5a9190614339565b610d648285614393565b610d6e91906143c0565b610d789086614326565b94505050508080610d88906143d4565b915050610a26565b5090939092509050565b610da26112c5565b6008805461ffff191661ffff92909216919091179055565b60606004805461056e9061429e565b6000336105ff818585611230565b610ddf6112c5565b600880546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6007818154811061078057600080fd5b610e216112c5565b6001600160a01b038116610e4b57604051631e4fbdf760e01b815260006004820152602401610675565b61079b8161224b565b610e61838383600161229d565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ec0908590612372565b50505050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4d91906143ed565b90506000610f5a826123d5565b90506000610f698b8b84612585565b9050600080610f7b8585858c8c612636565b91509150818d1115610fed57610fdc610f94838f61440a565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008e6127e3565b610fe6908d614326565b9050611057565b808c11156110575761104a611002828e61440a565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008e6127e3565b611054908e614326565b91505b61105f611977565b5050611070858584848e8e8e612c07565b909750955061107f8989611e72565b5050505050965096945050505050565b60008061111c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111791906143ed565b6123d5565b9050600061112b858584612585565b9050600080611138610a1d565b915091506000611149838387612585565b905061115460025490565b156111745761116f61116560025490565b8590836000612ffb565b611176565b835b98975050505050505050565b6001600160a01b0382166111ac5760405163ec442f0560e01b815260006004820152602401610675565b610a196000838361304c565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610ec0578181101561122157604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610675565b610ec08484848403600061229d565b6001600160a01b03831661125a57604051634b637e8f60e11b815260006004820152602401610675565b6001600160a01b0382166112845760405163ec442f0560e01b815260006004820152602401610675565b610e6183838361304c565b6001600160a01b0382166112b957604051634b637e8f60e11b815260006004820152602401610675565b610a198260008361304c565b6005546001600160a01b03163314610a025760405163118cdaa760e01b8152336004820152602401610675565b6005546000908190819061131b9062ffffff600160a01b8204811691600160b81b9004166142ee565b61132690600161430a565b62ffffff1667ffffffffffffffff8111156113435761134361441d565b60405190808252806020026020018201604052801561136c578160200160208202803683370190505b50905060008060005b6005546113979062ffffff600160a01b8204811691600160b81b9004166142ee565b6113a290600161430a565b62ffffff16811015611715576005546000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062fdd58e9030906113fd908690600160a01b900462ffffff16614326565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015611446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146a9190614339565b905087156114845761147f8b828a6000612ffb565b611486565b805b90508085838151811061149b5761149b614433565b602090810291909101015260055460009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630abe9688906114f6908790600160a01b900462ffffff16614326565b6040516001600160e01b031960e084901b16815262ffffff90911660048201526024016040805180830381865afa158015611535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115599190614369565b6005546001600160801b039283169450911691507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bd85b039906115b5908790600160a01b900462ffffff16614326565b6040518263ffffffff1660e01b81526004016115d391815260200190565b602060405180830381865afa1580156115f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116149190614339565b61161e8385614393565b61162891906143c0565b6116329087614326565b6005549096507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bd85b03990611680908790600160a01b900462ffffff16614326565b6040518263ffffffff1660e01b815260040161169e91815260200190565b602060405180830381865afa1580156116bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116df9190614339565b6116e98285614393565b6116f391906143c0565b6116fd9086614326565b9450505050808061170d906143d4565b915050611375565b506040516339612d9560e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152600160248301527f0000000000000000000000000000000000000000000000000000000000000000169063e584b65490604401600060405180830381600087803b1580156117a057600080fd5b505af11580156117b4573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c22159b67f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166317f11ecc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab9190614449565b6127106118b88e82614466565b6118c69061ffff1689614393565b6118d091906143c0565b6127106118dd8f82614466565b6118eb9061ffff1689614393565b6118f591906143c0565b6118fd613176565b8a8f426040518a63ffffffff1660e01b8152600401611924999897969594939291906144bc565b60408051808303816000875af1158015611942573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611966919061452a565b945094505050505b94509492505050565b6000806000611984613176565b90506000815167ffffffffffffffff8111156119a2576119a261441d565b6040519080825280602002602001820160405280156119cb578160200160208202803683370190505b50905060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166317f11ecc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a559190614449565b905060005b8551811015611d59576000611a87878381518110611a7a57611a7a614433565b6020026020010151613261565b9050600080611ab77f00000000000000000000000000000000000000000000000000000000000000003085613295565b915091506000821180611aca5750600081115b15611d4b57600080611b1a878660068981548110611aea57611aea614433565b906000526020600020015460078a81548110611b0857611b08614433565b906000526020600020015488886133d5565b6008549193509150600090611b3990849061ffff166127106001612ffb565b600854909150600090611b5690849061ffff166127106001612ffb565b604051630157d2d160e31b815262ffffff8916600482015290915060009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630abe9688906024016040805180830381865afa158015611bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bea9190614369565b60405163bd85b03960e01b815262ffffff8c1660048201526001600160801b039283169450911691506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd85b03990602401602060405180830381865afa158015611c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8b9190614339565b9050600083118015611c9b575081155b15611cce57611cab858285613422565b8f8c81518110611cbd57611cbd614433565b602002602001018181525050611d2b565b82158015611cdc5750600082115b15611cec57611cab848284613422565b611cf7848284613422565b611d02868386613422565b611d0c9190614326565b8f8c81518110611d1e57611d1e614433565b6020026020010181815250505b611d35858f614326565b9d50611d41848e614326565b9c50505050505050505b836001019350505050611a5a565b506000831180611d695750600082115b15611e6357600854604051636110acdb60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263c22159b692611e14927f0000000000000000000000000000000000000000000000000000000000000000927f00000000000000000000000000000000000000000000000000000000000000009288928b928b928f928f92620100009004169042906004016144bc565b60408051808303816000875af1158015611e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e56919061452a565b9650965050505050509091565b50600096879650945050505050565b6000611e7e83836142ee565b611e8990600161430a565b62ffffff1690508067ffffffffffffffff811115611ea957611ea961441d565b604051908082528060200260200182016040528015611ed2578160200160208202803683370190505b508051611ee79160069160209091019061400e565b508067ffffffffffffffff811115611f0157611f0161441d565b604051908082528060200260200182016040528015611f2a578160200160208202803683370190505b508051611f3f9160079160209091019061400e565b5060005b81811015610ec0576000611f64611f5f8362ffffff8816614326565b613261565b604051627eeac760e11b815230600482015262ffffff821660248201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e90604401602060405180830381865afa158015611fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffb9190614339565b604051630157d2d160e31b815262ffffff8416600482015290915060009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630abe9688906024016040805180830381865afa15801561206b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208f9190614369565b60405163bd85b03960e01b815262ffffff871660048201526001600160801b039283169450911691506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd85b03990602401602060405180830381865afa158015612109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212d9190614339565b6121378385614393565b61214191906143c0565b6006868154811061215457612154614433565b60009182526020909120015560405163bd85b03960e01b815262ffffff851660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bd85b03990602401602060405180830381865afa1580156121c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ed9190614339565b6121f78285614393565b61220191906143c0565b6007868154811061221457612214614433565b90600052602060002001600082825461222d9190614326565b92505081905550505050508080612243906143d4565b915050611f43565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166122c75760405163e602df0560e01b815260006004820152602401610675565b6001600160a01b0383166122f157604051634a1406b160e11b815260006004820152602401610675565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610ec057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161236491815260200190565b60405180910390a350505050565b60006123876001600160a01b038416836134e6565b905080516000141580156123ac5750808060200190518101906123aa919061454e565b155b15610e6157604051635274afe760e01b81526001600160a01b0384166004820152602401610675565b604051634c7cffbd60e01b815262ffffff821660048201526000908190612470906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634c7cffbd90602401602060405180830381865afa158015612447573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246b9190614339565b6134f4565b90507f000000000000000000000000000000000000000000000000000000000000000060ff167f000000000000000000000000000000000000000000000000000000000000000060ff1611156125265761250a7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614570565b61251590600a61466d565b61251f90826143c0565b9050610605565b6125707f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614570565b61257b90600a61466d565b6107699082614393565b6000806125b37f00000000000000000000000000000000000000000000000000000000000000006012614570565b6125be90600a61466d565b6125c89086614393565b905060006125f77f00000000000000000000000000000000000000000000000000000000000000006012614570565b61260290600a61466d565b61260c9086614393565b9050600061261a8584614393565b61262c670de0b6b3a764000084614393565b61073f9190614326565b6000806000612645888861350a565b905060008562ffffff168962ffffff16101561266a5750670de0b6b3a76400006126f2565b8462ffffff168962ffffff161115612684575060006126f2565b6126ef826126928b886142ee565b6126a99062ffffff16670de0b6b3a7640000614393565b6126b39190614326565b6126bd88886142ee565b6126c890600161430a565b6126df9062ffffff16670de0b6b3a7640000614393565b670de0b6b3a76400009190613422565b90505b6000670de0b6b3a7640000896127088a85614393565b61271291906143c0565b61271c91906143c0565b90506000670de0b6b3a76400006127338b84614393565b61273d908b61440a565b61274791906143c0565b905060006127767f00000000000000000000000000000000000000000000000000000000000000006012614570565b61278190600a61466d565b61278b90846143c0565b905060006127ba7f00000000000000000000000000000000000000000000000000000000000000006012614570565b6127c590600a61466d565b6127cf90846143c0565b919d919c50909a5050505050505050505050565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018690526000919085169063095ea7b3906044016020604051808303816000875af1158015612856573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287a919061454e565b5060408051600280825260608201835260009260208301908036833701905050905084816000815181106128b0576128b0614433565b60200260200101906001600160a01b031690816001600160a01b03168152505083816001815181106128e4576128e4614433565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092526000918160200160208202803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166317f11ecc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561297f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a39190614449565b61ffff16816000815181106129ba576129ba614433565b60209081029190910101526040805160018082528183019092526000918160200160208202803683370190505090506002816000815181106129fe576129fe614433565b60200260200101906002811115612a1757612a1761467c565b90816002811115612a2a57612a2a61467c565b81525050612a5260405180606001604052806060815260200160608152602001606081525090565b8281526020810182905260408082018590525163a0d376cf60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160801b038b166024830152600160448301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063a0d376cf90606401606060405180830381865afa158015612b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b279190614692565b50915060009050612710612b3b8982614466565b612b499061ffff16846146d5565b612b539190614700565b6001600160801b0316905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632a443fae8d848730426040518663ffffffff1660e01b8152600401612bb495949392919061475f565b6020604051808303816000875af1158015612bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf79190614339565b9c9b505050505050505050505050565b600080600080612c198b8b8888613670565b915091506000612c2a8c888861398f565b90506000604051806101e001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166317f11ecc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1a9190614449565b61ffff1681526020018c81526020018b81526020016127108b612710612d409190614466565b612d4e9061ffff168f614393565b612d5891906143c0565b8152602001612710612d6a8c82614466565b612d789061ffff168e614393565b612d8291906143c0565b81526020018e62ffffff16815260200160008152602001838152602001858152602001848152602001306001600160a01b03168152602001336001600160a01b031681526020014281525090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663095ea7b37f00000000000000000000000000000000000000000000000000000000000000008d6040518363ffffffff1660e01b8152600401612e519291906001600160a01b03929092168252602082015260400190565b6020604051808303816000875af1158015612e70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e94919061454e565b5060405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018c90527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015612f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f48919061454e565b506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a3c7271a846040518263ffffffff1660e01b8152600401612f989190614830565b6000604051808303816000875af1158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf91908101906149f3565b50939b5091995050505050505050505097509795505050505050565b600080613009868686613422565b905061301483613a6a565b801561303057506000848061302b5761302b6143aa565b868809115b1561304357613040600182614326565b90505b95945050505050565b6001600160a01b03831661307757806002600082825461306c9190614326565b909155506130e99050565b6001600160a01b038316600090815260208190526040902054818110156130ca5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610675565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661310557600280548290039055613124565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161316991815260200190565b60405180910390a3505050565b60055460609060009061319e9062ffffff600160a01b8204811691600160b81b9004166142ee565b6131a990600161430a565b62ffffff16905060008167ffffffffffffffff8111156131cb576131cb61441d565b6040519080825280602002602001820160405280156131f4578160200160208202803683370190505b50905060005b828162ffffff16101561325a57600554613221908290600160a01b900462ffffff1661430a565b62ffffff16828262ffffff168151811061323d5761323d614433565b60209081029190910101528061325281614a7c565b9150506131fa565b5092915050565b600062ffffff821115613291576040516306dfcc6560e41b81526018600482015260248101839052604401610675565b5090565b60008060006132a5868686613a97565b604051630157d2d160e31b815262ffffff8616600482015290915060009081906001600160a01b03891690630abe9688906024016040805180830381865afa1580156132f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133199190614369565b60405163bd85b03960e01b815262ffffff891660048201526001600160801b039283169450911691506000906001600160a01b038a169063bd85b03990602401602060405180830381865afa158015613376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339a9190614339565b905080156133c1576133af8484836000612ffb565b6133bc8584846000612ffb565b6133c5565b6000805b909a909950975050505050505050565b60008060006133e4888a613b16565b905060006133f3888884613b44565b90506000613402878785613b44565b905061341082828989613b5d565b94509450505050965096945050505050565b60008383028160001985870982811083820303915050806000036134595783828161344f5761344f6143aa565b0492505050610769565b8084116134795760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b606061076983836000613b9e565b600061060582670de0b6b3a76400006080613c31565b604051630157d2d160e31b815262ffffff83166004820152600090819081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630abe9688906024016040805180830381865afa158015613579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359d9190614369565b6001600160801b0391821693501690506135d87f00000000000000000000000000000000000000000000000000000000000000006012614570565b6135e390600a61466d565b6135ed9083614393565b915061361a7f00000000000000000000000000000000000000000000000000000000000000006012614570565b61362590600a61466d565b61362f9082614393565b905060006136666136408685614393565b613652670de0b6b3a764000085614393565b61365c8887614393565b6126df9190614326565b9695505050505050565b606080600061367f85856142ee565b61368a90600161430a565b62ffffff16905060008167ffffffffffffffff8111156136ac576136ac61441d565b6040519080825280602002602001820160405280156136d5578160200160208202803683370190505b50905060008267ffffffffffffffff8111156136f3576136f361441d565b60405190808252806020026020018201604052801561371c578160200160208202803683370190505b5090506000808862ffffff168b62ffffff1610156137935761374685670de0b6b3a76400006143c0565b915060005b858162ffffff16101561378d5782858262ffffff168151811061377057613770614433565b60209081029190910101528061378581614a7c565b91505061374b565b5061397f565b8762ffffff168b62ffffff1611156137fe576137b785670de0b6b3a76400006143c0565b905060005b858162ffffff16101561378d5781848262ffffff16815181106137e1576137e1614433565b6020908102919091010152806137f681614a7c565b9150506137bc565b600061380a8a8d6142ee565b905060006138188d8b6142ee565b905060006138268e8e61350a565b9050613844670de0b6b3a76400008261365c62ffffff861683614393565b9450613873670de0b6b3a764000061385c838261440a565b61365c62ffffff8716670de0b6b3a7640000614393565b935060005b888162ffffff16101561397a578362ffffff168162ffffff1610156138c05784878262ffffff16815181106138af576138af614433565b602002602001018181525050613968565b8362ffffff168162ffffff1611156138ea5785888262ffffff16815181106138af576138af614433565b6138fd8683670de0b6b3a7640000613422565b888262ffffff168151811061391457613914614433565b602090810291909101015261394461393483670de0b6b3a764000061440a565b8690670de0b6b3a7640000613422565b878262ffffff168151811061395b5761395b614433565b6020026020010181815250505b8061397281614a7c565b915050613878565b505050505b5091999098509650505050505050565b6060600061399d84846142ee565b6139a890600161430a565b62ffffff16905060008167ffffffffffffffff8111156139ca576139ca61441d565b6040519080825280602002602001820160405280156139f3578160200160208202803683370190505b50905060005b828162ffffff161015613a60578662ffffff168662ffffff168262ffffff16613a229190614a9e565b613a2c9190614abe565b828262ffffff1681518110613a4357613a43614433565b602090810291909101015280613a5881614a7c565b9150506139f9565b5095945050505050565b60006002826003811115613a8057613a8061467c565b613a8a9190614ade565b60ff166001149050919050565b604051627eeac760e11b81526001600160a01b03838116600483015262ffffff831660248301526000919085169062fdd58e90604401602060405180830381865afa158015613aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0e9190614339565b949350505050565b600061271061ffff60801b608084901b1604600160801b0162ffffff8416627fffff19016130438282613c9f565b60006080613b53858585613eff565b901c949350505050565b6000808585111561196e576000613b74878761440a565b9050613b838186886000612ffb565b9250613b928185886000612ffb565b91505094509492505050565b606081471015613bc35760405163cd78605960e01b8152306004820152602401610675565b600080856001600160a01b03168486604051613bdf9190614b00565b60006040518083038185875af1925050503d8060008114613c1c576040519150601f19603f3d011682016040523d82523d6000602084013e613c21565b606091505b5091509150613666868383613f6a565b6000806000613c408686613fc6565b9150915081600014613c56578360ff1682901c92505b8015613c9657600160ff85161b8110613c8257604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b600080600083600003613cbb5750600160801b91506106059050565b50826000811215613ccd579015906000035b62100000811015613ebd57600160801b9250846001600160801b03811115613cf757911591600019045b6001821615613d085792830260801c925b800260801c6002821615613d1e5792830260801c925b800260801c6004821615613d345792830260801c925b800260801c6008821615613d4a5792830260801c925b800260801c6010821615613d605792830260801c925b800260801c6020821615613d765792830260801c925b800260801c6040821615613d8c5792830260801c925b8002608090811c90821615613da35792830260801c925b800260801c610100821615613dba5792830260801c925b800260801c610200821615613dd15792830260801c925b800260801c610400821615613de85792830260801c925b800260801c610800821615613dff5792830260801c925b800260801c611000821615613e165792830260801c925b800260801c612000821615613e2d5792830260801c925b800260801c614000821615613e445792830260801c925b800260801c618000821615613e5b5792830260801c925b800260801c62010000821615613e735792830260801c925b800260801c62020000821615613e8b5792830260801c925b800260801c62040000821615613ea35792830260801c925b800260801c62080000821615613ebb5792830260801c925b505b82600003613ee857604051631dba598d60e11b81526004810186905260248101859052604401610675565b81613ef35782613043565b613043836000196143c0565b60008315613f3a575080830281848281613f1b57613f1b6143aa565b0414613f3a576040516363f1e01f60e01b815260040160405180910390fd5b82156107695760809290921b91820182811015610769576040516363f1e01f60e01b815260040160405180910390fd5b606082613f7f57613f7a82613fe5565b610769565b8151158015613f9657506001600160a01b0384163b155b15613fbf57604051639996b31560e01b81526001600160a01b0385166004820152602401610675565b5080610769565b6000806000198385098385029250828110838203039150509250929050565b805115613ff55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b828054828255906000526020600020908101928215614049579160200282015b8281111561404957825182559160200191906001019061402e565b506132919291505b808211156132915760008155600101614051565b60005b83811015614080578181015183820152602001614068565b50506000910152565b60208152600082518060208401526140a8816040850160208701614065565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146140d357600080fd5b919050565b600080604083850312156140eb57600080fd5b6140f4836140bc565b946020939093013593505050565b61ffff8116811461079b57600080fd5b6000806000806080858703121561412857600080fd5b8435935060208501359250604085013561414181614102565b9150606085013561415181614102565b939692955090935050565b60008060006060848603121561417157600080fd5b61417a846140bc565b9250614188602085016140bc565b9150604084013590509250925092565b6000602082840312156141aa57600080fd5b5035919050565b62ffffff8116811461079b57600080fd5b600080600080608085870312156141d857600080fd5b84356141e3816141b1565b935060208501356141f3816141b1565b9250604085013561414181614102565b6000806040838503121561421657600080fd5b82359150602083013561422881614102565b809150509250929050565b60006020828403121561424557600080fd5b610769826140bc565b60006020828403121561426057600080fd5b813561076981614102565b6000806040838503121561427e57600080fd5b614287836140bc565b9150614295602084016140bc565b90509250929050565b600181811c908216806142b257607f821691505b6020821081036142d257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b62ffffff82811682821603908082111561325a5761325a6142d8565b62ffffff81811683821601908082111561325a5761325a6142d8565b80820180821115610605576106056142d8565b60006020828403121561434b57600080fd5b5051919050565b80516001600160801b03811681146140d357600080fd5b6000806040838503121561437c57600080fd5b61438583614352565b915061429560208401614352565b8082028115828204841417610605576106056142d8565b634e487b7160e01b600052601260045260246000fd5b6000826143cf576143cf6143aa565b500490565b6000600182016143e6576143e66142d8565b5060010190565b6000602082840312156143ff57600080fd5b8151610769816141b1565b81810381811115610605576106056142d8565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561445b57600080fd5b815161076981614102565b61ffff82811682821603908082111561325a5761325a6142d8565b600081518084526020808501945080840160005b838110156144b157815187529582019590820190600101614495565b509495945050505050565b600061012060018060a01b03808d168452808c16602085015261ffff8b1660408501528960608501528860808501528160a08501526144fd82850189614481565b915083820360c08501526145118288614481565b951660e084015250506101000152979650505050505050565b6000806040838503121561453d57600080fd5b505080516020909101519092909150565b60006020828403121561456057600080fd5b8151801515811461076957600080fd5b60ff8281168282160390811115610605576106056142d8565b600181815b808511156145c45781600019048211156145aa576145aa6142d8565b808516156145b757918102915b93841c939080029061458e565b509250929050565b6000826145db57506001610605565b816145e857506000610605565b81600181146145fe576002811461460857614624565b6001915050610605565b60ff841115614619576146196142d8565b50506001821b610605565b5060208310610133831016604e8410600b8410161715614647575081810a610605565b6146518383614589565b8060001904821115614665576146656142d8565b029392505050565b600061076960ff8416836145cc565b634e487b7160e01b600052602160045260246000fd5b6000806000606084860312156146a757600080fd5b6146b084614352565b92506146be60208501614352565b91506146cc60408501614352565b90509250925092565b6001600160801b038181168382160280821691908281146146f8576146f86142d8565b505092915050565b60006001600160801b038084168061471a5761471a6143aa565b92169190910492915050565b600081518084526020808501945080840160005b838110156144b15781516001600160a01b03168752958201959082019060010161473a565b85815260006020868184015260a060408401528551606060a0850152614789610100850182614481565b82880151609f19868303810160c088015281518084529185019350600092909190850190835b818110156147e7578551600381106147d557634e487b7160e01b86526021600452602486fd5b835294860194918601916001016147af565b505060408a01519450818782030160e08801526148048186614726565b9550505050505061482060608301856001600160a01b03169052565b8260808301529695505050505050565b6020815261484a6020820183516001600160a01b03169052565b6000602083015161486660408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015160e083015260e08301516101008181850152808501519150506101208181850152808501519150506101e061014081818601526148d5610200860184614481565b9250808601519050601f196101608187860301818801526148f68584614481565b9450808801519250506101808187860301818801526149158584614481565b945080880151925050506101a0614936818701836001600160a01b03169052565b86015190506101c0614952868201836001600160a01b03169052565b959095015193019290925250919050565b600082601f83011261497457600080fd5b8151602067ffffffffffffffff808311156149915761499161441d565b8260051b604051601f19603f830116810181811084821117156149b6576149b661441d565b6040529384528581018301938381019250878511156149d457600080fd5b83870191505b8482101561073f578151835291830191908301906149da565b60008060008060008060c08789031215614a0c57600080fd5b86519550602087015194506040870151935060608701519250608087015167ffffffffffffffff80821115614a4057600080fd5b614a4c8a838b01614963565b935060a0890151915080821115614a6257600080fd5b50614a6f89828a01614963565b9150509295509295509295565b600062ffffff808316818103614a9457614a946142d8565b6001019392505050565b80820182811260008312801582168215821617156146f8576146f86142d8565b818103600083128015838313168383128216171561325a5761325a6142d8565b600060ff831680614af157614af16143aa565b8060ff84160691505092915050565b60008251614b12818460208701614065565b919091019291505056fea2646970667358221220aab8cae1f261d264322b7dca3d6cae8d8bd4b78723316675b1d938bea919231864736f6c634300081400330000000000000000000000006ee70c8d9c491440b034efa3d104b46519eef7560000000000000000000000000b16fd47cbf5350ebde20aa813db8e58846cd5d2000000000000000000000000b4315e873dbcf96ffd0acd8ea43f689d8c20fb30