[ { "inputs": [], "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": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "Claim", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "Fees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount0In", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1In", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount0Out", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount1Out", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "Swap", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "reserve0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "reserve1", "type": "uint256" } ], "name": "Sync", "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": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "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": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "blockTimestampLast", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "burn", "outputs": [ { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimFees", "outputs": [ { "internalType": "uint256", "name": "claimed0", "type": "uint256" }, { "internalType": "uint256", "name": "claimed1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "claimable0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "claimable1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" } ], "name": "current", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentCumulativePrices", "outputs": [ { "internalType": "uint256", "name": "reserve0Cumulative", "type": "uint256" }, { "internalType": "uint256", "name": "reserve1Cumulative", "type": "uint256" }, { "internalType": "uint256", "name": "blockTimestamp", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fees", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "address", "name": "tokenIn", "type": "address" } ], "name": "getAmountOut", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getReserves", "outputs": [ { "internalType": "uint256", "name": "_reserve0", "type": "uint256" }, { "internalType": "uint256", "name": "_reserve1", "type": "uint256" }, { "internalType": "uint256", "name": "_blockTimestampLast", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "index0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "index1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastObservation", "outputs": [ { "components": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "reserve0Cumulative", "type": "uint256" }, { "internalType": "uint256", "name": "reserve1Cumulative", "type": "uint256" } ], "internalType": "struct Pair.Observation", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "metadata", "outputs": [ { "internalType": "uint256", "name": "dec0", "type": "uint256" }, { "internalType": "uint256", "name": "dec1", "type": "uint256" }, { "internalType": "uint256", "name": "r0", "type": "uint256" }, { "internalType": "uint256", "name": "r1", "type": "uint256" }, { "internalType": "bool", "name": "st", "type": "bool" }, { "internalType": "address", "name": "t0", "type": "address" }, { "internalType": "address", "name": "t1", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "liquidity", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "observationLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "observations", "outputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "reserve0Cumulative", "type": "uint256" }, { "internalType": "uint256", "name": "reserve1Cumulative", "type": "uint256" } ], "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": "bytes", "name": "signature", "type": "bytes" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint256", "name": "points", "type": "uint256" } ], "name": "prices", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint256", "name": "granularity", "type": "uint256" } ], "name": "quote", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reserve0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reserve0CumulativeLast", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reserve1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reserve1CumulativeLast", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenIn", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint256", "name": "points", "type": "uint256" }, { "internalType": "uint256", "name": "window", "type": "uint256" } ], "name": "sample", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "skim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "supplyIndex0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "supplyIndex1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount0Out", "type": "uint256" }, { "internalType": "uint256", "name": "amount1Out", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "swap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sync", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "token0", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokens", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "src", "type": "address" }, { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
61016060405260006002556000600d556000600e5560016013553480156200002657600080fd5b50336001600160a01b0316610100816001600160a01b0316815250506000806000336001600160a01b031663eb13c4cf6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000086573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ac9190620007c8565b8015156080526001600160a01b0380831660c052831660a052604051929550909350915083908390620000df90620006f7565b6001600160a01b03928316815291166020820152604001604051809103906000f08015801562000113573d6000803e3d6000fd5b506001600160a01b031660e05280156200034557826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000166573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000190919081019062000863565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620001cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001f9919081019062000863565b6040516020016200020c9291906200091b565b604051602081830303815290604052600090805190602001906200023292919062000705565b50826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000272573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200029c919081019062000863565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620002db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000305919081019062000863565b6040516020016200031892919062000976565b604051602081830303815290604052600190805190602001906200033e92919062000705565b506200055e565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000384573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620003ae919081019062000863565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620003ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000417919081019062000863565b6040516020016200042a929190620009c7565b604051602081830303815290604052600090805190602001906200045092919062000705565b50826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000490573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620004ba919081019062000863565b826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620004f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000523919081019062000863565b6040516020016200053692919062000a24565b604051602081830303815290604052600190805190602001906200055c92919062000705565b505b826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200059d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c3919062000a46565b620005d090600a62000b87565b6101208181525050816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000617573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200063d919062000a46565b6200064a90600a62000b87565b6101405250506040805160608101825242815260006020820181815292820181815260078054600181018255925291517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68860039092029182015591517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c689830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a909101555062000bd4565b61037080620046da83390190565b828054620007139062000b98565b90600052602060002090601f01602090048101928262000737576000855562000782565b82601f106200075257805160ff191683800117855562000782565b8280016001018555821562000782579182015b828111156200078257825182559160200191906001019062000765565b506200079092915062000794565b5090565b5b8082111562000790576000815560010162000795565b80516001600160a01b0381168114620007c357600080fd5b919050565b600080600060608486031215620007de57600080fd5b620007e984620007ab565b9250620007f960208501620007ab565b9150604084015180151581146200080f57600080fd5b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200084d57818101518382015260200162000833565b838111156200085d576000848401525b50505050565b6000602082840312156200087657600080fd5b81516001600160401b03808211156200088e57600080fd5b818401915084601f830112620008a357600080fd5b815181811115620008b857620008b86200081a565b604051601f8201601f19908116603f01168101908382118183101715620008e357620008e36200081a565b81604052828152876020848701011115620008fd57600080fd5b6200091083602083016020880162000830565b979650505050505050565b6e029ba30b13632ab189020a6a690169608d1b8152600083516200094781600f85016020880162000830565b602f60f81b600f9184019182015283516200096a81601084016020880162000830565b01601001949350505050565b6473414d4d2d60d81b8152600083516200099881600585016020880162000830565b602f60f81b6005918401918201528351620009bb81600684016020880162000830565b01600601949350505050565b7002b37b630ba34b632ab189020a6a690169607d1b815260008351620009f581601185016020880162000830565b602f60f81b601191840191820152835162000a1881601284016020880162000830565b01601201949350505050565b6476414d4d2d60d81b8152600083516200099881600585016020880162000830565b60006020828403121562000a5957600080fd5b815160ff8116811462000a6b57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000ac957816000190482111562000aad5762000aad62000a72565b8085161562000abb57918102915b93841c939080029062000a8d565b509250929050565b60008262000ae25750600162000b81565b8162000af15750600062000b81565b816001811462000b0a576002811462000b155762000b35565b600191505062000b81565b60ff84111562000b295762000b2962000a72565b50506001821b62000b81565b5060208310610133831016604e8410600b841016171562000b5a575081810a62000b81565b62000b66838362000a88565b806000190482111562000b7d5762000b7d62000a72565b0290505b92915050565b600062000a6b60ff84168362000ad1565b600181811c9082168062000bad57607f821691505b60208210810362000bce57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516101405161398562000d5560003960008181610431015281816124e3015281816127cd0152818161288f015261299a01526000818161040e015281816124a20152818161278e015281816128d101526129740152600081816107b801528181610c0d01528181610ce401526120120152600081816105f201528181611f280152818161230901526123d60152600081816104bb0152818161064701528181610727015281816108f301528181610b9b0152818161151b0152818161170601528181611dcf0152818161216f01526123b50152600081816102f90152818161049301528181610622015281816108d201528181610b7a01528181611485015281816116e401528181611dad015281816120e7015281816122e80152818161280f015281816128560152818161293b01526129de0152600081816103970152818161046301528181610bd501528181610cac01528181611fe10152818161247a015261275a01526139856000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c80637ecebe0011610151578063bc25cf77116100c3578063d21220a711610087578063d21220a714610722578063d294f09314610749578063dd62ed3e14610751578063ebeb31db1461077c578063f140a35a14610784578063fff6cae91461079757600080fd5b8063bc25cf77146106eb578063bda39cad146106fe578063bf944dbc14610707578063c245febc14610710578063c5700a021461071957600080fd5b80639d63848a116101155780639d63848a146106145780639e8cc04b146106725780639f767c88146106855780639fd5a6cf146106a5578063a1ac4d13146106b8578063a9059cbb146106d857600080fd5b80637ecebe001461057357806389afcb44146105935780638a7b8cf2146105bb57806395d89b41146105e55780639af1d35a146105ed57600080fd5b8063252c09d7116101ea5780634d5a9f8a116101ae5780634d5a9f8a146104f1578063517b3f82146105115780635881c475146105245780635a76f25e146105375780636a6278421461054057806370a082311461055357600080fd5b8063252c09d7146103cc578063313ce567146103df57806332c0defd146103f9578063392f37e914610402578063443cb4bc146104e857600080fd5b806313345fe11161023c57806313345fe11461033357806318160ddd146103535780631df8c7171461036a578063205aabf11461037257806322be3de11461039257806323b872dd146103b957600080fd5b8063022c0d9f1461027957806306fdde031461028e5780630902f1ac146102ac578063095ea7b3146102d15780630dfe1681146102f4575b600080fd5b61028c6102873660046133d8565b61079f565b005b610296610ef8565b6040516102a3919061349c565b60405180910390f35b600854600954600a545b604080519384526020840192909252908201526060016102a3565b6102e46102df3660046134af565b610f86565b60405190151581526020016102a3565b61031b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a3565b6103466103413660046134d9565b610ff3565b6040516102a39190613512565b61035c60025481565b6040519081526020016102a3565b6102b66111ef565b61035c610380366004613556565b60106020526000908152604090205481565b6102e47f000000000000000000000000000000000000000000000000000000000000000081565b6102e46103c7366004613571565b61125e565b6102b66103da3660046135ad565b611327565b6103e7601281565b60405160ff90911681526020016102a3565b61035c600d5481565b600854600954604080517f000000000000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060208201529081019290925260608201527f0000000000000000000000000000000000000000000000000000000000000000151560808201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660a08301527f00000000000000000000000000000000000000000000000000000000000000001660c082015260e0016102a3565b61035c60085481565b61035c6104ff366004613556565b60116020526000908152604090205481565b61035c61051f3660046134af565b61135a565b6103466105323660046135c6565b611442565b61035c60095481565b61035c61054e366004613556565b611451565b61035c610561366004613556565b60046020526000908152604090205481565b61035c610581366004613556565b60066020526000908152604090205481565b6105a66105a1366004613556565b6116b2565b604080519283526020830191909152016102a3565b6105c36119cf565b60408051825181526020808401519082015291810151908201526060016102a3565b610296611a4f565b61031b7f000000000000000000000000000000000000000000000000000000000000000081565b604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000166020820152016102a3565b61035c6106803660046135c6565b611a5c565b61035c610693366004613556565b600f6020526000908152604090205481565b61028c6106b33660046135f9565b611ac9565b61035c6106c6366004613556565b60126020526000908152604090205481565b6102e46106e63660046134af565b611d6b565b61028c6106f9366004613556565b611d81565b61035c600e5481565b61035c600b5481565b61035c600c5481565b61035c600a5481565b61031b7f000000000000000000000000000000000000000000000000000000000000000081565b6105a6611e9f565b61035c61075f366004613671565b600360209081526000928352604080842090915290825290205481565b60075461035c565b61035c6107923660046136a4565b611fc6565b61028c6120ba565b6013546001146107ae57600080fd5b60026013819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b187bd266040518163ffffffff1660e01b8152600401602060405180830381865afa158015610814573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083891906136c7565b1561084257600080fd5b60008511806108515750600084115b6108885760405162461bcd60e51b8152602060048201526003602482015262494f4160e81b60448201526064015b60405180910390fd5b600854600954818710801561089c57508086105b6108cd5760405162461bcd60e51b8152602060048201526002602482015261125360f21b604482015260640161087f565b6000807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03898116908316148015906109405750806001600160a01b0316896001600160a01b031614155b6109715760405162461bcd60e51b8152602060048201526002602482015261125560f21b604482015260640161087f565b8a1561098257610982828a8d6121f4565b891561099357610993818a8c6121f4565b8615610a0057604051639a7bff7960e01b81526001600160a01b038a1690639a7bff79906109cd9033908f908f908e908e906004016136e9565b600060405180830381600087803b1580156109e757600080fd5b505af11580156109fb573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190613735565b6040516370a0823160e01b81523060048201529094506001600160a01b038216906370a0823190602401602060405180830381865afa158015610aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad39190613735565b9250505060008985610ae59190613764565b8311610af2576000610b06565b610afc8a86613764565b610b069084613764565b90506000610b148a86613764565b8311610b21576000610b35565b610b2b8a86613764565b610b359084613764565b90506000821180610b465750600081115b610b785760405162461bcd60e51b815260206004820152600360248201526249494160e81b604482015260640161087f565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008315610c915760405163cc56b2c560e01b81523060048201527f000000000000000000000000000000000000000000000000000000000000000015156024820152610c9190612710906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cc56b2c590604401602060405180830381865afa158015610c54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c789190613735565b610c82908761377b565b610c8c91906137b0565b6122e3565b8215610d685760405163cc56b2c560e01b81523060048201527f000000000000000000000000000000000000000000000000000000000000000015156024820152610d6890612710906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cc56b2c590604401602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f9190613735565b610d59908661377b565b610d6391906137b0565b6123b0565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd09190613735565b6040516370a0823160e01b81523060048201529096506001600160a01b038216906370a0823190602401602060405180830381865afa158015610e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3b9190613735565b9450610e478888612476565b610e518787612476565b1015610e835760405162461bcd60e51b81526020600482015260016024820152604b60f81b604482015260640161087f565b5050610e91848488886125c2565b60408051838152602081018390529081018c9052606081018b90526001600160a01b038a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001601355505050505050505050565b60008054610f05906137d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610f31906137d2565b8015610f7e5780601f10610f5357610100808354040283529160200191610f7e565b820191906000526020600020905b815481529060010190602001808311610f6157829003601f168201915b505050505081565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610fe19086815260200190565b60405180910390a35060015b92915050565b606060008367ffffffffffffffff8111156110105761101061380c565b604051908082528060200260200182016040528015611039578160200160208202803683370190505b5060075490915060009061104f90600190613764565b9050600061105d858761377b565b6110679083613764565b90506000805b838310156111df5761107f8784613822565b91506000600784815481106110965761109661383a565b906000526020600020906003020160000154600784815481106110bb576110bb61383a565b9060005260206000209060030201600001546110d79190613764565b9050600081600786815481106110ef576110ef61383a565b906000526020600020906003020160010154600786815481106111145761111461383a565b9060005260206000209060030201600101546111309190613764565b61113a91906137b0565b9050600082600787815481106111525761115261383a565b906000526020600020906003020160020154600787815481106111775761117761383a565b9060005260206000209060030201600201546111939190613764565b61119d91906137b0565b90506111ab8c8e8484612756565b8885815181106111bd576111bd61383a565b60209081029190910101525050506001016111d88784613822565b925061106d565b509293505050505b949350505050565b600b54600c54426000808061120d600854600954600a549192909190565b9250925092508381146112565760006112268286613764565b9050611232818561377b565b61123c9088613822565b9650611248818461377b565b6112529087613822565b9550505b505050909192565b6001600160a01b03831660008181526003602090815260408083203380855292528220549192909190821480159061129857506000198114155b1561130e5760006112a98583613764565b6001600160a01b038881166000818152600360209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b611319868686612a4b565b6001925050505b9392505050565b6007818154811061133757600080fd5b600091825260209091206003909102018054600182015460029092015490925083565b6000806113656119cf565b90506000806113726111ef565b508451919350915042036113da576007805461139090600290613764565b815481106113a0576113a061383a565b9060005260206000209060030201604051806060016040529081600082015481526020016001820154815260200160028201548152505092505b82516000906113e99042613764565b90506000818560200151856113fe9190613764565b61140891906137b0565b905060008286604001518561141d9190613764565b61142791906137b0565b9050611435888a8484612756565b9998505050505050505050565b60606111e78484846001610ff3565b600060135460011461146257600080fd5b60026013556008546009546040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f89190613735565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611562573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115869190613735565b905060006115948584613764565b905060006115a28584613764565b60025490915060008190036115e4576103e86115c66115c1848661377b565b612b0b565b6115d09190613764565b97506115df60006103e8612bf3565b611619565b611616876115f2838661377b565b6115fc91906137b0565b87611607848661377b565b61161191906137b0565b612c86565b97505b6000881161164f5760405162461bcd60e51b8152602060048201526003602482015262494c4d60e81b604482015260640161087f565b6116598989612bf3565b611665858589896125c2565b604080518481526020810184905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001601355509395945050505050565b6000806013546001146116c457600080fd5b60026013556008546009546040516370a0823160e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190613735565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156117c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ec9190613735565b30600090815260046020526040902054600254919250908061180e858461377b565b61181891906137b0565b995080611825848461377b565b61182f91906137b0565b985060008a1180156118415750600089115b6118735760405162461bcd60e51b815260206004820152600360248201526224a62160e91b604482015260640161087f565b61187d3083612c9c565b611888868c8c6121f4565b611893858c8b6121f4565b6040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa1580156118d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fb9190613735565b6040516370a0823160e01b81523060048201529094506001600160a01b038616906370a0823190602401602060405180830381865afa158015611942573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119669190613735565b925061197484848a8a6125c2565b604080518b8152602081018b90526001600160a01b038d169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a350505050505050506001601381905550915091565b6119f360405180606001604052806000815260200160008152602001600081525090565b60078054611a0390600190613764565b81548110611a1357611a1361383a565b90600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050905090565b60018054610f05906137d2565b600080611a6c8585856001610ff3565b90506000805b8251811015611ab457828181518110611a8d57611a8d61383a565b602002602001015182611aa09190613822565b915080611aac81613850565b915050611a72565b50611abf84826137b0565b9695505050505050565b42831015611b095760405162461bcd60e51b815260206004820152600d60248201526c14185a5c8e8811561412549151609a1b604482015260640161087f565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051611b399190613869565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f19818403018152918152815160209283012060058190556001600160a01b0389166000908152600690935290822080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a919087611c0483613850565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120604051602001611c7d92919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050611cd6878285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612d2792505050565b611d065760405162461bcd60e51b81526020600482015260016024820152605360f81b604482015260640161087f565b6001600160a01b038781166000818152600360209081526040808320948b168084529482529182902089905590518881527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6000611d78338484612a4b565b50600192915050565b601354600114611d9057600080fd5b60026013556008546040516370a0823160e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000091611e5d9184918691906001600160a01b038416906370a08231906024015b602060405180830381865afa158015611e2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4e9190613735565b611e589190613764565b6121f4565b6009546040516370a0823160e01b8152306004820152611e959183918691906001600160a01b038416906370a0823190602401611e0d565b5050600160135550565b600080611eab33612e69565b50503360009081526011602090815260408083205460129092529091205481151580611ed75750600081115b15611fc2573360008181526011602090815260408083208390556012909152808220919091555163299e7ae760e11b8152600481019190915260248101839052604481018290526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063533cf5ce90606401600060405180830381600087803b158015611f6c57600080fd5b505af1158015611f80573d6000803e3d6000fd5b505060408051858152602081018590523393508392507f865ca08d59f5cb456e85cd2f7ef63664ea4f73327414e9d8152c4158b0e94645910160405180910390a35b9091565b60085460095460405163cc56b2c560e01b81523060048201527f0000000000000000000000000000000000000000000000000000000000000000151560248201526000929190612710907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063cc56b2c590604401602060405180830381865afa158015612061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120859190613735565b61208f908761377b565b61209991906137b0565b6120a39086613764565b94506120b185858484612756565b95945050505050565b6013546001146120c957600080fd5b60026013556040516370a0823160e01b81523060048201526121ed907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215a9190613735565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156121be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e29190613735565b6008546009546125c2565b6001601355565b6000836001600160a01b03163b1161220b57600080fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916122679190613904565b6000604051808303816000865af19150503d80600081146122a4576040519150601f19603f3d011682016040523d82523d6000602084013e6122a9565b606091505b50915091508180156122d35750805115806122d35750808060200190518101906122d391906136c7565b6122dc57600080fd5b5050505050565b61232e7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836121f4565b60025460009061234683670de0b6b3a764000061377b565b61235091906137b0565b905080156123705780600d600082825461236a9190613822565b90915550505b604080518381526000602082015233917f112c256902bf554b6ed882d2936687aaeb4225e8cd5b51303c90ca6cf43a860291015b60405180910390a25050565b6123fb7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000836121f4565b60025460009061241383670de0b6b3a764000061377b565b61241d91906137b0565b9050801561243d5780600e60008282546124379190613822565b90915550505b60408051600081526020810184905233917f112c256902bf554b6ed882d2936687aaeb4225e8cd5b51303c90ca6cf43a860291016123a4565b60007f0000000000000000000000000000000000000000000000000000000000000000156125b15760007f00000000000000000000000000000000000000000000000000000000000000006124d385670de0b6b3a764000061377b565b6124dd91906137b0565b905060007f000000000000000000000000000000000000000000000000000000000000000061251485670de0b6b3a764000061377b565b61251e91906137b0565b90506000670de0b6b3a7640000612535838561377b565b61253f91906137b0565b90506000670de0b6b3a7640000612556848061377b565b61256091906137b0565b670de0b6b3a7640000612573868061377b565b61257d91906137b0565b6125879190613822565b9050670de0b6b3a764000061259c828461377b565b6125a691906137b0565b945050505050610fed565b6125bb828461377b565b9050610fed565b600a5442906000906125d49083613764565b90506000811180156125e557508315155b80156125f057508215155b15612637576125ff818561377b565b600b60008282546126109190613822565b909155506126209050818461377b565b600c60008282546126319190613822565b90915550505b60006126416119cf565b80519091506126509084613764565b91506107088211156127055760408051606081018252848152600b5460208201908152600c549282019283526007805460018101825560009190915291517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688600390930292830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68982015590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a909101555b60088790556009869055600a83905560408051888152602081018890527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a150505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000156129d957600061278a8484612476565b90507f00000000000000000000000000000000000000000000000000000000000000006127bf85670de0b6b3a764000061377b565b6127c991906137b0565b93507f00000000000000000000000000000000000000000000000000000000000000006127fe84670de0b6b3a764000061377b565b61280891906137b0565b92506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b03161461284d578486612850565b85855b915091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b0316146128cf577f00000000000000000000000000000000000000000000000000000000000000006128c089670de0b6b3a764000061377b565b6128ca91906137b0565b61290c565b7f000000000000000000000000000000000000000000000000000000000000000061290289670de0b6b3a764000061377b565b61290c91906137b0565b9750600061292461291d848b613822565b8584612fc9565b61292e9083613764565b9050670de0b6b3a76400007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b031614612998577f00000000000000000000000000000000000000000000000000000000000000006129ba565b7f00000000000000000000000000000000000000000000000000000000000000005b6129c4908361377b565b6129ce91906137b0565b9450505050506111e7565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614612a1c578385612a1f565b84845b9092509050612a2e8783613822565b612a38828961377b565b612a4291906137b0565b925050506111e7565b612a5483612e69565b612a5d82612e69565b6001600160a01b03831660009081526004602052604081208054839290612a85908490613764565b90915550506001600160a01b03821660009081526004602052604081208054839290612ab2908490613822565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612afe91815260200190565b60405180910390a3505050565b600081600003612b1d57506000919050565b60006001612b2a846130d8565b901c6001901b90506001818481612b4357612b4361379a565b048201901c90506001818481612b5b57612b5b61379a565b048201901c90506001818481612b7357612b7361379a565b048201901c90506001818481612b8b57612b8b61379a565b048201901c90506001818481612ba357612ba361379a565b048201901c90506001818481612bbb57612bbb61379a565b048201901c90506001818481612bd357612bd361379a565b048201901c905061132081828581612bed57612bed61379a565b04612c86565b612bfc82612e69565b8060026000828254612c0e9190613822565b90915550506001600160a01b03821660009081526004602052604081208054839290612c3b908490613822565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6000818310612c955781611320565b5090919050565b612ca582612e69565b8060026000828254612cb79190613764565b90915550506001600160a01b03821660009081526004602052604081208054839290612ce4908490613764565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612c7a565b6000806000612d36858561316c565b90925090506000816004811115612d4f57612d4f613920565b148015612d6d5750856001600160a01b0316826001600160a01b0316145b15612d7d57600192505050611320565b600080876001600160a01b0316631626ba7e60e01b8888604051602401612da5929190613936565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612de39190613904565b600060405180830381855afa9150503d8060008114612e1e576040519150601f19603f3d011682016040523d82523d6000602084013e612e23565b606091505b5091509150818015612e36575080516020145b8015612e5d57508051630b135d3f60e11b90612e5b9083016020908101908401613735565b145b98975050505050505050565b6001600160a01b0381166000908152600460205260409020548015612f97576001600160a01b0382166000908152600f60209081526040808320805460108085529285208054600d54600e54948190559490955282905593612ecb8584613764565b90506000612ed98584613764565b90508115612f34576000670de0b6b3a7640000612ef6848a61377b565b612f0091906137b0565b6001600160a01b038a16600090815260116020526040812080549293508392909190612f2d908490613822565b9091555050505b8015612f8d576000670de0b6b3a7640000612f4f838a61377b565b612f5991906137b0565b6001600160a01b038a16600090815260126020526040812080549293508392909190612f86908490613822565b9091555050505b5050505050505050565b600d546001600160a01b0383166000908152600f6020908152604080832093909355600e546010909152919020555050565b6000805b60ff8110156130cf57826000612fe387836131b1565b905085811015613033576000612ff9888761324e565b6130038389613764565b61301590670de0b6b3a764000061377b565b61301f91906137b0565b905061302b8187613822565b955050613075565b600061303f888761324e565b6130498884613764565b61305b90670de0b6b3a764000061377b565b61306591906137b0565b90506130718187613764565b9550505b8185111561309e5760016130898387613764565b1161309957849350505050611320565b6130ba565b60016130aa8684613764565b116130ba57849350505050611320565b505080806130c790613850565b915050612fcd565b50909392505050565b600080608083901c156130ed57608092831c92015b604083901c156130ff57604092831c92015b602083901c1561311157602092831c92015b601083901c1561312357601092831c92015b600883901c1561313557600892831c92015b600483901c1561314757600492831c92015b600283901c1561315957600292831c92015b600183901c15610fed5760010192915050565b60008082516041036131a25760208301516040840151606085015160001a613196878285856132b6565b945094505050506131aa565b506000905060025b9250929050565b6000670de0b6b3a7640000828185816131ca828061377b565b6131d491906137b0565b6131de919061377b565b6131e891906137b0565b6131f2919061377b565b6131fc91906137b0565b670de0b6b3a7640000808481613212828061377b565b61321c91906137b0565b613226919061377b565b61323091906137b0565b61323a908661377b565b61324491906137b0565b6113209190613822565b6000670de0b6b3a76400008381613265828061377b565b61326f91906137b0565b613279919061377b565b61328391906137b0565b670de0b6b3a764000080613297858061377b565b6132a191906137b0565b6132ac86600361377b565b61323a919061377b565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156132ed5750600090506003613371565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613341573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661336a57600060019250925050613371565b9150600090505b94509492505050565b80356001600160a01b038116811461339157600080fd5b919050565b60008083601f8401126133a857600080fd5b50813567ffffffffffffffff8111156133c057600080fd5b6020830191508360208285010111156131aa57600080fd5b6000806000806000608086880312156133f057600080fd5b85359450602086013593506134076040870161337a565b9250606086013567ffffffffffffffff81111561342357600080fd5b61342f88828901613396565b969995985093965092949392505050565b60005b8381101561345b578181015183820152602001613443565b8381111561346a576000848401525b50505050565b60008151808452613488816020860160208601613440565b601f01601f19169290920160200192915050565b6020815260006113206020830184613470565b600080604083850312156134c257600080fd5b6134cb8361337a565b946020939093013593505050565b600080600080608085870312156134ef57600080fd5b6134f88561337a565b966020860135965060408601359560600135945092505050565b6020808252825182820181905260009190848201906040850190845b8181101561354a5783518352928401929184019160010161352e565b50909695505050505050565b60006020828403121561356857600080fd5b6113208261337a565b60008060006060848603121561358657600080fd5b61358f8461337a565b925061359d6020850161337a565b9150604084013590509250925092565b6000602082840312156135bf57600080fd5b5035919050565b6000806000606084860312156135db57600080fd5b6135e48461337a565b95602085013595506040909401359392505050565b60008060008060008060a0878903121561361257600080fd5b61361b8761337a565b95506136296020880161337a565b94506040870135935060608701359250608087013567ffffffffffffffff81111561365357600080fd5b61365f89828a01613396565b979a9699509497509295939492505050565b6000806040838503121561368457600080fd5b61368d8361337a565b915061369b6020840161337a565b90509250929050565b600080604083850312156136b757600080fd5b8235915061369b6020840161337a565b6000602082840312156136d957600080fd5b8151801515811461132057600080fd5b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006020828403121561374757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156137765761377661374e565b500390565b60008160001904831182151516156137955761379561374e565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826137cd57634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806137e657607f821691505b60208210810361380657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b600082198211156138355761383561374e565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016138625761386261374e565b5060010190565b600080835481600182811c91508083168061388557607f831692505b602080841082036138a457634e487b7160e01b86526022600452602486fd5b8180156138b857600181146138c9576138f6565b60ff198616895284890196506138f6565b60008a81526020902060005b868110156138ee5781548b8201529085019083016138d5565b505084890196505b509498975050505050505050565b60008251613916818460208701613440565b9190910192915050565b634e487b7160e01b600052602160045260246000fd5b8281526040602082015260006111e7604083018461347056fea2646970667358221220e1189b59612b72498d3f0fd459780c561e609e42438d71ad791386645891b48f64736f6c634300080d003360e060405234801561001057600080fd5b5060405161037038038061037083398101604081905261002f91610066565b336080526001600160a01b0391821660a0521660c052610099565b80516001600160a01b038116811461006157600080fd5b919050565b6000806040838503121561007957600080fd5b6100828361004a565b91506100906020840161004a565b90509250929050565b60805160a05160c0516102ab6100c5600039600060b601526000608501526000605001526102ab6000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063533cf5ce14610030575b600080fd5b61004361003e3660046101d0565b610045565b005b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461007a57600080fd5b81156100ab576100ab7f000000000000000000000000000000000000000000000000000000000000000084846100e1565b80156100dc576100dc7f000000000000000000000000000000000000000000000000000000000000000084836100e1565b505050565b6000836001600160a01b03163b116100f857600080fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916101549190610211565b6000604051808303816000865af19150503d8060008114610191576040519150601f19603f3d011682016040523d82523d6000602084013e610196565b606091505b50915091508180156101c05750805115806101c05750808060200190518101906101c0919061024c565b6101c957600080fd5b5050505050565b6000806000606084860312156101e557600080fd5b83356001600160a01b03811681146101fc57600080fd5b95602085013595506040909401359392505050565b6000825160005b818110156102325760208186018101518583015201610218565b81811115610241576000828501525b509190910192915050565b60006020828403121561025e57600080fd5b8151801515811461026e57600080fd5b939250505056fea26469706673582212201c3faa20c167dc462c74fe20c875d7f75171f597d502cdf3ef178ecd2315df7564736f6c634300080d0033