From 5c352e0d950e33fd7fd56a91e1c0578494cc683c Mon Sep 17 00:00:00 2001 From: Artur Mullakhmetov Date: Wed, 23 Nov 2022 22:51:45 +0300 Subject: [PATCH 1/2] collect push4 instructions from all blocks --- ethereumetl/service/eth_contract_service.py | 11 ++-- .../service/test_eth_contract_service.py | 59 +++++++++++++------ .../erc721_contract/expected_contracts.json | 2 +- .../expected_contracts.json | 2 +- .../expected_contracts.json | 2 +- 5 files changed, 51 insertions(+), 25 deletions(-) diff --git a/ethereumetl/service/eth_contract_service.py b/ethereumetl/service/eth_contract_service.py index 827939b15..97de221ef 100644 --- a/ethereumetl/service/eth_contract_service.py +++ b/ethereumetl/service/eth_contract_service.py @@ -33,10 +33,13 @@ def get_function_sighashes(self, bytecode): evm_code.disassemble(bytecode) basic_blocks = evm_code.basicblocks if basic_blocks and len(basic_blocks) > 0: - init_block = basic_blocks[0] - instructions = init_block.instructions - push4_instructions = [inst for inst in instructions if inst.name == 'PUSH4'] - return sorted(list(set('0x' + inst.operand for inst in push4_instructions))) + push4_instructions = set() + for block in basic_blocks: + instructions = block.instructions + block_push4_instructions = [inst for inst in instructions if inst.name == 'PUSH4'] + push4_instructions.update(block_push4_instructions) + + return sorted(list({'0x' + inst.operand for inst in push4_instructions})) else: return [] else: diff --git a/tests/ethereumetl/service/test_eth_contract_service.py b/tests/ethereumetl/service/test_eth_contract_service.py index ac71b77ae..1372cc860 100644 --- a/tests/ethereumetl/service/test_eth_contract_service.py +++ b/tests/ethereumetl/service/test_eth_contract_service.py @@ -30,35 +30,58 @@ ( '0x0x6060604052361561011b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461011d57806307da68f51461014b578063095ea7b31461015d57806313af4035146101b457806318160ddd146101ea57806323b872dd14610210578063313ce567146102865780633452f51d146102ac5780635ac801fe1461031557806369d3e20e1461033957806370a082311461036b57806375f12b21146103b55780637a9e5e4b146103df5780638402181f146104155780638da5cb5b1461047e57806390bc1693146104d057806395d89b4114610502578063a9059cbb14610530578063be9a655514610587578063bf7e214f14610599578063dd62ed3e146105eb575bfe5b341561012557fe5b61012d610654565b60405180826000191660001916815260200191505060405180910390f35b341561015357fe5b61015b61065a565b005b341561016557fe5b61019a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061075e565b604051808215151515815260200191505060405180910390f35b34156101bc57fe5b6101e8600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061083c565b005b34156101f257fe5b6101fa610920565b6040518082815260200191505060405180910390f35b341561021857fe5b61026c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061092b565b604051808215151515815260200191505060405180910390f35b341561028e57fe5b610296610a0b565b6040518082815260200191505060405180910390f35b34156102b457fe5b6102fb600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a11565b604051808215151515815260200191505060405180910390f35b341561031d57fe5b610337600480803560001916906020019091905050610a38565b005b341561034157fe5b61036960048080356fffffffffffffffffffffffffffffffff16906020019091905050610a7e565b005b341561037357fe5b61039f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c44565b6040518082815260200191505060405180910390f35b34156103bd57fe5b6103c5610c8e565b604051808215151515815260200191505060405180910390f35b34156103e757fe5b610413600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ca1565b005b341561041d57fe5b610464600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610d85565b604051808215151515815260200191505060405180910390f35b341561048657fe5b61048e610dad565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104d857fe5b61050060048080356fffffffffffffffffffffffffffffffff16906020019091905050610dd3565b005b341561050a57fe5b610512610f99565b60405180826000191660001916815260200191505060405180910390f35b341561053857fe5b61056d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610f9f565b604051808215151515815260200191505060405180910390f35b341561058f57fe5b61059761107d565b005b34156105a157fe5b6105a9611181565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105f357fe5b61063e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111a7565b6040518082815260200191505060405180910390f35b60075481565b61069061068b336000357fffffffff000000000000000000000000000000000000000000000000000000001661122f565b611491565b6000600060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505b5b50505b565b6000610779600460149054906101000a900460ff1615611491565b6000600060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461082f85856114a2565b92505b5b50505b92915050565b61087261086d336000357fffffffff000000000000000000000000000000000000000000000000000000001661122f565b611491565b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405180905060405180910390a25b5b50565b600060005490505b90565b6000610946600460149054906101000a900460ff1615611491565b6000600060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46109fd868686611595565b92505b5b50505b9392505050565b60065481565b6000610a2f83836fffffffffffffffffffffffffffffffff16610f9f565b90505b92915050565b610a6e610a69336000357fffffffff000000000000000000000000000000000000000000000000000000001661122f565b611491565b80600781600019169055505b5b50565b610ab4610aaf336000357fffffffff000000000000000000000000000000000000000000000000000000001661122f565b611491565b610acd600460149054906101000a900460ff1615611491565b6000600060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610bd4600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff166118f9565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c35600054846fffffffffffffffffffffffffffffffff166118f9565b6000819055505b5b50505b5b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600460149054906101000a900460ff1681565b610cd7610cd2336000357fffffffff000000000000000000000000000000000000000000000000000000001661122f565b611491565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405180905060405180910390a25b5b50565b6000610da48333846fffffffffffffffffffffffffffffffff1661092b565b90505b92915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e09610e04336000357fffffffff000000000000000000000000000000000000000000000000000000001661122f565b611491565b610e22600460149054906101000a900460ff1615611491565b6000600060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f29600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611913565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f8a600054846fffffffffffffffffffffffffffffffff16611913565b6000819055505b5b50505b5b50565b60055481565b6000610fba600460149054906101000a900460ff1615611491565b6000600060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4611070858561192d565b92505b5b50505b92915050565b6110b36110ae336000357fffffffff000000000000000000000000000000000000000000000000000000001661122f565b611491565b6000600060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505b5b50505b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561126e576001905061148b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112cd576001905061148b565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561132d576000905061148b565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561146957fe5b6102c65a03f1151561147757fe5b50505060405180519050905061148b565b5b5b5b92915050565b80151561149e5760006000fd5b5b50565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156115e257fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561166a57fe5b6116f0600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611913565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117b9600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611913565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611845600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b6000828284019150811015151561190c57fe5b5b92915050565b6000828284039150811115151561192657fe5b5b92915050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561197a57fe5b6119c3600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611913565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4f600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836118f9565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b929150505600a165627a7a723058204432a84cfe06a995bd95935559d84003b39a006720c2eabd96115f376347f9b80029', ['0x06fdde03', '0x07da68f5', '0x095ea7b3', '0x13af4035', '0x18160ddd', '0x23b872dd', '0x313ce567', - '0x3452f51d', '0x5ac801fe', '0x69d3e20e', '0x70a08231', '0x75f12b21', '0x7a9e5e4b', '0x8402181f', - '0x8da5cb5b', '0x90bc1693', '0x95d89b41', '0xa9059cbb', '0xbe9a6555', '0xbf7e214f', '0xdd62ed3e', - '0xffffffff'], + '0x3452f51d', '0x47f9b800', '0x5ac801fe', '0x69d3e20e', '0x70a08231', '0x75f12b21', '0x7a9e5e4b', + '0x8402181f', '0x8da5cb5b', '0x90bc1693', '0x95d89b41', '0xa9059cbb', '0xb7009613', '0xbe9a6555', + '0xbf7e214f', '0xdd62ed3e', '0xffffffff'], True, False), ( '0x6060604052600436106102a55763ffffffff60e060020a60003504166301ffc9a781146102dd5780630519ce79146103295780630560ff441461035857806305e45546146103f157806306fdde0314610416578063095ea7b3146104295780630a0f81681461044b5780630e583df01461045e57806314001f4c1461047157806318160ddd14610490578063183a7947146104a35780631940a936146104b657806319c2f201146104cc57806321717ebf146104df57806323b872dd146104f257806324e7a38a1461051a57806327d7874c146105395780632ba73c15146105585780633d7d3f5a146105775780633f4ba83a1461059657806346116e6f146105a957806346d22c70146105bf578063481af3d3146105d85780634ad8c938146105ee5780634b85fd551461060d5780634dfff04f146106235780634e0a33791461064557806356129134146106645780635663896e146106865780635c975abb1461069c5780635fd8c710146106af5780636352211e146106c2578063680eba27146106d85780636af04a57146106eb5780636fbde40d146106fe57806370a082311461071d578063715879881461073c5780637a7d49371461075b5780638456cb591461076e5780638462151c1461078157806388c2a0bf146107f357806391876e571461080957806395d89b411461081c5780639d6fac6f1461082f578063a45f4bfc1461085e578063a9059cbb14610874578063b047fb5014610896578063b0c35c05146108a9578063bc4006f5146108bc578063c3bea9af146108cf578063d3e6f49f146108e5578063defb9584146108fb578063e17b25af1461090e578063e6cbe3511461092d578063e98b7f4d14610940578063ed60ade6146109ae578063f1ca9410146109bc578063f2b47d52146109cf578063f7d8c883146109e2575b600b5433600160a060020a03908116911614806102d05750600c5433600160a060020a039081169116145b15156102db57600080fd5b005b34156102e857600080fd5b6103157fffffffff00000000000000000000000000000000000000000000000000000000600435166109f0565b604051901515815260200160405180910390f35b341561033457600080fd5b61033c610c77565b604051600160a060020a03909116815260200160405180910390f35b341561036357600080fd5b61037a600480359060248035908101910135610c86565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103b657808201518382015260200161039e565b50505050905090810190601f1680156103e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103fc57600080fd5b610404610d63565b60405190815260200160405180910390f35b341561042157600080fd5b61037a610d69565b341561043457600080fd5b6102db600160a060020a0360043516602435610da0565b341561045657600080fd5b61033c610e2a565b341561046957600080fd5b610404610e39565b341561047c57600080fd5b6102db600160a060020a0360043516610e44565b341561049b57600080fd5b610404610ef1565b34156104ae57600080fd5b610404610efc565b34156104c157600080fd5b610315600435610f02565b34156104d757600080fd5b610404610f47565b34156104ea57600080fd5b61033c610f4e565b34156104fd57600080fd5b6102db600160a060020a0360043581169060243516604435610f5d565b341561052557600080fd5b6102db600160a060020a0360043516610fe4565b341561054457600080fd5b6102db600160a060020a0360043516611091565b341561056357600080fd5b6102db600160a060020a03600435166110e3565b341561058257600080fd5b6102db600435602435604435606435611135565b34156105a157600080fd5b6102db611214565b34156105b457600080fd5b61033c6004356112ac565b34156105ca57600080fd5b6103156004356024356112c7565b34156105e357600080fd5b61033c600435611347565b34156105f957600080fd5b6102db600435602435604435606435611362565b341561061857600080fd5b6102db600435611428565b341561062e57600080fd5b6102db600160a060020a0360043516602435611448565b341561065057600080fd5b6102db600160a060020a03600435166114a2565b341561066f57600080fd5b6102db600435600160a060020a03602435166114f4565b341561069157600080fd5b6102db600435611560565b34156106a757600080fd5b6103156115c8565b34156106ba57600080fd5b6102db6115d8565b34156106cd57600080fd5b61033c600435611649565b34156106e357600080fd5b61040461166d565b34156106f657600080fd5b61033c611673565b341561070957600080fd5b6102db600160a060020a0360043516611682565b341561072857600080fd5b610404600160a060020a036004351661172f565b341561074757600080fd5b6102db600160a060020a036004351661174a565b341561076657600080fd5b6104046117d8565b341561077957600080fd5b6102db6117de565b341561078c57600080fd5b6107a0600160a060020a036004351661186a565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156107df5780820151838201526020016107c7565b505050509050019250505060405180910390f35b34156107fe57600080fd5b61040460043561194b565b341561081457600080fd5b6102db611c1b565b341561082757600080fd5b61037a611d0e565b341561083a57600080fd5b610845600435611d45565b60405163ffffffff909116815260200160405180910390f35b341561086957600080fd5b61033c600435611d72565b341561087f57600080fd5b6102db600160a060020a0360043516602435611d8d565b34156108a157600080fd5b61033c611e30565b34156108b457600080fd5b610404611e3f565b34156108c757600080fd5b61033c611e45565b34156108da57600080fd5b6102db600435611e54565b34156108f057600080fd5b610315600435611f47565b341561090657600080fd5b610404612010565b341561091957600080fd5b6102db600160a060020a0360043516612016565b341561093857600080fd5b61033c612053565b341561094b57600080fd5b610956600435612062565b6040519915158a5297151560208a01526040808a01979097526060890195909552608088019390935260a087019190915260c086015260e0850152610100840152610120830191909152610140909101905180910390f35b6102db6004356024356121c3565b34156109c757600080fd5b610404612316565b34156109da57600080fd5b61033c61231c565b6102db60043560243561232b565b60006040517f737570706f727473496e7465726661636528627974657334290000000000000081526019016040518091039020600160e060020a03191682600160e060020a0319161480610c6f57506040517f746f6b656e4d657461646174612875696e743235362c737472696e67290000008152601d0160405180910390206040517f746f6b656e734f664f776e657228616464726573732900000000000000000000815260160160405180910390206040517f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81527f7432353629000000000000000000000000000000000000000000000000000000602082015260250160405180910390206040517f7472616e7366657228616464726573732c75696e743235362900000000000000815260190160405180910390206040517f617070726f766528616464726573732c75696e74323536290000000000000000815260180160405180910390206040517f6f776e65724f662875696e743235362900000000000000000000000000000000815260100160405180910390206040517f62616c616e63654f662861646472657373290000000000000000000000000000815260120160405180910390206040517f746f74616c537570706c792829000000000000000000000000000000000000008152600d0160405180910390206040517f73796d626f6c2829000000000000000000000000000000000000000000000000815260080160405180910390206040517f6e616d652829000000000000000000000000000000000000000000000000000081526006016040518091039020181818181818181818600160e060020a03191682600160e060020a031916145b90505b919050565b600154600160a060020a031681565b610c8e612fa0565b610c96612fb2565b600d54600090600160a060020a03161515610cb057600080fd5b600d54600160a060020a031663cb4799f2878787600060405160a0015260405160e060020a63ffffffff861602815260048101848152604060248301908152604483018490529091606401848480828437820191505094505050505060a060405180830381600087803b1515610d2557600080fd5b6102c65a03f11515610d3657600080fd5b50505060405180608001805160209091016040529092509050610d59828261251d565b9695505050505050565b60115481565b60408051908101604052600d81527f43727970746f4b69747469657300000000000000000000000000000000000000602082015281565b60025460a060020a900460ff1615610db757600080fd5b610dc13382612572565b1515610dcc57600080fd5b610dd68183612592565b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925338383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050565b600054600160a060020a031681565b662386f26fc1000081565b6000805433600160a060020a03908116911614610e6057600080fd5b5080600160a060020a0381166376190f8f6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ea857600080fd5b6102c65a03f11515610eb957600080fd5b505050604051805190501515610ece57600080fd5b600c8054600160a060020a031916600160a060020a039290921691909117905550565b600654600019015b90565b600f5481565b6000808211610f1057600080fd5b6006805483908110610f1e57fe5b600091825260209091206002909102016001015460c060020a900463ffffffff16151592915050565b6201518081565b600c54600160a060020a031681565b60025460a060020a900460ff1615610f7457600080fd5b600160a060020a0382161515610f8957600080fd5b30600160a060020a031682600160a060020a031614151515610faa57600080fd5b610fb433826125c0565b1515610fbf57600080fd5b610fc98382612572565b1515610fd457600080fd5b610fdf8383836125e0565b505050565b6000805433600160a060020a0390811691161461100057600080fd5b5080600160a060020a0381166354c15b826000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561104857600080fd5b6102c65a03f1151561105957600080fd5b50505060405180519050151561106e57600080fd5b60108054600160a060020a031916600160a060020a039290921691909117905550565b60005433600160a060020a039081169116146110ac57600080fd5b600160a060020a03811615156110c157600080fd5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146110fe57600080fd5b600160a060020a038116151561111357600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60025460a060020a900460ff161561114c57600080fd5b6111563385612572565b151561116157600080fd5b61116a84610f02565b1561117457600080fd5b600b5461118b908590600160a060020a0316612592565b600b54600160a060020a03166327ebe40a858585853360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156111fa57600080fd5b6102c65a03f1151561120b57600080fd5b50505050505050565b60005433600160a060020a0390811691161461122f57600080fd5b60025460a060020a900460ff16151561124757600080fd5b600b54600160a060020a0316151561125e57600080fd5b600c54600160a060020a0316151561127557600080fd5b601054600160a060020a0316151561128c57600080fd5b601354600160a060020a0316156112a257600080fd5b6112aa6126c8565b565b600a60205260009081526040902054600160a060020a031681565b600080808085116112d757600080fd5b600084116112e457600080fd5b60068054869081106112f257fe5b9060005260206000209060020201915060068481548110151561131157fe5b9060005260206000209060020201905061132d8286838761271b565b801561133e575061133e848661289b565b95945050505050565b600960205260009081526040902054600160a060020a031681565b60025460a060020a900460ff161561137957600080fd5b6113833385612572565b151561138e57600080fd5b61139784611f47565b15156113a257600080fd5b600c546113b9908590600160a060020a0316612592565b600c54600160a060020a03166327ebe40a858585853360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156111fa57600080fd5b60025433600160a060020a0390811691161461144357600080fd5b600e55565b60025460a060020a900460ff161561145f57600080fd5b6114693382612572565b151561147457600080fd5b6000908152600a602052604090208054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146114bd57600080fd5b600160a060020a03811615156114d257600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b60025460009033600160a060020a0390811691161461151257600080fd5b5080600160a060020a03811615156115325750600254600160a060020a03165b601154611388901061154357600080fd5b60118054600101905561155a6000808086856128f0565b50505050565b60025433600160a060020a039081169116148061158b575060005433600160a060020a039081169116145b806115a4575060015433600160a060020a039081169116145b15156115af57600080fd5b60035463ffffffff1681106115c357600080fd5b600555565b60025460a060020a900460ff1681565b600154600090819033600160a060020a039081169116146115f857600080fd5b30600160a060020a0316319150600e54600f546001010290508082111561164557600154600160a060020a031681830380156108fc0290604051600060405180830381858888f150505050505b5050565b600081815260076020526040902054600160a060020a0316801515610c7257600080fd5b61afc881565b601354600160a060020a031681565b6000805433600160a060020a0390811691161461169e57600080fd5b5080600160a060020a0381166385b861886000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116e657600080fd5b6102c65a03f115156116f757600080fd5b50505060405180519050151561170c57600080fd5b600b8054600160a060020a031916600160a060020a039290921691909117905550565b600160a060020a031660009081526008602052604090205490565b60005433600160a060020a0390811691161461176557600080fd5b60025460a060020a900460ff16151561177d57600080fd5b60138054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60055481565b60025433600160a060020a0390811691161480611809575060005433600160a060020a039081169116145b80611822575060015433600160a060020a039081169116145b151561182d57600080fd5b60025460a060020a900460ff161561184457600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055565b611872612fa0565b600061187c612fa0565b600080600061188a8761172f565b94508415156118ba5760006040518059106118a25750595b90808252806020026020018201604052509550611941565b846040518059106118c85750595b908082528060200260200182016040525093506118e3610ef1565b925060009150600190505b82811161193d57600081815260076020526040902054600160a060020a0388811691161415611935578084838151811061192457fe5b602090810290910101526001909101905b6001016118ee565b8395505b5050505050919050565b600080600080600080600080600260149054906101000a900460ff1615151561197357600080fd5b600680548a90811061198157fe5b60009182526020909120600290910201600181015490975067ffffffffffffffff1615156119ae57600080fd5b611a438761010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612b9c565b1515611a4e57600080fd5b60018701546006805460c060020a90920463ffffffff1697509087908110611a7257fe5b600091825260209091206001808a015460029093029091019081015490965061ffff60f060020a92839004811696509190041684901115611ac057600185015460f060020a900461ffff1693505b6010548754865460018a0154600160a060020a0390931692630d9f5aed92919068010000000000000000900467ffffffffffffffff166000190160006040516020015260405160e060020a63ffffffff86160281526004810193909352602483019190915267ffffffffffffffff166044820152606401602060405180830381600087803b1515611b5057600080fd5b6102c65a03f11515611b6157600080fd5b505050604051805160008b81526007602052604090205460018a810154929650600160a060020a039091169450611bb092508b9160c060020a900463ffffffff1690870161ffff1686866128f0565b6001880180547bffffffff00000000000000000000000000000000000000000000000019169055600f8054600019019055600e54909150600160a060020a0333169080156108fc0290604051600060405180830381858888f150939c9b505050505050505050505050565b60025433600160a060020a0390811691161480611c46575060005433600160a060020a039081169116145b80611c5f575060015433600160a060020a039081169116145b1515611c6a57600080fd5b600b54600160a060020a0316635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611ca957600080fd5b6102c65a03f11515611cba57600080fd5b5050600c54600160a060020a03169050635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611cfd57600080fd5b6102c65a03f11515610fdf57600080fd5b60408051908101604052600281527f434b000000000000000000000000000000000000000000000000000000000000602082015281565b600381600e8110611d5257fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b600760205260009081526040902054600160a060020a031681565b60025460a060020a900460ff1615611da457600080fd5b600160a060020a0382161515611db957600080fd5b30600160a060020a031682600160a060020a031614151515611dda57600080fd5b600b54600160a060020a0383811691161415611df557600080fd5b600c54600160a060020a0383811691161415611e1057600080fd5b611e1a3382612572565b1515611e2557600080fd5b6116453383836125e0565b600254600160a060020a031681565b600e5481565b600d54600160a060020a031681565b60025460009033600160a060020a03908116911614611e7257600080fd5b60125461afc89010611e8357600080fd5b611e92600080600085306128f0565b600b54909150611eac908290600160a060020a0316612592565b600b54600160a060020a03166327ebe40a82611ec6612bd4565b6000620151803060405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b1515611f2657600080fd5b6102c65a03f11515611f3757600080fd5b5050601280546001019055505050565b600080808311611f5657600080fd5b6006805484908110611f6457fe5b906000526020600020906002020190506120098161010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612c82565b9392505050565b61138881565b60005433600160a060020a0390811691161461203157600080fd5b600d8054600160a060020a031916600160a060020a0392909216919091179055565b600b54600160a060020a031681565b600080600080600080600080600080600060068c81548110151561208257fe5b906000526020600020906002020190508060010160189054906101000a900463ffffffff1663ffffffff16600014159a50438160010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115995080600101601c9054906101000a900461ffff1661ffff1698508060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1697508060010160189054906101000a900463ffffffff1663ffffffff1696508060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1695508060010160109054906101000a900463ffffffff1663ffffffff1694508060010160149054906101000a900463ffffffff1663ffffffff16935080600101601e9054906101000a900461ffff1661ffff16925080600001549150509193959799509193959799565b60025460009060a060020a900460ff16156121dd57600080fd5b6121e73383612572565b15156121f257600080fd5b6121fb82611f47565b151561220657600080fd5b6122108284612cb9565b151561221b57600080fd5b600c54600160a060020a031663c55d0f568460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561226c57600080fd5b6102c65a03f1151561227d57600080fd5b5050506040518051600e549092508201341015905061229b57600080fd5b600c54600e54600160a060020a039091169063454a2ab39034038560405160e060020a63ffffffff851602815260048101919091526024016000604051808303818588803b15156122eb57600080fd5b6125ee5a03f115156122fc57600080fd5b50505050610fdf8263ffffffff168463ffffffff16612d08565b60125481565b601054600160a060020a031681565b600254600090819060a060020a900460ff161561234757600080fd5b600e5434101561235657600080fd5b6123603385612572565b151561236b57600080fd5b612375838561289b565b151561238057600080fd5b600680548590811061238e57fe5b906000526020600020906002020191506124338261010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612c82565b151561243e57600080fd5b600680548490811061244c57fe5b906000526020600020906002020190506124f18161010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612c82565b15156124fc57600080fd5b6125088285838661271b565b151561251357600080fd5b61155a8484612d08565b612525612fa0565b61252d612fa0565b6000808460405180591061253e5750595b818152601f19601f8301168101602001604052905092505060208201905084612568828287612e72565b5090949350505050565b600090815260076020526040902054600160a060020a0391821691161490565b6000918252600960205260409091208054600160a060020a031916600160a060020a03909216919091179055565b600090815260096020526040902054600160a060020a0391821691161490565b600160a060020a03808316600081815260086020908152604080832080546001019055858352600790915290208054600160a060020a031916909117905583161561267357600160a060020a03831660009081526008602090815260408083208054600019019055838352600a82528083208054600160a060020a03199081169091556009909252909120805490911690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b60005433600160a060020a039081169116146126e357600080fd5b60025460a060020a900460ff1615156126fb57600080fd5b6002805474ff000000000000000000000000000000000000000019169055565b60008184141561272d57506000612893565b6001850154608060020a900463ffffffff1682148061275c5750600185015460a060020a900463ffffffff1682145b1561276957506000612893565b6001830154608060020a900463ffffffff168414806127985750600183015460a060020a900463ffffffff1684145b156127a557506000612893565b6001830154608060020a900463ffffffff1615806127d257506001850154608060020a900463ffffffff16155b156127df57506001612893565b60018581015490840154608060020a9182900463ffffffff9081169290910416148061282a575060018086015490840154608060020a900463ffffffff90811660a060020a90920416145b1561283757506000612893565b6001808601549084015460a060020a900463ffffffff908116608060020a90920416148061288257506001858101549084015460a060020a9182900463ffffffff9081169290910416145b1561288f57506000612893565b5060015b949350505050565b6000818152600760205260408082205484835290822054600160a060020a0391821691168082148061133e57506000858152600a6020526040902054600160a060020a03908116908316149250505092915050565b6000806128fb612fdb565b600063ffffffff8916891461290f57600080fd5b63ffffffff8816881461292157600080fd5b61ffff8716871461293157600080fd5b600287049250600d8361ffff16111561294957600d92505b610100604051908101604090815287825267ffffffffffffffff42166020830152600090820181905263ffffffff808c1660608401528a16608083015260a082015261ffff80851660c0830152881660e0820152600680549193506001918083016129b4838261301f565b6000928352602090922085916002020181518155602082015160018201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060c082015181600101601c6101000a81548161ffff021916908361ffff16021790555060e08201516001909101805461ffff9290921660f060020a027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555003905063ffffffff81168114612b0f57600080fd5b7f0a5311bd2a6608f08a180df2ee7c5946819a649b204b554bb8e39825b2c50ad58582846060015163ffffffff16856080015163ffffffff168651604051600160a060020a03909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390a1612b90600086836125e0565b98975050505050505050565b60008160a0015163ffffffff1615801590610c6f57504367ffffffffffffffff16826040015167ffffffffffffffff16111592915050565b600b5460009081908190600160a060020a031663eac9d94c82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612c2257600080fd5b6102c65a03f11515612c3357600080fd5b50505060405180519250506fffffffffffffffffffffffffffffffff82168214612c5c57600080fd5b50600281048101662386f26fc10000811015612c7c5750662386f26fc100005b92915050565b60008160a0015163ffffffff16158015610c6f57504367ffffffffffffffff16826040015167ffffffffffffffff16111592915050565b6000806000600685815481101515612ccd57fe5b90600052602060002090600202019150600684815481101515612cec57fe5b9060005260206000209060020201905061133e8286838761271b565b600080600683815481101515612d1a57fe5b90600052602060002090600202019150600684815481101515612d3957fe5b600091825260209091206002909102016001810180547bffffffff000000000000000000000000000000000000000000000000191660c060020a63ffffffff8716021790559050612d8982612eb7565b612d9281612eb7565b6000848152600a602090815260408083208054600160a060020a031990811690915586845281842080549091169055600f8054600190810190915587845260079092529182902054908301547f241ea03ca20251805084d27d4440371c34a0b85ff108f6bb5611248f73818b8092600160a060020a0390921691879187916801000000000000000090910467ffffffffffffffff1690518085600160a060020a0316600160a060020a031681526020018481526020018381526020018267ffffffffffffffff16815260200194505050505060405180910390a150505050565b60005b60208210612e985782518452602084019350602083019250602082039150612e75565b6001826020036101000a03905080198351168185511617909352505050565b600554600182015443919060039060e060020a900461ffff16600e8110612eda57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16811515612f0557fe5b6001840180546fffffffffffffffff0000000000000000191668010000000000000000939092049390930167ffffffffffffffff16919091021790819055600d60e060020a90910461ffff161015612f9d576001818101805461ffff60e060020a8083048216909401169092027fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555b50565b60206040519081016040526000815290565b60806040519081016040526004815b60008152600019919091019060200181612fc15790505090565b6101006040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e082015290565b815481835581811511610fdf57600083815260209020610fdf91610ef99160029182028101918502015b808211156130635760008082556001820155600201613049565b50905600a165627a7a72305820a6465fc1ce7ab1a92906ff7206b23d80a21bbd50b85b4bde6a91f8e6b2e3edde0029', ['0x01ffc9a7', '0x0519ce79', '0x0560ff44', '0x05e45546', '0x06fdde03', '0x095ea7b3', '0x0a0f8168', - '0x0e583df0', '0x14001f4c', '0x18160ddd', '0x183a7947', '0x1940a936', '0x19c2f201', '0x21717ebf', - '0x23b872dd', '0x24e7a38a', '0x27d7874c', '0x2ba73c15', '0x3d7d3f5a', '0x3f4ba83a', '0x46116e6f', - '0x46d22c70', '0x481af3d3', '0x4ad8c938', '0x4b85fd55', '0x4dfff04f', '0x4e0a3379', '0x56129134', - '0x5663896e', '0x5c975abb', '0x5fd8c710', '0x6352211e', '0x680eba27', '0x6af04a57', '0x6fbde40d', - '0x70a08231', '0x71587988', '0x7a7d4937', '0x8456cb59', '0x8462151c', '0x88c2a0bf', '0x91876e57', - '0x95d89b41', '0x9d6fac6f', '0xa45f4bfc', '0xa9059cbb', '0xb047fb50', '0xb0c35c05', '0xbc4006f5', - '0xc3bea9af', '0xd3e6f49f', '0xdefb9584', '0xe17b25af', '0xe6cbe351', '0xe98b7f4d', - '0xed60ade6', '0xf1ca9410', '0xf2b47d52', '0xf7d8c883', '0xffffffff'], + '0x0d9f5aed', '0x0e583df0', '0x14001f4c', '0x18160ddd', '0x183a7947', '0x1940a936', '0x19c2f201', + '0x21717ebf', '0x23b872dd', '0x24e7a38a', '0x27d7874c', '0x27ebe40a', '0x2ba73c15', '0x3d7d3f5a', + '0x3f4ba83a', '0x454a2ab3', '0x46116e6f', '0x46d22c70', '0x481af3d3', '0x4ad8c938', '0x4b85fd55', + '0x4dfff04f', '0x4e0a3379', '0x54c15b82', '0x56129134', '0x5663896e', '0x5c975abb', '0x5fd8c710', + '0x6352211e', '0x680eba27', '0x6af04a57', '0x6fbde40d', '0x70a08231', '0x71587988', '0x76190f8f', + '0x7a7d4937', '0x8456cb59', '0x8462151c', '0x85b86188', '0x88c2a0bf', '0x91876e57', '0x95d89b41', + '0x9d6fac6f', '0xa45f4bfc', '0xa9059cbb', '0xb047fb50', '0xb0c35c05', '0xbc4006f5', '0xc3bea9af', + '0xc55d0f56', '0xcb4799f2', '0xd3e6f49f', '0xdefb9584', '0xe17b25af', '0xe6cbe351', '0xe98b7f4d', + '0xeac9d94c', '0xed60ade6', '0xf1ca9410', '0xf2b47d52', '0xf7d8c883', '0xffffffff'], False, True), ('0x44919b8026f38d70437a8eb3be47b06ab1c3e4bf', [], False, False), ( '0x606060405236156100cd5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100d257806307da68f51461015d578063095ea7b31461017257806318160ddd146101a857806323b872dd146101cd578063313ce5671461020957806342966c681461022e57806370a082311461024657806375f12b211461027757806395d89b411461029e578063a9059cbb14610329578063be9a65551461035f578063c47f002714610374578063dd62ed3e146103c7575b600080fd5b34156100dd57600080fd5b6100e56103fe565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101225780820151818401525b602001610109565b50505050905090810190601f16801561014f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561016857600080fd5b61017061049c565b005b341561017d57600080fd5b610194600160a060020a03600435166024356104ca565b604051901515815260200160405180910390f35b34156101b357600080fd5b6101bb610593565b60405190815260200160405180910390f35b34156101d857600080fd5b610194600160a060020a0360043581169060243516604435610599565b604051901515815260200160405180910390f35b341561021457600080fd5b6101bb6106cd565b60405190815260200160405180910390f35b341561023957600080fd5b6101706004356106d3565b005b341561025157600080fd5b6101bb600160a060020a036004351661077d565b60405190815260200160405180910390f35b341561028257600080fd5b61019461078f565b604051901515815260200160405180910390f35b34156102a957600080fd5b6100e5610798565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101225780820151818401525b602001610109565b50505050905090810190601f16801561014f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561033457600080fd5b610194600160a060020a0360043516602435610836565b604051901515815260200160405180910390f35b341561036a57600080fd5b610170610916565b005b341561037f57600080fd5b61017060046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061094195505050505050565b005b34156103d257600080fd5b6101bb600160a060020a0360043581169060243516610977565b60405190815260200160405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104945780601f1061046957610100808354040283529160200191610494565b820191906000526020600020905b81548152906001019060200180831161047757829003601f168201915b505050505081565b60065433600160a060020a0390811661010090920416146104b957fe5b6006805460ff191660011790555b5b565b60065460009060ff16156104da57fe5b600160a060020a03331615156104ec57fe5b81158061051c5750600160a060020a03338116600090815260046020908152604080832093871683529290522054155b151561052757600080fd5b600160a060020a03338116600081815260046020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b5b5b92915050565b60055481565b60065460009060ff16156105a957fe5b600160a060020a03331615156105bb57fe5b600160a060020a038416600090815260036020526040902054829010156105e157600080fd5b600160a060020a038316600090815260036020526040902054828101101561060857600080fd5b600160a060020a03808516600090815260046020908152604080832033909416835292905220548290101561063c57600080fd5b600160a060020a03808416600081815260036020908152604080832080548801905588851680845281842080548990039055600483528184203390961684529490915290819020805486900390559091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b5b5b9392505050565b60025481565b600160a060020a033316600090815260036020526040902054819010156106f957600080fd5b600160a060020a033316600081815260036020526040808220805485900390558180527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff8054850190559091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a35b50565b60036020526000908152604090205481565b60065460ff1681565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104945780601f1061046957610100808354040283529160200191610494565b820191906000526020600020905b81548152906001019060200180831161047757829003601f168201915b505050505081565b60065460009060ff161561084657fe5b600160a060020a033316151561085857fe5b600160a060020a0333166000908152600360205260409020548290101561087e57600080fd5b600160a060020a03831660009081526003602052604090205482810110156108a557600080fd5b600160a060020a033381166000818152600360205260408082208054879003905592861680825290839020805486019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b5b5b92915050565b60065433600160a060020a03908116610100909204161461093357fe5b6006805460ff191690555b5b565b60065433600160a060020a03908116610100909204161461095e57fe5b6000818051610971929160200190610994565b505b5b50565b600460209081526000928352604080842090915290825290205481565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106109d557805160ff1916838001178555610a02565b82800160010185558215610a02579182015b82811115610a025782518255916020019190600101906109e7565b5b50610a0f929150610a13565b5090565b610a3191905b80821115610a0f5760008155600101610a19565b5090565b905600a165627a7a72305820a17a4d0d7c5057421200f6c2edf0f0b8597554f0871e24147362dd783b42d7fc0029', ['0x06fdde03', '0x07da68f5', '0x095ea7b3', '0x18160ddd', '0x23b872dd', '0x313ce567', '0x42966c68', - '0x70a08231', '0x75f12b21', '0x95d89b41', '0xa9059cbb', '0xbe9a6555', '0xc47f0027', '0xdd62ed3e', - '0xffffffff'], True, False), + '0x70a08231', '0x75f12b21', '0x95d89b41', '0xa9059cbb', '0xbe9a6555', '0xc47f0027', '0xdd62ed3e', + '0xffffffff'], True, False), ( '0x6080604052600436106101d75763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a781146101dc57806306fdde0314610212578063081812fc1461029c578063095ea7b3146102d057806312c3f754146102f657806317ffc3201461031d57806318160ddd1461033e57806323b872dd146103535780632f745c591461037d57806334c05ca8146103a1578063392e53cd146104435780633f4ba83a1461045857806342842e0e1461046d57806346904840146104975780634f558e79146104ac5780634f6ccce7146104c4578063509484d5146104dc5780635c975abb146104fd5780636352211e1461051257806370a082311461052a5780637bdc60d91461054b5780637bf9a7c4146105c65780638456cb59146105f65780638da5cb5b1461060b5780638ed3fa7c1461062057806390e7a0741461063557806395d89b411461064a57806399e0dd7c1461065f578063a22cb4651461067f578063acb2ad6f146106a5578063b88d4fde146106ba578063c0ac998314610729578063c87b56dd1461073e578063c9a6964a14610756578063dce0b4e414610777578063e985e9c51461078c578063ee5301d5146107b3578063f2fde38b1461085e575b600080fd5b3480156101e857600080fd5b506101fe600160e060020a03196004351661087f565b604080519115158252519081900360200190f35b34801561021e57600080fd5b506102276108f8565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610261578181015183820152602001610249565b50505050905090810190601f16801561028e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102a857600080fd5b506102b460043561098f565b60408051600160a060020a039092168252519081900360200190f35b3480156102dc57600080fd5b506102f4600160a060020a03600435166024356109aa565b005b34801561030257600080fd5b5061030b610a82565b60408051918252519081900360200190f35b34801561032957600080fd5b506102f4600160a060020a0360043516610a88565b34801561034a57600080fd5b5061030b610bd1565b34801561035f57600080fd5b506102f4600160a060020a0360043581169060243516604435610bd7565b34801561038957600080fd5b5061030b600160a060020a0360043516602435610e10565b3480156103ad57600080fd5b5060408051606435600481810135602081810285810182019096528185526102f495833595602480359660443596369690956084959290930192909182918501908490808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750610e5d9650505050505050565b34801561044f57600080fd5b506101fe61109a565b34801561046457600080fd5b506102f46110bb565b34801561047957600080fd5b506102f4600160a060020a0360043581169060243516604435611134565b3480156104a357600080fd5b506102b4611365565b3480156104b857600080fd5b506101fe600435611374565b3480156104d057600080fd5b5061030b600435611397565b3480156104e857600080fd5b506102f4600160a060020a03600435166113cc565b34801561050957600080fd5b506101fe611405565b34801561051e57600080fd5b506102b4600435611415565b34801561053657600080fd5b5061030b600160a060020a0360043516611439565b34801561055757600080fd5b5061056360043561146c565b604080518481526020808201859052606092820183815284519383019390935283519192916080840191858101910280838360005b838110156105b0578181015183820152602001610598565b5050505090500194505050505060405180910390f35b3480156105d257600080fd5b506102f4600160a060020a03600435811690602435166044356064356084356114e9565b34801561060257600080fd5b506102f461153e565b34801561061757600080fd5b506102b46115bc565b34801561062c57600080fd5b506102b46115cb565b34801561064157600080fd5b506102b46115da565b34801561065657600080fd5b506102276115e9565b34801561066b57600080fd5b506102f4600480356024810191013561164a565b34801561068b57600080fd5b506102f4600160a060020a0360043516602435151561166d565b3480156106b157600080fd5b5061030b6116e3565b3480156106c657600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526102f494600160a060020a0381358116956024803590921695604435953695608494019181908401838280828437509497506116e99650505050505050565b34801561073557600080fd5b50610227611924565b34801561074a57600080fd5b506102276004356119b2565b34801561076257600080fd5b506102f4600160a060020a0360043516611b96565b34801561078357600080fd5b5061030b611c5c565b34801561079857600080fd5b506101fe600160a060020a0360043581169060243516611c62565b3480156107bf57600080fd5b5060408051606435600481810135602081810285810182019096528185526102f495600160a060020a0384351695602480359660443596369690956084959290930192909182918501908490808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611c909650505050505050565b34801561086a57600080fd5b506102f4600160a060020a0360043516611ec3565b600061088a82611f4b565b806108be5750600160e060020a031982167f780e9d6300000000000000000000000000000000000000000000000000000000145b806108f25750600160e060020a031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b92915050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109845780601f1061095957610100808354040283529160200191610984565b820191906000526020600020905b81548152906001019060200180831161096757829003601f168201915b505050505090505b90565b600090815260016020526040902054600160a060020a031690565b60006109b582611415565b9050600160a060020a0383811690821614156109d057600080fd5b33600160a060020a03821614806109ec57506109ec8133611c62565b15156109f757600080fd5b6000610a028361098f565b600160a060020a0316141580610a205750600160a060020a03831615155b15610a7d576000828152600160205260408082208054600160a060020a031916600160a060020a0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45b505050565b60125481565b600c54600090600160a060020a03163314610aa257600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b505050506040513d6020811015610b2d57600080fd5b5051600c54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810184905290519293509084169163a9059cbb916044808201926020929091908290030181600087803b158015610ba157600080fd5b505af1158015610bb5573d6000803e3d6000fd5b505050506040513d6020811015610bcb57600080fd5b50505050565b60085490565b600c5460a860020a900460ff1615610bee57600080fd5b601154600f546000908190600160a060020a031615801590610c105750600083115b15610dfd57600e5460009250600160a060020a031615610d2457600e546040805160e060020a6332a922290281523360048201529051600160a060020a03909216916332a92229916024808201926020929091908290030181600087803b158015610c7a57600080fd5b505af1158015610c8e573d6000803e3d6000fd5b505050506040513d6020811015610ca457600080fd5b505190506000811115610d2457600e546040805160e260020a6309853529028152336004820152600160248201529051600160a060020a0390921691632614d4a49160448082019260009290919082900301818387803b158015610d0757600080fd5b505af1158015610d1b573d6000803e3d6000fd5b50505050600191505b811515610dfd57600d54600f546040805160e060020a6323b872dd028152336004820152600160a060020a03928316602482015260448101879052905191909216916323b872dd9160648083019260209291908290030181600087803b158015610d8d57600080fd5b505af1158015610da1573d6000803e3d6000fd5b505050506040513d6020811015610db757600080fd5b50511515610dfd576040805160e560020a62461bcd0281526020600482015260126024820152600080516020612af5833981519152604482015290519081900360640190fd5b610e08868686611f8c565b505050505050565b6000610e1b83611439565b8210610e2657600080fd5b600160a060020a0383166000908152600660205260409020805483908110610e4a57fe5b9060005260206000200154905092915050565b600c5460a860020a900460ff1615610e7457600080fd5b601254600f546000908190600160a060020a031615801590610e965750600083115b1561108357600e5460009250600160a060020a031615610faa57600e546040805160e060020a6332a922290281523360048201529051600160a060020a03909216916332a92229916024808201926020929091908290030181600087803b158015610f0057600080fd5b505af1158015610f14573d6000803e3d6000fd5b505050506040513d6020811015610f2a57600080fd5b505190506000811115610faa57600e546040805160e260020a6309853529028152336004820152600160248201529051600160a060020a0390921691632614d4a49160448082019260009290919082900301818387803b158015610f8d57600080fd5b505af1158015610fa1573d6000803e3d6000fd5b50505050600191505b81151561108357600d54600f546040805160e060020a6323b872dd028152336004820152600160a060020a03928316602482015260448101879052905191909216916323b872dd9160648083019260209291908290030181600087803b15801561101357600080fd5b505af1158015611027573d6000803e3d6000fd5b505050506040513d602081101561103d57600080fd5b50511515611083576040805160e560020a62461bcd0281526020600482015260126024820152600080516020612af5833981519152604482015290519081900360640190fd5b6110908888888888611f97565b5050505050505050565b600c5474010000000000000000000000000000000000000000900460ff1681565b600c54600160a060020a031633146110d257600080fd5b600c5460a860020a900460ff1615156110ea57600080fd5b600c805475ff000000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600c5460a860020a900460ff161561114b57600080fd5b601154600f546000908190600160a060020a03161580159061116d5750600083115b1561135a57600e5460009250600160a060020a03161561128157600e546040805160e060020a6332a922290281523360048201529051600160a060020a03909216916332a92229916024808201926020929091908290030181600087803b1580156111d757600080fd5b505af11580156111eb573d6000803e3d6000fd5b505050506040513d602081101561120157600080fd5b50519050600081111561128157600e546040805160e260020a6309853529028152336004820152600160248201529051600160a060020a0390921691632614d4a49160448082019260009290919082900301818387803b15801561126457600080fd5b505af1158015611278573d6000803e3d6000fd5b50505050600191505b81151561135a57600d54600f546040805160e060020a6323b872dd028152336004820152600160a060020a03928316602482015260448101879052905191909216916323b872dd9160648083019260209291908290030181600087803b1580156112ea57600080fd5b505af11580156112fe573d6000803e3d6000fd5b505050506040513d602081101561131457600080fd5b5051151561135a576040805160e560020a62461bcd0281526020600482015260126024820152600080516020612af5833981519152604482015290519081900360640190fd5b610e08868686612190565b600f54600160a060020a031681565b600081815260208190526040902054600160a060020a0316801515905b50919050565b60006113a1610bd1565b82106113ac57600080fd5b60088054839081106113ba57fe5b90600052602060002001549050919050565b600c54600160a060020a031633146113e357600080fd5b600e8054600160a060020a031916600160a060020a0392909216919091179055565b600c5460a860020a900460ff1681565b600081815260208190526040812054600160a060020a03168015156108f257600080fd5b6000600160a060020a038216151561145057600080fd5b50600160a060020a031660009081526002602052604090205490565b6000818152600a60209081526040808320805460018201546002909201805484518187028101870190955280855286956060959394939183918301828280156114d557602002820191906000526020600020905b815481526001909101906020018083116114c0575b505050505090509250925092509193909250565b600c54600160a060020a0316331461150057600080fd5b600d8054600160a060020a03968716600160a060020a031991821617909155600f805495909616941693909317909355601055601191909155601255565b600c54600160a060020a0316331461155557600080fd5b600c5460a860020a900460ff161561156c57600080fd5b600c805475ff000000000000000000000000000000000000000000191660a860020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600c54600160a060020a031681565b600d54600160a060020a031681565b600e54600160a060020a031681565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109845780601f1061095957610100808354040283529160200191610984565b600c54600160a060020a0316331461166157600080fd5b610a7d600b83836129ff565b600160a060020a03821633141561168357600080fd5b336000818152600360209081526040808320600160a060020a0387168085529252808320805460ff19168615159081179091559051909391927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191a45050565b60115481565b600c5460a860020a900460ff161561170057600080fd5b601154600f546000908190600160a060020a0316158015906117225750600083115b1561190f57600e5460009250600160a060020a03161561183657600e546040805160e060020a6332a922290281523360048201529051600160a060020a03909216916332a92229916024808201926020929091908290030181600087803b15801561178c57600080fd5b505af11580156117a0573d6000803e3d6000fd5b505050506040513d60208110156117b657600080fd5b50519050600081111561183657600e546040805160e260020a6309853529028152336004820152600160248201529051600160a060020a0390921691632614d4a49160448082019260009290919082900301818387803b15801561181957600080fd5b505af115801561182d573d6000803e3d6000fd5b50505050600191505b81151561190f57600d54600f546040805160e060020a6323b872dd028152336004820152600160a060020a03928316602482015260448101879052905191909216916323b872dd9160648083019260209291908290030181600087803b15801561189f57600080fd5b505af11580156118b3573d6000803e3d6000fd5b505050506040513d60208110156118c957600080fd5b5051151561190f576040805160e560020a62461bcd0281526020600482015260126024820152600080516020612af5833981519152604482015290519081900360640190fd5b61191b878787876121ac565b50505050505050565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156119aa5780601f1061197f576101008083540402835291602001916119aa565b820191906000526020600020905b81548152906001019060200180831161198d57829003601f168201915b505050505081565b606080606080600080600b8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a515780601f10611a2657610100808354040283529160200191611a51565b820191906000526020600020905b815481529060010190602001808311611a3457829003601f168201915b50505050509450845160001415611a78576040805160208101909152600081529550611b8c565b611a81876121b8565b935083518551016040519080825280601f01601f191660200182016040528015611ab5578160200160208202803883390190505b50925060009050600091505b8451821015611b22578482815181101515611ad857fe5b90602001015160f860020a900460f860020a028382806001019350815181101515611aff57fe5b906020010190600160f860020a031916908160001a905350600190910190611ac1565b600091505b8351821015611b88578382815181101515611b3e57fe5b90602001015160f860020a900460f860020a028382806001019350815181101515611b6557fe5b906020010190600160f860020a031916908160001a905350600190910190611b27565b8295505b5050505050919050565b600c5474010000000000000000000000000000000000000000900460ff1615611c09576040805160e560020a62461bcd02815260206004820152601e60248201527f546865206f776e65722068617320616c7265616479206265656e207365740000604482015290519081900360640190fd5b600c80547401000000000000000000000000000000000000000074ff00000000000000000000000000000000000000001990911617600160a060020a031916600160a060020a0392909216919091179055565b60105481565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205460ff1690565b600c5460a860020a900460ff1615611ca757600080fd5b601054600f546000908190600160a060020a031615801590611cc95750600083115b15611eb657600e5460009250600160a060020a031615611ddd57600e546040805160e060020a6332a922290281523360048201529051600160a060020a03909216916332a92229916024808201926020929091908290030181600087803b158015611d3357600080fd5b505af1158015611d47573d6000803e3d6000fd5b505050506040513d6020811015611d5d57600080fd5b505190506000811115611ddd57600e546040805160e260020a6309853529028152336004820152600160248201529051600160a060020a0390921691632614d4a49160448082019260009290919082900301818387803b158015611dc057600080fd5b505af1158015611dd4573d6000803e3d6000fd5b50505050600191505b811515611eb657600d54600f546040805160e060020a6323b872dd028152336004820152600160a060020a03928316602482015260448101879052905191909216916323b872dd9160648083019260209291908290030181600087803b158015611e4657600080fd5b505af1158015611e5a573d6000803e3d6000fd5b505050506040513d6020811015611e7057600080fd5b50511515611eb6576040805160e560020a62461bcd0281526020600482015260126024820152600080516020612af5833981519152604482015290519081900360640190fd5b61109088888888886122ae565b600c54600160a060020a03163314611eda57600080fd5b600160a060020a0381161515611eef57600080fd5b600c54604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600c8054600160a060020a031916600160a060020a0392909216919091179055565b6000611f56826123b2565b806108f2575050600160e060020a0319167f80ac58cd000000000000000000000000000000000000000000000000000000001490565b610a7d8383836123e4565b6000808633611fa582611415565b600160a060020a031614611fb857600080fd5b611fc187612521565b1515611fd9576000888152600a602052604090208790555b6000888152600a6020526040812060010187905592508291505b84518210156120355761201c858381518110151561200d57fe5b90602001906020020151612521565b1561202a5760019250612035565b600190910190611ff3565b60008551118015612044575082155b15612070576000888152600a60209081526040909120865161206e92600290920191880190612a7d565b505b6000888152600a60209081526040918290208054600182015484518d815293840182905293830184905260a0606084018181526002909301805491850182905233957fe80bbb079a4d5e1e2d718ba7e22f53233cf18b23aa2d6794dceda53b0768d1ee958f9591938c9290608083019060c08401908690801561211357602002820191906000526020600020905b815481526001909101906020018083116120fe575b5050838103825284518152845160209182019186019080838360005b8381101561214757818101518382015260200161212f565b50505050905090810190601f1680156121745780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a25050505050505050565b610a7d8383836020604051908101604052806000815250612574565b610bcb84848484612574565b606060008082818515156122015760408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015294506122a5565b8593505b831561221c57600190920191600a84049350612205565b826040519080825280601f01601f19166020018201604052801561224a578160200160208202803883390190505b5086945091505060001982015b83156122a157815160001982019160f860020a6030600a8806010291849190811061227e57fe5b906020010190600160f860020a031916908160001a905350600a84049350612257565b8194505b50505050919050565b6008546122bb8682612596565b6040805160608101825286815260208082018781528284018781526000868152600a8452949094208351815590516001820155925180519293926123059260028501920190612a7d565b509050507f9573133e4bf0477d257d5e746e10de577953ee706da897be78cf668a64c16a1681836040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561236f578181015183820152602001612357565b50505050905090810190601f16801561239c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050505050565b600160e060020a031981167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b60008060006123f4868686612693565b600084815260076020908152604080832054600160a060020a038a16845260069092529091205490935061242f90600163ffffffff61286b16565b600160a060020a03871660009081526006602052604090208054919350908390811061245757fe5b90600052602060002001549050806006600088600160a060020a0316600160a060020a031681526020019081526020016000208481548110151561249757fe5b6000918252602080832090910192909255600160a060020a03881681526006909152604090208054906124ce906000198301612aba565b50600090815260076020818152604080842095909555600160a060020a03909616825260068652838220805460018101825581845287842001869055549482529094525090912060001991909101905550565b6000805b602081101561256b5782816020811061253a57fe5b1a60f860020a02600160f860020a031916600060f860020a021415156125635760009150611391565b600101612525565b50600192915050565b61257f8484846123e4565b61258b8484848461287d565b1515610bcb57600080fd5b600160a060020a03821615156125ab57600080fd5b6000818152602081815260408083208054600160a060020a031916600160a060020a038716908117909155835260029091529020546125eb9060016129ea565b600160a060020a0383166000818152600260209081526040808320949094556006808252848320805487855260078452868520819055918352600180830182559084529183200185905560088054918201815582527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30184905591518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60008061269f83611415565b9150600160a060020a03858116908316146126b957600080fd5b600160a060020a03841615156126ce57600080fd5b5033600160a060020a0382168114806126ec57506126ec8282611c62565b80612710575080600160a060020a03166127058461098f565b600160a060020a0316145b1515612766576040805160e560020a62461bcd02815260206004820152601a60248201527f4e6f7420617574686f72697a656420746f207472616e73666572000000000000604482015290519081900360640190fd5b600083815260016020526040902054600160a060020a0316156127a05760008381526001602052604090208054600160a060020a03191690555b6000838152602081815260408083208054600160a060020a031916600160a060020a03898116919091179091558816835260029091529020546127e490600161286b565b600160a060020a03808716600090815260026020526040808220939093559086168152205461281a90600163ffffffff6129ea16565b600160a060020a03808616600081815260026020526040808220949094559251869391928916917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a45050505050565b60008282111561287757fe5b50900390565b60008061289285600160a060020a03166129f7565b15156128a157600191506129e1565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201818152600160a060020a03898116602485015260448401889052608060648501908152875160848601528751918a169463150b7a0294938c938b938b93909160a490910190602085019080838360005b8381101561293457818101518382015260200161291c565b50505050905090810190601f1680156129615780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561298357600080fd5b505af1158015612997573d6000803e3d6000fd5b505050506040513d60208110156129ad57600080fd5b5051600160e060020a031981167f150b7a020000000000000000000000000000000000000000000000000000000014925090505b50949350505050565b818101828110156108f257fe5b6000903b1190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612a405782800160ff19823516178555612a6d565b82800160010185558215612a6d579182015b82811115612a6d578235825591602001919060010190612a52565b50612a79929150612ada565b5090565b828054828255906000526020600020908101928215612a6d579160200282015b82811115612a6d5782518255602090920191600190910190612a9d565b815481835581811115610a7d57600083815260209020610a7d9181019083015b61098c91905b80821115612a795760008155600101612ae05600496e73756666696369656e742066756e64730000000000000000000000000000a165627a7a7230582001b0d4b71d848d2e6846ce38fbb355182d2a3a506d2d365f293d82044bea8be30029', - ['0x01ffc9a7', '0x06fdde03', '0x081812fc', '0x095ea7b3', '0x12c3f754', '0x17ffc320', '0x18160ddd', '0x23b872dd', - '0x2f745c59', '0x34c05ca8', '0x392e53cd', '0x3f4ba83a', '0x42842e0e', '0x46904840', '0x4f558e79', '0x4f6ccce7', - '0x509484d5', '0x5c975abb', '0x6352211e', '0x70a08231', '0x7bdc60d9', '0x7bf9a7c4', '0x8456cb59', '0x8da5cb5b', - '0x8ed3fa7c', '0x90e7a074', '0x95d89b41', '0x99e0dd7c', '0xa22cb465', '0xacb2ad6f', '0xb88d4fde', '0xc0ac9983', - '0xc87b56dd', '0xc9a6964a', '0xdce0b4e4', '0xe985e9c5', '0xee5301d5', '0xf2fde38b', '0xffffffff'], False, True) + ['0x01ffc9a7', '0x06fdde03', '0x081812fc', '0x095ea7b3', '0x09853529', '0x12c3f754', '0x150b7a02', + '0x17ffc320', '0x18160ddd', '0x23b872dd', '0x2614d4a4', '0x2f745c59', '0x32a92229', '0x34c05ca8', + '0x392e53cd', '0x3f4ba83a', '0x42842e0e', '0x46904840', '0x4f558e79', '0x4f6ccce7', '0x509484d5', + '0x5c975abb', '0x6352211e', '0x70a08231', '0x7bdc60d9', '0x7bf9a7c4', '0x8456cb59', '0x8da5cb5b', + '0x8ed3fa7c', '0x90e7a074', '0x95d89b41', '0x99e0dd7c', '0xa22cb465', '0xa9059cbb', '0xacb2ad6f', + '0xb88d4fde', '0xc0ac9983', '0xc87b56dd', '0xc9a6964a', '0xdce0b4e4', '0xe985e9c5', '0xee5301d5', + '0xf2fde38b', '0xffffffff'], False, True), + ( + '0x69d3c21bcecceda100000060095569085afffa6ff50bffffff19600a5560c06040526008608081905267476f6a6f20496e7560c01b60a09081526200004891600c9190620002be565b5060408051808201909152600480825263474f4a4f60e01b60209092019182526200007691600d91620002be565b50600e8054600960ff1991821681179092556003600f8190556010556007601181905560125560006014559054601655601a805460ff60a81b191690556008601b55601c80549091166001179055348015620000d157600080fd5b50604051620033a7380380620033a783398181016040526060811015620000f757600080fd5b5080516020820151604090920151909190600062000114620002ab565b905062000120620002ab565b600080546001600160a01b0319166001600160a01b03928316178155604051918316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600a54600360006200017a620002ab565b6001600160a01b0390811682526020820192909252604001600090812092909255601780546001600160a01b03199081168784161790915560188054909116918516919091179055600190600690620001d2620002af565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260069093528183208054851660019081179091558582168452828420805486168217905560175482168452828420805486168217905560185490911683529120805490921617905562000255620002ab565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a35050506200035a565b3390565b6000546001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030157805160ff191683800117855562000331565b8280016001018555821562000331579182015b828111156200033157825182559160200191906001019062000314565b506200033f92915062000343565b5090565b5b808211156200033f576000815560010162000344565b61303d806200036a6000396000f3fe60806040526004361061028c5760003560e01c8063715018a61161015a578063a69df4b5116100c1578063c49b9a801161007a578063c49b9a8014610952578063d543dbeb1461097e578063dd467064146109a8578063dd62ed3e146109d2578063ea2f0b3714610a0d578063f2fde38b14610a4057610293565b8063a69df4b514610892578063a9059cbb146108a7578063b6c52324146108e0578063b8c9d25c146108f5578063c0d786551461090a578063c21ebd071461093d57610293565b806388f820201161011357806388f82020146107bd5780638da5cb5b146107f05780638ee88c531461080557806395d89b411461082f578063a457c2d714610844578063a4d66daf1461087d57610293565b8063715018a6146106d257806376e2b7ab146106e757806377e5006f146106fc5780637d1db4a51461072f5780638187f51614610744578063862a4bf21461077757610293565b80633685d419116101fe5780634a74bb02116101b75780634a74bb02146105dc5780634dfefc4b146105f157806352390c02146106245780635342acb4146106575780636bc87c3a1461068a57806370a082311461069f57610293565b80633685d419146104cc57806339509351146104ff5780633b124fe7146105385780633bd5d1731461054d578063437823ec146105775780634549b039146105aa57610293565b806318160ddd1161025057806318160ddd146103d757806320b9588c146103ec57806323b872dd1461041f5780632cde6081146104625780632d83811914610477578063313ce567146104a157610293565b8063061c82d01461029857806306fdde03146102c4578063095ea7b31461034e57806313114a9d1461039b578063178ef307146103c257610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102c2600480360360208110156102bb57600080fd5b5035610a73565b005b3480156102d057600080fd5b506102d9610b26565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103135781810151838201526020016102fb565b50505050905090810190601f1680156103405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561035a57600080fd5b506103876004803603604081101561037157600080fd5b506001600160a01b038135169060200135610bbc565b604080519115158252519081900360200190f35b3480156103a757600080fd5b506103b0610bda565b60408051918252519081900360200190f35b3480156103ce57600080fd5b506103b0610be0565b3480156103e357600080fd5b506103b0610be6565b3480156103f857600080fd5b506103b06004803603602081101561040f57600080fd5b50356001600160a01b0316610bec565b34801561042b57600080fd5b506103876004803603606081101561044257600080fd5b506001600160a01b03813581169160208101359091169060400135610bfe565b34801561046e57600080fd5b506102c2610c85565b34801561048357600080fd5b506103b06004803603602081101561049a57600080fd5b5035610d3e565b3480156104ad57600080fd5b506104b6610da0565b6040805160ff9092168252519081900360200190f35b3480156104d857600080fd5b506102c2600480360360208110156104ef57600080fd5b50356001600160a01b0316610da9565b34801561050b57600080fd5b506103876004803603604081101561052257600080fd5b506001600160a01b038135169060200135610f6a565b34801561054457600080fd5b506103b0610fb8565b34801561055957600080fd5b506102c26004803603602081101561057057600080fd5b5035610fbe565b34801561058357600080fd5b506102c26004803603602081101561059a57600080fd5b50356001600160a01b0316611098565b3480156105b657600080fd5b506103b0600480360360408110156105cd57600080fd5b50803590602001351515611114565b3480156105e857600080fd5b506103876111a6565b3480156105fd57600080fd5b506103876004803603602081101561061457600080fd5b50356001600160a01b03166111b6565b34801561063057600080fd5b506102c26004803603602081101561064757600080fd5b50356001600160a01b03166111cb565b34801561066357600080fd5b506103876004803603602081101561067a57600080fd5b50356001600160a01b0316611351565b34801561069657600080fd5b506103b061136f565b3480156106ab57600080fd5b506103b0600480360360208110156106c257600080fd5b50356001600160a01b0316611375565b3480156106de57600080fd5b506102c26113d7565b3480156106f357600080fd5b506103b0611467565b34801561070857600080fd5b506103b06004803603602081101561071f57600080fd5b50356001600160a01b031661146b565b34801561073b57600080fd5b506103b0611518565b34801561075057600080fd5b506102c26004803603602081101561076757600080fd5b50356001600160a01b031661151e565b34801561078357600080fd5b506107a16004803603602081101561079a57600080fd5b5035611598565b604080516001600160a01b039092168252519081900360200190f35b3480156107c957600080fd5b50610387600480360360208110156107e057600080fd5b50356001600160a01b03166115bf565b3480156107fc57600080fd5b506107a16115dd565b34801561081157600080fd5b506102c26004803603602081101561082857600080fd5b50356115ec565b34801561083b57600080fd5b506102d961169f565b34801561085057600080fd5b506103876004803603604081101561086757600080fd5b506001600160a01b038135169060200135611700565b34801561088957600080fd5b50610387611768565b34801561089e57600080fd5b506102c2611771565b3480156108b357600080fd5b50610387600480360360408110156108ca57600080fd5b506001600160a01b03813516906020013561185f565b3480156108ec57600080fd5b506103b0611873565b34801561090157600080fd5b506107a1611879565b34801561091657600080fd5b506102c26004803603602081101561092d57600080fd5b50356001600160a01b0316611888565b34801561094957600080fd5b506107a1611902565b34801561095e57600080fd5b506102c26004803603602081101561097557600080fd5b50351515611911565b34801561098a57600080fd5b506102c2600480360360208110156109a157600080fd5b50356119bc565b3480156109b457600080fd5b506102c2600480360360208110156109cb57600080fd5b5035611a8a565b3480156109de57600080fd5b506103b0600480360360408110156109f557600080fd5b506001600160a01b0381358116916020013516611b28565b348015610a1957600080fd5b506102c260048036036020811015610a3057600080fd5b50356001600160a01b0316611b53565b348015610a4c57600080fd5b506102c260048036036020811015610a6357600080fd5b50356001600160a01b0316611bcc565b610a7b611cb2565b6000546001600160a01b03908116911614610acb576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b600a811115610b21576040805162461bcd60e51b815260206004820152601f60248201527f4d6178696d756d20666565206c696d69742069732031302070657263656e7400604482015290519081900360640190fd5b600f55565b600c8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bb25780601f10610b8757610100808354040283529160200191610bb2565b820191906000526020600020905b815481529060010190602001808311610b9557829003601f168201915b5050505050905090565b6000610bd0610bc9611cb2565b8484611cb6565b5060015b92915050565b600b5490565b60145481565b60095490565b601d6020526000908152604090205481565b6000610c0b848484611d3e565b610c7b84610c17611cb2565b610c7685604051806060016040528060288152602001612ede602891396001600160a01b038a16600090815260056020526040812090610c55611cb2565b6001600160a01b03168152602081019190915260400160002054919061208a565b611cb6565b5060019392505050565b610c8d611cb2565b6000546001600160a01b03908116911614610cdd576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b601c5460ff161515600114610d32576040805162461bcd60e51b81526020600482015260166024820152756c696d697420697320616c72656164792066616c736560501b604482015290519081900360640190fd5b601c805460ff19169055565b6000600a54821115610d815760405162461bcd60e51b815260040180806020018281038252602a815260200180612e6d602a913960400191505060405180910390fd5b6000610d8b612121565b9050610d978382612144565b9150505b919050565b600e5460ff1690565b610db1611cb2565b6000546001600160a01b03908116911614610e01576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16610e6e576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600854811015610f6657816001600160a01b031660088281548110610e9257fe5b6000918252602090912001546001600160a01b03161415610f5e57600880546000198101908110610ebf57fe5b600091825260209091200154600880546001600160a01b039092169183908110610ee557fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff191690556008805480610f3757fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610f66565b600101610e71565b5050565b6000610bd0610f77611cb2565b84610c768560056000610f88611cb2565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061218d565b600f5481565b6000610fc8611cb2565b6001600160a01b03811660009081526007602052604090205490915060ff16156110235760405162461bcd60e51b815260040180806020018281038252602c815260200180612f94602c913960400191505060405180910390fd5b600061102e836121e7565b505050506001600160a01b03841660009081526003602052604090205491925061105a91905082612236565b6001600160a01b038316600090815260036020526040902055600a546110809082612236565b600a55600b54611090908461218d565b600b55505050565b6110a0611cb2565b6000546001600160a01b039081169116146110f0576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b600060095483111561116d576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161118c57600061117d846121e7565b50939550610bd4945050505050565b6000611197846121e7565b50929550610bd4945050505050565b601a54600160a81b900460ff1681565b60156020526000908152604090205460ff1681565b6111d3611cb2565b6000546001600160a01b03908116911614611223576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff1615611291576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054156112eb576001600160a01b0381166000908152600360205260409020546112d190610d3e565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b031660009081526006602052604090205460ff1690565b60115481565b6001600160a01b03811660009081526007602052604081205460ff16156113b557506001600160a01b038116600090815260046020526040902054610d9b565b6001600160a01b038216600090815260036020526040902054610bd490610d3e565b6113df611cb2565b6000546001600160a01b0390811691161461142f576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b600080546040516001600160a01b0390911690600080516020612f26833981519152908390a3600080546001600160a01b0319169055565b4790565b600047828261147982611375565b90506000805b6008548110156114c7576114bd826114b76008848154811061149d57fe5b6000918252602090912001546001600160a01b0316611375565b9061218d565b915060010161147f565b50601a5460009061150d906114fd9084906114f7906114ee906001600160a01b0316611375565b60095490612236565b90612236565b6115078588612278565b90612144565b979650505050505050565b60165481565b611526611cb2565b6000546001600160a01b03908116911614611576576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b601381815481106115a557fe5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b031660009081526007602052604090205460ff1690565b6000546001600160a01b031690565b6115f4611cb2565b6000546001600160a01b03908116911614611644576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b603281111561169a576040805162461bcd60e51b815260206004820152601f60248201527f4d6178696d756d20666565206c696d69742069732035302070657263656e7400604482015290519081900360640190fd5b601155565b600d8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610bb25780601f10610b8757610100808354040283529160200191610bb2565b6000610bd061170d611cb2565b84610c7685604051806060016040528060258152602001612fe36025913960056000611737611cb2565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061208a565b601c5460ff1681565b6001546001600160a01b031633146117ba5760405162461bcd60e51b8152600401808060200182810382526023815260200180612fc06023913960400191505060405180910390fd5b6002544211611810576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b039384169390911691600080516020612f2683398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610bd061186c611cb2565b8484611d3e565b60025490565b601a546001600160a01b031681565b611890611cb2565b6000546001600160a01b039081169116146118e0576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6019546001600160a01b031681565b611919611cb2565b6000546001600160a01b03908116911614611969576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b601a8054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b6119c4611cb2565b6000546001600160a01b03908116911614611a14576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b6032811115611a6a576040805162461bcd60e51b815260206004820152601f60248201527f4d6178696d756d20746178206c696d69742069732031302070657263656e7400604482015290519081900360640190fd5b611a8460646115078360095461227890919063ffffffff16565b60165550565b611a92611cb2565b6000546001600160a01b03908116911614611ae2576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b038416179091551681554282016002556040518190600080516020612f26833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b611b5b611cb2565b6000546001600160a01b03908116911614611bab576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600660205260409020805460ff19169055565b611bd4611cb2565b6000546001600160a01b03908116911614611c24576040805162461bcd60e51b81526020600482018190526024820152600080516020612f06833981519152604482015290519081900360640190fd5b6001600160a01b038116611c695760405162461bcd60e51b8152600401808060200182810382526026815260200180612e976026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020612f2683398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b038316611cc957600080fd5b6001600160a01b038216611cdc57600080fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611d835760405162461bcd60e51b8152600401808060200182810382526025815260200180612f6f6025913960400191505060405180910390fd5b6001600160a01b038216611dc85760405162461bcd60e51b8152600401808060200182810382526023815260200180612e1e6023913960400191505060405180910390fd5b60008111611e075760405162461bcd60e51b8152600401808060200182810382526029815260200180612f466029913960400191505060405180910390fd5b601c5460ff1615156001148015611e375750611e216115dd565b6001600160a01b0316836001600160a01b031614155b8015611e5c5750611e466115dd565b6001600160a01b0316826001600160a01b031614155b15611ee057601a546001600160a01b03838116911614611e9857681b1ae4d6e2ef500000611e8d826114b785611375565b1115611e9857600080fd5b68056bc75e2d63100000811115611ee05760405162461bcd60e51b815260040180806020018281038252602c815260200180612e41602c913960400191505060405180910390fd5b611ee86115dd565b6001600160a01b0316836001600160a01b031614158015611f225750611f0c6115dd565b6001600160a01b0316826001600160a01b031614155b15611f3657601654811115611f3657600080fd5b6001600160a01b03821660009081526015602052604090205460ff16611fc2576013805460018082019092557f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b0319166001600160a01b03851690811790915560148054830190556000908152601560205260409020805460ff191690911790555b6000611fcd30611375565b601b5490915081108015908190611fee5750601a54600160a01b900460ff16155b80156120085750601a546001600160a01b03868116911614155b801561201d5750601a54600160a81b900460ff165b1561202b5761202b826122d1565b6001600160a01b03851660009081526006602052604090205460019060ff168061206d57506001600160a01b03851660009081526006602052604090205460ff165b15612076575060005b61208286868684612439565b505050505050565b600081848411156121195760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120de5781810151838201526020016120c6565b50505050905090810190601f16801561210b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600080600061212e6125ad565b909250905061213d8282612144565b9250505090565b600061218683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612710565b9392505050565b600082820183811015612186576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006121fe8a612775565b925092509250600080600061221c8d8686612217612121565b6127b1565b919f909e50909c50959a5093985091965092945050505050565b600061218683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061208a565b60008261228757506000610bd4565b8282028284828161229457fe5b04146121865760405162461bcd60e51b8152600401808060200182810382526021815260200180612ebd6021913960400191505060405180910390fd5b601a805460ff60a01b1916600160a01b17905560006122f1826003612144565b90506000612300836003612144565b9050600061230f846003612144565b9050600061231e846002612144565b9050600061232c8583612236565b905047612345612340856114b7868961218d565b612801565b60006123514783612236565b90506000612360826003612144565b6017546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561239b573d6000803e3d6000fd5b506018546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156123d6573d6000803e3d6000fd5b506123e184826129a7565b604080518681526020810183905280820186905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15050601a805460ff60a01b1916905550505050505050565b8061244657612446612a74565b6001600160a01b03841660009081526007602052604090205460ff16801561248757506001600160a01b03831660009081526007602052604090205460ff16155b1561249c57612497848484612aa6565b61259a565b6001600160a01b03841660009081526007602052604090205460ff161580156124dd57506001600160a01b03831660009081526007602052604090205460ff165b156124ed57612497848484612bca565b6001600160a01b03841660009081526007602052604090205460ff1615801561252f57506001600160a01b03831660009081526007602052604090205460ff16155b1561253f57612497848484612c73565b6001600160a01b03841660009081526007602052604090205460ff16801561257f57506001600160a01b03831660009081526007602052604090205460ff165b1561258f57612497848484612cb7565b61259a848484612c73565b806125a7576125a7612d2a565b50505050565b600a546009546000918291825b6008548110156126de578260036000600884815481106125d657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061263b575081600460006008848154811061261457fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561265257600a546009549450945050505061270c565b612692600360006008848154811061266657fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612236565b92506126d460046000600884815481106126a857fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612236565b91506001016125ba565b50600954600a546126ee91612144565b82101561270657600a5460095493509350505061270c565b90925090505b9091565b6000818361275f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156120de5781810151838201526020016120c6565b50600083858161276b57fe5b0495945050505050565b60008060008061278485612d38565b9050600061279186612d54565b905060006127a3826114f78986612236565b979296509094509092505050565b60008080806127c08886612278565b905060006127ce8887612278565b905060006127dc8888612278565b905060006127ee826114f78686612236565b939b939a50919850919650505050505050565b6040805160028082526060808301845292602083019080368337019050509050308160008151811061282f57fe5b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561288357600080fd5b505afa158015612897573d6000803e3d6000fd5b505050506040513d60208110156128ad57600080fd5b50518151829060019081106128be57fe5b6001600160a01b0392831660209182029290920101526019546128e49130911684611cb6565b60195460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b8381101561296a578181015183820152602001612952565b505050509050019650505050505050600060405180830381600087803b15801561299357600080fd5b505af1158015612082573d6000803e3d6000fd5b6019546129bf9030906001600160a01b031684611cb6565b6019546001600160a01b031663f305d7198230856000806129de6115dd565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b158015612a4957600080fd5b505af1158015612a5d573d6000803e3d6000fd5b50505050506040513d60608110156125a757600080fd5b600f54158015612a845750601154155b15612a8e57612aa4565b600f805460105560118054601255600091829055555b565b600080600080600080612ab8876121e7565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612aea9088612236565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612b199087612236565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054612b48908661218d565b6001600160a01b038916600090815260036020526040902055612b6a81612d70565b612b748483612df9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612bdc876121e7565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612c0e9087612236565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612c44908461218d565b6001600160a01b038916600090815260046020908152604080832093909355600390522054612b48908661218d565b600080600080600080612c85876121e7565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612b199087612236565b600080600080600080612cc9876121e7565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612cfb9088612236565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612c0e9087612236565b601054600f55601254601155565b6000610bd46064611507600f548561227890919063ffffffff16565b6000610bd460646115076011548561227890919063ffffffff16565b6000612d7a612121565b90506000612d888383612278565b30600090815260036020526040902054909150612da5908261218d565b3060009081526003602090815260408083209390935560079052205460ff1615612df45730600090815260046020526040902054612de3908461218d565b306000908152600460205260409020555b505050565b600a54612e069083612236565b600a55600b54612e16908261218d565b600b55505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206d757374206265206c657373207468616e2031303020746f6b656e73416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a2b0db2b398ac10cfc7b8e69543523635cb7221a34af02e709e1f376fe5f59b464736f6c634300060c00330000000000000000000000007bf7f6e48b085087aa3c21e3ce8927110258bf5a0000000000000000000000002eeedb818a1aeabbbe0510fe45d41303e4daf8930000000000000000000000009800d7454e7b0916a1ff51f5e9c510bc000f8deb', + ['0x061c82d0', '0x06fdde03', '0x095ea7b3', '0x13114a9d', '0x15ab88c9', '0x178ef307', '0x18160ddd', + '0x20b9588c', '0x23b872dd', '0x2cde6081', '0x2d838119', '0x313ce567', '0x3685d419', '0x39509351', + '0x3b124fe7', '0x3bd5d173', '0x437823ec', '0x4549b039', '0x474f4a4f', '0x4a74bb02', '0x4dfefc4b', + '0x52390c02', '0x5342acb4', '0x6b455243', '0x6bc87c3a', '0x70a08231', '0x715018a6', '0x76e2b7ab', + '0x77e5006f', '0x791ac947', '0x7d1db4a5', '0x8187f516', '0x862a4bf2', '0x88f82020', '0x8da5cb5b', + '0x8ee88c53', '0x95d89b41', '0xa457c2d7', '0xa4d66daf', '0xa69df4b5', '0xa9059cbb', '0xad5c4648', + '0xb6c52324', '0xb8c9d25c', '0xc0d78655', '0xc21ebd07', '0xc49b9a80', '0xd543dbeb', '0xdd467064', + '0xdd62ed3e', '0xea2f0b37', '0xf2fde38b', '0xf305d719', '0xffffffff'], True, False + ), + ( + '0x60806040523480156200001157600080fd5b5060405162002ad838038062002ad8833981810160405260208110156200003757600080fd5b505160408051808201825260088152670a6eac4cee4c2e0d60c31b60208281019190915282518084019093526002835261534760f01b9083015290620000846301ffc9a760e01b620000fb565b815162000099906008906020850190620001a2565b508051620000af906009906020840190620001a2565b50620000c26380ac58cd60e01b620000fb565b620000d4635b5e139f60e01b620000fb565b620000e663780e9d6360e01b620000fb565b50620000f490508162000180565b506200024e565b6001600160e01b031980821614156200015b576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152600260205260409020805460ff19166001179055565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620001da576000855562000225565b82601f10620001f557805160ff191683800117855562000225565b8280016001018555821562000225579182015b828111156200022557825182559160200191906001019062000208565b506200023392915062000237565b5090565b5b8082111562000233576000815560010162000238565b61287a806200025e6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806355f804b311610104578063a22cb465116100a2578063e3056a3411610071578063e3056a341461067e578063e985e9c514610686578063f2fde38b146106b4578063fca3b5aa146106da576101cf565b8063a22cb46514610547578063b6dc7ea314610575578063b88d4fde1461059b578063c87b56dd14610661576101cf565b80636c0360eb116100de5780636c0360eb1461050957806370a082311461051157806379ba50971461053757806395d89b411461053f576101cf565b806355f804b31461043e5780635a9d7a68146104e45780636352211e146104ec576101cf565b806323b872dd1161017157806340c10f191161014b57806340c10f19146103a257806342842e0e146103ce57806342966c68146104045780634f6ccce714610421576101cf565b806323b872dd1461031d5780632f745c5914610353578063398b28d21461037f576101cf565b8063081812fc116101ad578063081812fc146102b0578063095ea7b3146102cd5780630c340a24146102fb57806318160ddd14610303576101cf565b806301ffc9a7146101d457806306fdde031461020f578063075461721461028c575b600080fd5b6101fb600480360360208110156101ea57600080fd5b50356001600160e01b031916610700565b604080519115158252519081900360200190f35b610217610723565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610251578181015183820152602001610239565b50505050905090810190601f16801561027e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102946107b9565b604080516001600160a01b039092168252519081900360200190f35b610294600480360360208110156102c657600080fd5b50356107c8565b6102f9600480360360408110156102e357600080fd5b506001600160a01b03813516906020013561082a565b005b610294610905565b61030b610914565b60408051918252519081900360200190f35b6102f96004803603606081101561033357600080fd5b506001600160a01b03813581169160208101359091169060400135610925565b61030b6004803603604081101561036957600080fd5b506001600160a01b03813516906020013561097c565b6102f96004803603604081101561039557600080fd5b50803590602001356109a7565b6102f9600480360360408110156103b857600080fd5b506001600160a01b038135169060200135610a88565b6102f9600480360360608110156103e457600080fd5b506001600160a01b03813581169160208101359091169060400135610ae8565b6102f96004803603602081101561041a57600080fd5b5035610b03565b61030b6004803603602081101561043757600080fd5b5035610b61565b6102f96004803603602081101561045457600080fd5b81019060208101813564010000000081111561046f57600080fd5b82018360208201111561048157600080fd5b803590602001918460018302840111640100000000831117156104a357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b77945050505050565b610294610bd8565b6102946004803603602081101561050257600080fd5b5035610be7565b610217610c0f565b61030b6004803603602081101561052757600080fd5b50356001600160a01b0316610c70565b6102f9610cd8565b610217610de7565b6102f96004803603604081101561055d57600080fd5b506001600160a01b0381351690602001351515610e48565b6102f96004803603602081101561058b57600080fd5b50356001600160a01b0316610f4d565b6102f9600480360360808110156105b157600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156105ec57600080fd5b8201836020820111156105fe57600080fd5b8035906020019184600183028401116401000000008311171561062057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610fae945050505050565b6102176004803603602081101561067757600080fd5b503561100c565b61029461141b565b6101fb6004803603604081101561069c57600080fd5b506001600160a01b038135811691602001351661142a565b6102f9600480360360208110156106ca57600080fd5b50356001600160a01b0316611458565b6102f9600480360360208110156106f057600080fd5b50356001600160a01b0316611556565b6001600160e01b0319811660009081526002602052604090205460ff165b919050565b60088054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107af5780601f10610784576101008083540402835291602001916107af565b820191906000526020600020905b81548152906001019060200180831161079257829003601f168201915b5050505050905090565b600c546001600160a01b031681565b60006107d3826115b7565b61080e5760405162461bcd60e51b815260040180806020018281038252602c815260200180612743602c913960400191505060405180910390fd5b506000908152600660205260409020546001600160a01b031690565b600061083582610be7565b9050806001600160a01b0316836001600160a01b031614156108885760405162461bcd60e51b81526004018080602001828103825260218152602001806127f36021913960400191505060405180910390fd5b806001600160a01b031661089a6115c4565b6001600160a01b031614806108bb57506108bb816108b66115c4565b61142a565b6108f65760405162461bcd60e51b81526004018080602001828103825260388152602001806126966038913960400191505060405180910390fd5b61090083836115c8565b505050565b6000546001600160a01b031681565b60006109206004611636565b905090565b6109366109306115c4565b82611641565b6109715760405162461bcd60e51b81526004018080602001828103825260318152602001806128146031913960400191505060405180910390fd5b6109008383836116e5565b6001600160a01b038216600090815260036020526040812061099e9083611831565b90505b92915050565b600c546001600160a01b031633146109f9576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba10313290309036b4b73a32b960811b604482015290519081900360640190fd5b610a02826115b7565b610a3d5760405162461bcd60e51b815260040180806020018281038252602c81526020018061276f602c913960400191505060405180910390fd5b6000828152600e60209081526040918290208390558151838152915184927fd0348d353ba9da6b560ddf6465c3faf849b78869806be8900a829c064b8d4b2192908290030190a25050565b600c546001600160a01b03163314610ada576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba10313290309036b4b73a32b960811b604482015290519081900360640190fd5b610ae4828261183d565b5050565b61090083838360405180602001604052806000815250610fae565b600c546001600160a01b03163314610b55576040805162461bcd60e51b815260206004820152601060248201526f26bab9ba10313290309036b4b73a32b960811b604482015290519081900360640190fd5b610b5e8161196b565b50565b600080610b6f600484611a38565b509392505050565b6000546001600160a01b03163314610bcf576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b610b5e81611a54565b600d546001600160a01b031681565b60006109a1826040518060600160405280602981526020016126f86029913960049190611a67565b600b8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107af5780601f10610784576101008083540402835291602001916107af565b60006001600160a01b038216610cb75760405162461bcd60e51b815260040180806020018281038252602a8152602001806126ce602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206109a190611636565b6001546001600160a01b031615801590610cfc57506001546001600160a01b031633145b610d4d576040805162461bcd60e51b815260206004820152601f60248201527f43616c6c6572206d7573742062652070656e64696e6720676f7665726e6f7200604482015290519081900360640190fd5b60008054600180546001600160a01b038082166001600160a01b03198086168217808855931690935560405193811694929391169184917f0ac6deed30eef60090c749850e10f2fa469e3e25fec1d1bef2853003f6e6f18f9190a36001546040516001600160a01b03918216918316907f76563ad561b7036ae716b9b25cb521b21463240f104c97e12f25877f2235f33d90600090a35050565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107af5780601f10610784576101008083540402835291602001916107af565b610e506115c4565b6001600160a01b0316826001600160a01b03161415610eb6576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060076000610ec36115c4565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610f076115c4565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6000546001600160a01b03163314610fa5576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b610b5e81611a7e565b610fbf610fb96115c4565b83611641565b610ffa5760405162461bcd60e51b81526004018080602001828103825260318152602001806128146031913960400191505060405180910390fd5b61100684848484611b3d565b50505050565b6060611017826115b7565b6110525760405162461bcd60e51b815260040180806020018281038252602f8152602001806127c4602f913960400191505060405180910390fd5b600d546001600160a01b03161561124157600d54600c546001600160a01b039182169163bacc1fc5911684611085610c0f565b600e6000888152602001908152602001600020546040518563ffffffff1660e01b815260040180856001600160a01b0316815260200184815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156111005781810151838201526020016110e8565b50505050905090810190601f16801561112d5780820380516001836020036101000a031916815260200191505b509550505050505060006040518083038186803b15801561114d57600080fd5b505afa158015611161573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561118a57600080fd5b81019080805160405193929190846401000000008211156111aa57600080fd5b9083019060208201858111156111bf57600080fd5b82516401000000008111828201881017156111d957600080fd5b82525081516020918201929091019080838360005b838110156112065781810151838201526020016111ee565b50505050905090810190601f1680156112335780820380516001836020036101000a031916815260200191505b50604052505050905061071e565b6000828152600e6020526040812054908161126b5760405180602001604052806000815250611274565b61127482611b8f565b90506000611280610c0f565b90508051600014156112965750915061071e9050565b8151156113585780826040516020018083805190602001908083835b602083106112d15780518252601f1990920191602091820191016112b2565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106113195780518252601f1990920191602091820191016112fa565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052935050505061071e565b8061136286611b8f565b6040516020018083805190602001908083835b602083106113945780518252601f199092019160209182019101611375565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106113dc5780518252601f1990920191602091820191016113bd565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529350505050919050565b6001546001600160a01b031681565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6000546001600160a01b031633146114b0576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b6001600160a01b038116611502576040805162461bcd60e51b815260206004820152601460248201527311dbdd995c9b9bdc881b5d5cdd081899481cd95d60621b604482015290519081900360640190fd5b600180546001600160a01b038381166001600160a01b03198316179283905560405191811692169082907f76563ad561b7036ae716b9b25cb521b21463240f104c97e12f25877f2235f33d90600090a35050565b6000546001600160a01b031633146115ae576040805162461bcd60e51b815260206004820152601660248201527513db9b1e4811dbdd995c9b9bdc8818d85b8818d85b1b60521b604482015290519081900360640190fd5b610b5e81611bda565b60006109a1600483611c2e565b3390565b600081815260066020526040902080546001600160a01b0319166001600160a01b03841690811790915581906115fd82610be7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006109a182611c3a565b600061164c826115b7565b6116875760405162461bcd60e51b815260040180806020018281038252602c81526020018061266a602c913960400191505060405180910390fd5b600061169283610be7565b9050806001600160a01b0316846001600160a01b031614806116cd5750836001600160a01b03166116c2846107c8565b6001600160a01b0316145b806116dd57506116dd818561142a565b949350505050565b826001600160a01b03166116f882610be7565b6001600160a01b03161461173d5760405162461bcd60e51b815260040180806020018281038252602981526020018061279b6029913960400191505060405180910390fd5b6001600160a01b0382166117825760405162461bcd60e51b81526004018080602001828103825260248152602001806126466024913960400191505060405180910390fd5b61178d838383610900565b6117986000826115c8565b6001600160a01b03831660009081526003602052604090206117ba9082611c3e565b506001600160a01b03821660009081526003602052604090206117dd9082611c4a565b506117ea60048284611c56565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061099e8383611c6c565b6001600160a01b038216611898576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b6118a1816115b7565b156118f3576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b6118ff60008383610900565b6001600160a01b03821660009081526003602052604090206119219082611c4a565b5061192e60048284611c56565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600061197682610be7565b905061198481600084610900565b61198f6000836115c8565b6000828152600a602052604090205460026000196101006001841615020190911604156119cd576000828152600a602052604081206119cd9161250c565b6001600160a01b03811660009081526003602052604090206119ef9083611c3e565b506119fb600483611cd0565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000808080611a478686611cdc565b9097909650945050505050565b8051610ae490600b906020840190612550565b6000611a74848484611d57565b90505b9392505050565b6001600160a01b0381161580611a985750611a9881611e21565b611ae9576040805162461bcd60e51b815260206004820152601d60248201527f4e46543a20496e76616c696420746f6b656e2064657363726970746f72000000604482015290519081900360640190fd5b600d80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f3934ad1ed486f466741ebe514443b58c79f12249bc03796d34e619f5ae27c3da9181900360200190a150565b611b488484846116e5565b611b5484848484611e27565b6110065760405162461bcd60e51b81526004018080602001828103825260328152602001806126146032913960400191505060405180910390fd5b606081611bb757506040805180820190915260048152630307830360e41b602082015261071e565b8160005b8115611bd05760089190911c90600101611bbb565b6116dd8482611f8f565b600c80546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fad0f299ec81a386c98df0ac27dae11dd020ed1b56963c53a7292e7a3a314539a9181900360200190a150565b600061099e83836120ee565b5490565b600061099e8383612106565b600061099e83836121cc565b6000611a7484846001600160a01b038516612216565b81546000908210611cae5760405162461bcd60e51b81526004018080602001828103825260228152602001806125f26022913960400191505060405180910390fd5b826000018281548110611cbd57fe5b9060005260206000200154905092915050565b600061099e83836122ad565b815460009081908310611d205760405162461bcd60e51b81526004018080602001828103825260228152602001806127216022913960400191505060405180910390fd5b6000846000018481548110611d3157fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008281526001840160205260408120548281611df25760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611db7578181015183820152602001611d9f565b50505050905090810190601f168015611de45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110611e0557fe5b9060005260206000209060020201600101549150509392505050565b3b151590565b6000611e3b846001600160a01b0316611e21565b611e47575060016116dd565b6000611f55630a85bd0160e11b611e5c6115c4565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001612614603291396001600160a01b0388169190612381565b90506000818060200190516020811015611f6e57600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b606060008260020260020167ffffffffffffffff81118015611fb057600080fd5b506040519080825280601f01601f191660200182016040528015611fdb576020820181803683370190505b509050600360fc1b81600081518110611ff057fe5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061201957fe5b60200101906001600160f81b031916908160001a905350600160028402015b600181111561209a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061206357fe5b1a60f81b82828151811061207357fe5b60200101906001600160f81b031916908160001a90535060049490941c9360001901612038565b50831561099e576040805162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015290519081900360640190fd5b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156121c2578354600019808301919081019060009087908390811061213957fe5b906000526020600020015490508087600001848154811061215657fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061218657fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506109a1565b60009150506109a1565b60006121d883836120ee565b61220e575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109a1565b5060006109a1565b60008281526001840160205260408120548061227b575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611a77565b8285600001600183038154811061228e57fe5b9060005260206000209060020201600101819055506000915050611a77565b600081815260018301602052604081205480156121c257835460001980830191908101906000908790839081106122e057fe5b906000526020600020906002020190508087600001848154811061230057fe5b60009182526020808320845460029093020191825560019384015491840191909155835482528983019052604090209084019055865487908061233f57fe5b60008281526020808220600260001990940193840201828155600190810183905592909355888152898201909252604082209190915594506109a19350505050565b6060611a7484846000858561239585611e21565b6123e6576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106124245780518252601f199092019160209182019101612405565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612486576040519150601f19603f3d011682016040523d82523d6000602084013e61248b565b606091505b509150915061249b8282866124a6565b979650505050505050565b606083156124b5575081611a77565b8251156124c55782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315611db7578181015183820152602001611d9f565b50805460018160011615610100020316600290046000825580601f106125325750610b5e565b601f016020900490600052602060002090810190610b5e91906125dc565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261258657600085556125cc565b82601f1061259f57805160ff19168380011785556125cc565b828001600101855582156125cc579182015b828111156125cc5782518255916020019190600101906125b1565b506125d89291506125dc565b5090565b5b808211156125d857600081556001016125dd56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a26469706673582212205f09743995e753125b66061f4e6b6958c341d735ed2672c3c0aef167594c020564736f6c63430007060033000000000000000000000000e04fce05e9b8d21521bd1b0f069982c03bd31f76', + ['0x01ffc9a7', '0x03078303', '0x06fdde03', '0x07546172', '0x081812fc', '0x095ea7b3', '0x0a85bd01', + '0x0c340a24', '0x18160ddd', '0x23b872dd', '0x2f745c59', '0x398b28d2', '0x40c10f19', '0x42842e0e', + '0x42966c68', '0x4f6ccce7', '0x55f804b3', '0x5a9d7a68', '0x5b5e139f', '0x6352211e', '0x6c0360eb', + '0x70a08231', '0x780e9d63', '0x79ba5097', '0x80ac58cd', '0x95d89b41', '0xa22cb465', '0xb6dc7ea3', + '0xb88d4fde', '0xbacc1fc5', '0xc87b56dd', '0xe3056a34', '0xe985e9c5', '0xf2fde38b', '0xfca3b5aa', + '0xffffffff'], False, True + ) ]) def test_get_function_sighashes(bytecode, expected_sighashes, is_erc20, is_erc721): eth_contract_service = EthContractService() diff --git a/tests/resources/test_export_contracts_job/erc721_contract/expected_contracts.json b/tests/resources/test_export_contracts_job/erc721_contract/expected_contracts.json index e6e3ceea3..73612a7c5 100644 --- a/tests/resources/test_export_contracts_job/erc721_contract/expected_contracts.json +++ b/tests/resources/test_export_contracts_job/erc721_contract/expected_contracts.json @@ -1 +1 @@ -{"address": "0x06012c8cf97bead5deae237070f9587f8e7a266d", "bytecode": "0x6060604052600436106102a55763ffffffff60e060020a60003504166301ffc9a781146102dd5780630519ce79146103295780630560ff441461035857806305e45546146103f157806306fdde0314610416578063095ea7b3146104295780630a0f81681461044b5780630e583df01461045e57806314001f4c1461047157806318160ddd14610490578063183a7947146104a35780631940a936146104b657806319c2f201146104cc57806321717ebf146104df57806323b872dd146104f257806324e7a38a1461051a57806327d7874c146105395780632ba73c15146105585780633d7d3f5a146105775780633f4ba83a1461059657806346116e6f146105a957806346d22c70146105bf578063481af3d3146105d85780634ad8c938146105ee5780634b85fd551461060d5780634dfff04f146106235780634e0a33791461064557806356129134146106645780635663896e146106865780635c975abb1461069c5780635fd8c710146106af5780636352211e146106c2578063680eba27146106d85780636af04a57146106eb5780636fbde40d146106fe57806370a082311461071d578063715879881461073c5780637a7d49371461075b5780638456cb591461076e5780638462151c1461078157806388c2a0bf146107f357806391876e571461080957806395d89b411461081c5780639d6fac6f1461082f578063a45f4bfc1461085e578063a9059cbb14610874578063b047fb5014610896578063b0c35c05146108a9578063bc4006f5146108bc578063c3bea9af146108cf578063d3e6f49f146108e5578063defb9584146108fb578063e17b25af1461090e578063e6cbe3511461092d578063e98b7f4d14610940578063ed60ade6146109ae578063f1ca9410146109bc578063f2b47d52146109cf578063f7d8c883146109e2575b600b5433600160a060020a03908116911614806102d05750600c5433600160a060020a039081169116145b15156102db57600080fd5b005b34156102e857600080fd5b6103157fffffffff00000000000000000000000000000000000000000000000000000000600435166109f0565b604051901515815260200160405180910390f35b341561033457600080fd5b61033c610c77565b604051600160a060020a03909116815260200160405180910390f35b341561036357600080fd5b61037a600480359060248035908101910135610c86565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103b657808201518382015260200161039e565b50505050905090810190601f1680156103e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103fc57600080fd5b610404610d63565b60405190815260200160405180910390f35b341561042157600080fd5b61037a610d69565b341561043457600080fd5b6102db600160a060020a0360043516602435610da0565b341561045657600080fd5b61033c610e2a565b341561046957600080fd5b610404610e39565b341561047c57600080fd5b6102db600160a060020a0360043516610e44565b341561049b57600080fd5b610404610ef1565b34156104ae57600080fd5b610404610efc565b34156104c157600080fd5b610315600435610f02565b34156104d757600080fd5b610404610f47565b34156104ea57600080fd5b61033c610f4e565b34156104fd57600080fd5b6102db600160a060020a0360043581169060243516604435610f5d565b341561052557600080fd5b6102db600160a060020a0360043516610fe4565b341561054457600080fd5b6102db600160a060020a0360043516611091565b341561056357600080fd5b6102db600160a060020a03600435166110e3565b341561058257600080fd5b6102db600435602435604435606435611135565b34156105a157600080fd5b6102db611214565b34156105b457600080fd5b61033c6004356112ac565b34156105ca57600080fd5b6103156004356024356112c7565b34156105e357600080fd5b61033c600435611347565b34156105f957600080fd5b6102db600435602435604435606435611362565b341561061857600080fd5b6102db600435611428565b341561062e57600080fd5b6102db600160a060020a0360043516602435611448565b341561065057600080fd5b6102db600160a060020a03600435166114a2565b341561066f57600080fd5b6102db600435600160a060020a03602435166114f4565b341561069157600080fd5b6102db600435611560565b34156106a757600080fd5b6103156115c8565b34156106ba57600080fd5b6102db6115d8565b34156106cd57600080fd5b61033c600435611649565b34156106e357600080fd5b61040461166d565b34156106f657600080fd5b61033c611673565b341561070957600080fd5b6102db600160a060020a0360043516611682565b341561072857600080fd5b610404600160a060020a036004351661172f565b341561074757600080fd5b6102db600160a060020a036004351661174a565b341561076657600080fd5b6104046117d8565b341561077957600080fd5b6102db6117de565b341561078c57600080fd5b6107a0600160a060020a036004351661186a565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156107df5780820151838201526020016107c7565b505050509050019250505060405180910390f35b34156107fe57600080fd5b61040460043561194b565b341561081457600080fd5b6102db611c1b565b341561082757600080fd5b61037a611d0e565b341561083a57600080fd5b610845600435611d45565b60405163ffffffff909116815260200160405180910390f35b341561086957600080fd5b61033c600435611d72565b341561087f57600080fd5b6102db600160a060020a0360043516602435611d8d565b34156108a157600080fd5b61033c611e30565b34156108b457600080fd5b610404611e3f565b34156108c757600080fd5b61033c611e45565b34156108da57600080fd5b6102db600435611e54565b34156108f057600080fd5b610315600435611f47565b341561090657600080fd5b610404612010565b341561091957600080fd5b6102db600160a060020a0360043516612016565b341561093857600080fd5b61033c612053565b341561094b57600080fd5b610956600435612062565b6040519915158a5297151560208a01526040808a01979097526060890195909552608088019390935260a087019190915260c086015260e0850152610100840152610120830191909152610140909101905180910390f35b6102db6004356024356121c3565b34156109c757600080fd5b610404612316565b34156109da57600080fd5b61033c61231c565b6102db60043560243561232b565b60006040517f737570706f727473496e7465726661636528627974657334290000000000000081526019016040518091039020600160e060020a03191682600160e060020a0319161480610c6f57506040517f746f6b656e4d657461646174612875696e743235362c737472696e67290000008152601d0160405180910390206040517f746f6b656e734f664f776e657228616464726573732900000000000000000000815260160160405180910390206040517f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81527f7432353629000000000000000000000000000000000000000000000000000000602082015260250160405180910390206040517f7472616e7366657228616464726573732c75696e743235362900000000000000815260190160405180910390206040517f617070726f766528616464726573732c75696e74323536290000000000000000815260180160405180910390206040517f6f776e65724f662875696e743235362900000000000000000000000000000000815260100160405180910390206040517f62616c616e63654f662861646472657373290000000000000000000000000000815260120160405180910390206040517f746f74616c537570706c792829000000000000000000000000000000000000008152600d0160405180910390206040517f73796d626f6c2829000000000000000000000000000000000000000000000000815260080160405180910390206040517f6e616d652829000000000000000000000000000000000000000000000000000081526006016040518091039020181818181818181818600160e060020a03191682600160e060020a031916145b90505b919050565b600154600160a060020a031681565b610c8e612fa0565b610c96612fb2565b600d54600090600160a060020a03161515610cb057600080fd5b600d54600160a060020a031663cb4799f2878787600060405160a0015260405160e060020a63ffffffff861602815260048101848152604060248301908152604483018490529091606401848480828437820191505094505050505060a060405180830381600087803b1515610d2557600080fd5b6102c65a03f11515610d3657600080fd5b50505060405180608001805160209091016040529092509050610d59828261251d565b9695505050505050565b60115481565b60408051908101604052600d81527f43727970746f4b69747469657300000000000000000000000000000000000000602082015281565b60025460a060020a900460ff1615610db757600080fd5b610dc13382612572565b1515610dcc57600080fd5b610dd68183612592565b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925338383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050565b600054600160a060020a031681565b662386f26fc1000081565b6000805433600160a060020a03908116911614610e6057600080fd5b5080600160a060020a0381166376190f8f6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ea857600080fd5b6102c65a03f11515610eb957600080fd5b505050604051805190501515610ece57600080fd5b600c8054600160a060020a031916600160a060020a039290921691909117905550565b600654600019015b90565b600f5481565b6000808211610f1057600080fd5b6006805483908110610f1e57fe5b600091825260209091206002909102016001015460c060020a900463ffffffff16151592915050565b6201518081565b600c54600160a060020a031681565b60025460a060020a900460ff1615610f7457600080fd5b600160a060020a0382161515610f8957600080fd5b30600160a060020a031682600160a060020a031614151515610faa57600080fd5b610fb433826125c0565b1515610fbf57600080fd5b610fc98382612572565b1515610fd457600080fd5b610fdf8383836125e0565b505050565b6000805433600160a060020a0390811691161461100057600080fd5b5080600160a060020a0381166354c15b826000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561104857600080fd5b6102c65a03f1151561105957600080fd5b50505060405180519050151561106e57600080fd5b60108054600160a060020a031916600160a060020a039290921691909117905550565b60005433600160a060020a039081169116146110ac57600080fd5b600160a060020a03811615156110c157600080fd5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146110fe57600080fd5b600160a060020a038116151561111357600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60025460a060020a900460ff161561114c57600080fd5b6111563385612572565b151561116157600080fd5b61116a84610f02565b1561117457600080fd5b600b5461118b908590600160a060020a0316612592565b600b54600160a060020a03166327ebe40a858585853360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156111fa57600080fd5b6102c65a03f1151561120b57600080fd5b50505050505050565b60005433600160a060020a0390811691161461122f57600080fd5b60025460a060020a900460ff16151561124757600080fd5b600b54600160a060020a0316151561125e57600080fd5b600c54600160a060020a0316151561127557600080fd5b601054600160a060020a0316151561128c57600080fd5b601354600160a060020a0316156112a257600080fd5b6112aa6126c8565b565b600a60205260009081526040902054600160a060020a031681565b600080808085116112d757600080fd5b600084116112e457600080fd5b60068054869081106112f257fe5b9060005260206000209060020201915060068481548110151561131157fe5b9060005260206000209060020201905061132d8286838761271b565b801561133e575061133e848661289b565b95945050505050565b600960205260009081526040902054600160a060020a031681565b60025460a060020a900460ff161561137957600080fd5b6113833385612572565b151561138e57600080fd5b61139784611f47565b15156113a257600080fd5b600c546113b9908590600160a060020a0316612592565b600c54600160a060020a03166327ebe40a858585853360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156111fa57600080fd5b60025433600160a060020a0390811691161461144357600080fd5b600e55565b60025460a060020a900460ff161561145f57600080fd5b6114693382612572565b151561147457600080fd5b6000908152600a602052604090208054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146114bd57600080fd5b600160a060020a03811615156114d257600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b60025460009033600160a060020a0390811691161461151257600080fd5b5080600160a060020a03811615156115325750600254600160a060020a03165b601154611388901061154357600080fd5b60118054600101905561155a6000808086856128f0565b50505050565b60025433600160a060020a039081169116148061158b575060005433600160a060020a039081169116145b806115a4575060015433600160a060020a039081169116145b15156115af57600080fd5b60035463ffffffff1681106115c357600080fd5b600555565b60025460a060020a900460ff1681565b600154600090819033600160a060020a039081169116146115f857600080fd5b30600160a060020a0316319150600e54600f546001010290508082111561164557600154600160a060020a031681830380156108fc0290604051600060405180830381858888f150505050505b5050565b600081815260076020526040902054600160a060020a0316801515610c7257600080fd5b61afc881565b601354600160a060020a031681565b6000805433600160a060020a0390811691161461169e57600080fd5b5080600160a060020a0381166385b861886000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116e657600080fd5b6102c65a03f115156116f757600080fd5b50505060405180519050151561170c57600080fd5b600b8054600160a060020a031916600160a060020a039290921691909117905550565b600160a060020a031660009081526008602052604090205490565b60005433600160a060020a0390811691161461176557600080fd5b60025460a060020a900460ff16151561177d57600080fd5b60138054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60055481565b60025433600160a060020a0390811691161480611809575060005433600160a060020a039081169116145b80611822575060015433600160a060020a039081169116145b151561182d57600080fd5b60025460a060020a900460ff161561184457600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055565b611872612fa0565b600061187c612fa0565b600080600061188a8761172f565b94508415156118ba5760006040518059106118a25750595b90808252806020026020018201604052509550611941565b846040518059106118c85750595b908082528060200260200182016040525093506118e3610ef1565b925060009150600190505b82811161193d57600081815260076020526040902054600160a060020a0388811691161415611935578084838151811061192457fe5b602090810290910101526001909101905b6001016118ee565b8395505b5050505050919050565b600080600080600080600080600260149054906101000a900460ff1615151561197357600080fd5b600680548a90811061198157fe5b60009182526020909120600290910201600181015490975067ffffffffffffffff1615156119ae57600080fd5b611a438761010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612b9c565b1515611a4e57600080fd5b60018701546006805460c060020a90920463ffffffff1697509087908110611a7257fe5b600091825260209091206001808a015460029093029091019081015490965061ffff60f060020a92839004811696509190041684901115611ac057600185015460f060020a900461ffff1693505b6010548754865460018a0154600160a060020a0390931692630d9f5aed92919068010000000000000000900467ffffffffffffffff166000190160006040516020015260405160e060020a63ffffffff86160281526004810193909352602483019190915267ffffffffffffffff166044820152606401602060405180830381600087803b1515611b5057600080fd5b6102c65a03f11515611b6157600080fd5b505050604051805160008b81526007602052604090205460018a810154929650600160a060020a039091169450611bb092508b9160c060020a900463ffffffff1690870161ffff1686866128f0565b6001880180547bffffffff00000000000000000000000000000000000000000000000019169055600f8054600019019055600e54909150600160a060020a0333169080156108fc0290604051600060405180830381858888f150939c9b505050505050505050505050565b60025433600160a060020a0390811691161480611c46575060005433600160a060020a039081169116145b80611c5f575060015433600160a060020a039081169116145b1515611c6a57600080fd5b600b54600160a060020a0316635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611ca957600080fd5b6102c65a03f11515611cba57600080fd5b5050600c54600160a060020a03169050635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611cfd57600080fd5b6102c65a03f11515610fdf57600080fd5b60408051908101604052600281527f434b000000000000000000000000000000000000000000000000000000000000602082015281565b600381600e8110611d5257fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b600760205260009081526040902054600160a060020a031681565b60025460a060020a900460ff1615611da457600080fd5b600160a060020a0382161515611db957600080fd5b30600160a060020a031682600160a060020a031614151515611dda57600080fd5b600b54600160a060020a0383811691161415611df557600080fd5b600c54600160a060020a0383811691161415611e1057600080fd5b611e1a3382612572565b1515611e2557600080fd5b6116453383836125e0565b600254600160a060020a031681565b600e5481565b600d54600160a060020a031681565b60025460009033600160a060020a03908116911614611e7257600080fd5b60125461afc89010611e8357600080fd5b611e92600080600085306128f0565b600b54909150611eac908290600160a060020a0316612592565b600b54600160a060020a03166327ebe40a82611ec6612bd4565b6000620151803060405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b1515611f2657600080fd5b6102c65a03f11515611f3757600080fd5b5050601280546001019055505050565b600080808311611f5657600080fd5b6006805484908110611f6457fe5b906000526020600020906002020190506120098161010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612c82565b9392505050565b61138881565b60005433600160a060020a0390811691161461203157600080fd5b600d8054600160a060020a031916600160a060020a0392909216919091179055565b600b54600160a060020a031681565b600080600080600080600080600080600060068c81548110151561208257fe5b906000526020600020906002020190508060010160189054906101000a900463ffffffff1663ffffffff16600014159a50438160010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115995080600101601c9054906101000a900461ffff1661ffff1698508060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1697508060010160189054906101000a900463ffffffff1663ffffffff1696508060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1695508060010160109054906101000a900463ffffffff1663ffffffff1694508060010160149054906101000a900463ffffffff1663ffffffff16935080600101601e9054906101000a900461ffff1661ffff16925080600001549150509193959799509193959799565b60025460009060a060020a900460ff16156121dd57600080fd5b6121e73383612572565b15156121f257600080fd5b6121fb82611f47565b151561220657600080fd5b6122108284612cb9565b151561221b57600080fd5b600c54600160a060020a031663c55d0f568460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561226c57600080fd5b6102c65a03f1151561227d57600080fd5b5050506040518051600e549092508201341015905061229b57600080fd5b600c54600e54600160a060020a039091169063454a2ab39034038560405160e060020a63ffffffff851602815260048101919091526024016000604051808303818588803b15156122eb57600080fd5b6125ee5a03f115156122fc57600080fd5b50505050610fdf8263ffffffff168463ffffffff16612d08565b60125481565b601054600160a060020a031681565b600254600090819060a060020a900460ff161561234757600080fd5b600e5434101561235657600080fd5b6123603385612572565b151561236b57600080fd5b612375838561289b565b151561238057600080fd5b600680548590811061238e57fe5b906000526020600020906002020191506124338261010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612c82565b151561243e57600080fd5b600680548490811061244c57fe5b906000526020600020906002020190506124f18161010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612c82565b15156124fc57600080fd5b6125088285838661271b565b151561251357600080fd5b61155a8484612d08565b612525612fa0565b61252d612fa0565b6000808460405180591061253e5750595b818152601f19601f8301168101602001604052905092505060208201905084612568828287612e72565b5090949350505050565b600090815260076020526040902054600160a060020a0391821691161490565b6000918252600960205260409091208054600160a060020a031916600160a060020a03909216919091179055565b600090815260096020526040902054600160a060020a0391821691161490565b600160a060020a03808316600081815260086020908152604080832080546001019055858352600790915290208054600160a060020a031916909117905583161561267357600160a060020a03831660009081526008602090815260408083208054600019019055838352600a82528083208054600160a060020a03199081169091556009909252909120805490911690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b60005433600160a060020a039081169116146126e357600080fd5b60025460a060020a900460ff1615156126fb57600080fd5b6002805474ff000000000000000000000000000000000000000019169055565b60008184141561272d57506000612893565b6001850154608060020a900463ffffffff1682148061275c5750600185015460a060020a900463ffffffff1682145b1561276957506000612893565b6001830154608060020a900463ffffffff168414806127985750600183015460a060020a900463ffffffff1684145b156127a557506000612893565b6001830154608060020a900463ffffffff1615806127d257506001850154608060020a900463ffffffff16155b156127df57506001612893565b60018581015490840154608060020a9182900463ffffffff9081169290910416148061282a575060018086015490840154608060020a900463ffffffff90811660a060020a90920416145b1561283757506000612893565b6001808601549084015460a060020a900463ffffffff908116608060020a90920416148061288257506001858101549084015460a060020a9182900463ffffffff9081169290910416145b1561288f57506000612893565b5060015b949350505050565b6000818152600760205260408082205484835290822054600160a060020a0391821691168082148061133e57506000858152600a6020526040902054600160a060020a03908116908316149250505092915050565b6000806128fb612fdb565b600063ffffffff8916891461290f57600080fd5b63ffffffff8816881461292157600080fd5b61ffff8716871461293157600080fd5b600287049250600d8361ffff16111561294957600d92505b610100604051908101604090815287825267ffffffffffffffff42166020830152600090820181905263ffffffff808c1660608401528a16608083015260a082015261ffff80851660c0830152881660e0820152600680549193506001918083016129b4838261301f565b6000928352602090922085916002020181518155602082015160018201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060c082015181600101601c6101000a81548161ffff021916908361ffff16021790555060e08201516001909101805461ffff9290921660f060020a027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555003905063ffffffff81168114612b0f57600080fd5b7f0a5311bd2a6608f08a180df2ee7c5946819a649b204b554bb8e39825b2c50ad58582846060015163ffffffff16856080015163ffffffff168651604051600160a060020a03909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390a1612b90600086836125e0565b98975050505050505050565b60008160a0015163ffffffff1615801590610c6f57504367ffffffffffffffff16826040015167ffffffffffffffff16111592915050565b600b5460009081908190600160a060020a031663eac9d94c82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612c2257600080fd5b6102c65a03f11515612c3357600080fd5b50505060405180519250506fffffffffffffffffffffffffffffffff82168214612c5c57600080fd5b50600281048101662386f26fc10000811015612c7c5750662386f26fc100005b92915050565b60008160a0015163ffffffff16158015610c6f57504367ffffffffffffffff16826040015167ffffffffffffffff16111592915050565b6000806000600685815481101515612ccd57fe5b90600052602060002090600202019150600684815481101515612cec57fe5b9060005260206000209060020201905061133e8286838761271b565b600080600683815481101515612d1a57fe5b90600052602060002090600202019150600684815481101515612d3957fe5b600091825260209091206002909102016001810180547bffffffff000000000000000000000000000000000000000000000000191660c060020a63ffffffff8716021790559050612d8982612eb7565b612d9281612eb7565b6000848152600a602090815260408083208054600160a060020a031990811690915586845281842080549091169055600f8054600190810190915587845260079092529182902054908301547f241ea03ca20251805084d27d4440371c34a0b85ff108f6bb5611248f73818b8092600160a060020a0390921691879187916801000000000000000090910467ffffffffffffffff1690518085600160a060020a0316600160a060020a031681526020018481526020018381526020018267ffffffffffffffff16815260200194505050505060405180910390a150505050565b60005b60208210612e985782518452602084019350602083019250602082039150612e75565b6001826020036101000a03905080198351168185511617909352505050565b600554600182015443919060039060e060020a900461ffff16600e8110612eda57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16811515612f0557fe5b6001840180546fffffffffffffffff0000000000000000191668010000000000000000939092049390930167ffffffffffffffff16919091021790819055600d60e060020a90910461ffff161015612f9d576001818101805461ffff60e060020a8083048216909401169092027fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555b50565b60206040519081016040526000815290565b60806040519081016040526004815b60008152600019919091019060200181612fc15790505090565b6101006040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e082015290565b815481835581811511610fdf57600083815260209020610fdf91610ef99160029182028101918502015b808211156130635760008082556001820155600201613049565b50905600a165627a7a72305820a6465fc1ce7ab1a92906ff7206b23d80a21bbd50b85b4bde6a91f8e6b2e3edde0029", "function_sighashes": ["0x01ffc9a7", "0x0519ce79", "0x0560ff44", "0x05e45546", "0x06fdde03", "0x095ea7b3", "0x0a0f8168", "0x0e583df0", "0x14001f4c", "0x18160ddd", "0x183a7947", "0x1940a936", "0x19c2f201", "0x21717ebf", "0x23b872dd", "0x24e7a38a", "0x27d7874c", "0x2ba73c15", "0x3d7d3f5a", "0x3f4ba83a", "0x46116e6f", "0x46d22c70", "0x481af3d3", "0x4ad8c938", "0x4b85fd55", "0x4dfff04f", "0x4e0a3379", "0x56129134", "0x5663896e", "0x5c975abb", "0x5fd8c710", "0x6352211e", "0x680eba27", "0x6af04a57", "0x6fbde40d", "0x70a08231", "0x71587988", "0x7a7d4937", "0x8456cb59", "0x8462151c", "0x88c2a0bf", "0x91876e57", "0x95d89b41", "0x9d6fac6f", "0xa45f4bfc", "0xa9059cbb", "0xb047fb50", "0xb0c35c05", "0xbc4006f5", "0xc3bea9af", "0xd3e6f49f", "0xdefb9584", "0xe17b25af", "0xe6cbe351", "0xe98b7f4d", "0xed60ade6", "0xf1ca9410", "0xf2b47d52", "0xf7d8c883", "0xffffffff"], "is_erc20": false, "is_erc721": true, "block_number": null} +{"address": "0x06012c8cf97bead5deae237070f9587f8e7a266d", "bytecode": "0x6060604052600436106102a55763ffffffff60e060020a60003504166301ffc9a781146102dd5780630519ce79146103295780630560ff441461035857806305e45546146103f157806306fdde0314610416578063095ea7b3146104295780630a0f81681461044b5780630e583df01461045e57806314001f4c1461047157806318160ddd14610490578063183a7947146104a35780631940a936146104b657806319c2f201146104cc57806321717ebf146104df57806323b872dd146104f257806324e7a38a1461051a57806327d7874c146105395780632ba73c15146105585780633d7d3f5a146105775780633f4ba83a1461059657806346116e6f146105a957806346d22c70146105bf578063481af3d3146105d85780634ad8c938146105ee5780634b85fd551461060d5780634dfff04f146106235780634e0a33791461064557806356129134146106645780635663896e146106865780635c975abb1461069c5780635fd8c710146106af5780636352211e146106c2578063680eba27146106d85780636af04a57146106eb5780636fbde40d146106fe57806370a082311461071d578063715879881461073c5780637a7d49371461075b5780638456cb591461076e5780638462151c1461078157806388c2a0bf146107f357806391876e571461080957806395d89b411461081c5780639d6fac6f1461082f578063a45f4bfc1461085e578063a9059cbb14610874578063b047fb5014610896578063b0c35c05146108a9578063bc4006f5146108bc578063c3bea9af146108cf578063d3e6f49f146108e5578063defb9584146108fb578063e17b25af1461090e578063e6cbe3511461092d578063e98b7f4d14610940578063ed60ade6146109ae578063f1ca9410146109bc578063f2b47d52146109cf578063f7d8c883146109e2575b600b5433600160a060020a03908116911614806102d05750600c5433600160a060020a039081169116145b15156102db57600080fd5b005b34156102e857600080fd5b6103157fffffffff00000000000000000000000000000000000000000000000000000000600435166109f0565b604051901515815260200160405180910390f35b341561033457600080fd5b61033c610c77565b604051600160a060020a03909116815260200160405180910390f35b341561036357600080fd5b61037a600480359060248035908101910135610c86565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103b657808201518382015260200161039e565b50505050905090810190601f1680156103e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103fc57600080fd5b610404610d63565b60405190815260200160405180910390f35b341561042157600080fd5b61037a610d69565b341561043457600080fd5b6102db600160a060020a0360043516602435610da0565b341561045657600080fd5b61033c610e2a565b341561046957600080fd5b610404610e39565b341561047c57600080fd5b6102db600160a060020a0360043516610e44565b341561049b57600080fd5b610404610ef1565b34156104ae57600080fd5b610404610efc565b34156104c157600080fd5b610315600435610f02565b34156104d757600080fd5b610404610f47565b34156104ea57600080fd5b61033c610f4e565b34156104fd57600080fd5b6102db600160a060020a0360043581169060243516604435610f5d565b341561052557600080fd5b6102db600160a060020a0360043516610fe4565b341561054457600080fd5b6102db600160a060020a0360043516611091565b341561056357600080fd5b6102db600160a060020a03600435166110e3565b341561058257600080fd5b6102db600435602435604435606435611135565b34156105a157600080fd5b6102db611214565b34156105b457600080fd5b61033c6004356112ac565b34156105ca57600080fd5b6103156004356024356112c7565b34156105e357600080fd5b61033c600435611347565b34156105f957600080fd5b6102db600435602435604435606435611362565b341561061857600080fd5b6102db600435611428565b341561062e57600080fd5b6102db600160a060020a0360043516602435611448565b341561065057600080fd5b6102db600160a060020a03600435166114a2565b341561066f57600080fd5b6102db600435600160a060020a03602435166114f4565b341561069157600080fd5b6102db600435611560565b34156106a757600080fd5b6103156115c8565b34156106ba57600080fd5b6102db6115d8565b34156106cd57600080fd5b61033c600435611649565b34156106e357600080fd5b61040461166d565b34156106f657600080fd5b61033c611673565b341561070957600080fd5b6102db600160a060020a0360043516611682565b341561072857600080fd5b610404600160a060020a036004351661172f565b341561074757600080fd5b6102db600160a060020a036004351661174a565b341561076657600080fd5b6104046117d8565b341561077957600080fd5b6102db6117de565b341561078c57600080fd5b6107a0600160a060020a036004351661186a565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156107df5780820151838201526020016107c7565b505050509050019250505060405180910390f35b34156107fe57600080fd5b61040460043561194b565b341561081457600080fd5b6102db611c1b565b341561082757600080fd5b61037a611d0e565b341561083a57600080fd5b610845600435611d45565b60405163ffffffff909116815260200160405180910390f35b341561086957600080fd5b61033c600435611d72565b341561087f57600080fd5b6102db600160a060020a0360043516602435611d8d565b34156108a157600080fd5b61033c611e30565b34156108b457600080fd5b610404611e3f565b34156108c757600080fd5b61033c611e45565b34156108da57600080fd5b6102db600435611e54565b34156108f057600080fd5b610315600435611f47565b341561090657600080fd5b610404612010565b341561091957600080fd5b6102db600160a060020a0360043516612016565b341561093857600080fd5b61033c612053565b341561094b57600080fd5b610956600435612062565b6040519915158a5297151560208a01526040808a01979097526060890195909552608088019390935260a087019190915260c086015260e0850152610100840152610120830191909152610140909101905180910390f35b6102db6004356024356121c3565b34156109c757600080fd5b610404612316565b34156109da57600080fd5b61033c61231c565b6102db60043560243561232b565b60006040517f737570706f727473496e7465726661636528627974657334290000000000000081526019016040518091039020600160e060020a03191682600160e060020a0319161480610c6f57506040517f746f6b656e4d657461646174612875696e743235362c737472696e67290000008152601d0160405180910390206040517f746f6b656e734f664f776e657228616464726573732900000000000000000000815260160160405180910390206040517f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81527f7432353629000000000000000000000000000000000000000000000000000000602082015260250160405180910390206040517f7472616e7366657228616464726573732c75696e743235362900000000000000815260190160405180910390206040517f617070726f766528616464726573732c75696e74323536290000000000000000815260180160405180910390206040517f6f776e65724f662875696e743235362900000000000000000000000000000000815260100160405180910390206040517f62616c616e63654f662861646472657373290000000000000000000000000000815260120160405180910390206040517f746f74616c537570706c792829000000000000000000000000000000000000008152600d0160405180910390206040517f73796d626f6c2829000000000000000000000000000000000000000000000000815260080160405180910390206040517f6e616d652829000000000000000000000000000000000000000000000000000081526006016040518091039020181818181818181818600160e060020a03191682600160e060020a031916145b90505b919050565b600154600160a060020a031681565b610c8e612fa0565b610c96612fb2565b600d54600090600160a060020a03161515610cb057600080fd5b600d54600160a060020a031663cb4799f2878787600060405160a0015260405160e060020a63ffffffff861602815260048101848152604060248301908152604483018490529091606401848480828437820191505094505050505060a060405180830381600087803b1515610d2557600080fd5b6102c65a03f11515610d3657600080fd5b50505060405180608001805160209091016040529092509050610d59828261251d565b9695505050505050565b60115481565b60408051908101604052600d81527f43727970746f4b69747469657300000000000000000000000000000000000000602082015281565b60025460a060020a900460ff1615610db757600080fd5b610dc13382612572565b1515610dcc57600080fd5b610dd68183612592565b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925338383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050565b600054600160a060020a031681565b662386f26fc1000081565b6000805433600160a060020a03908116911614610e6057600080fd5b5080600160a060020a0381166376190f8f6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ea857600080fd5b6102c65a03f11515610eb957600080fd5b505050604051805190501515610ece57600080fd5b600c8054600160a060020a031916600160a060020a039290921691909117905550565b600654600019015b90565b600f5481565b6000808211610f1057600080fd5b6006805483908110610f1e57fe5b600091825260209091206002909102016001015460c060020a900463ffffffff16151592915050565b6201518081565b600c54600160a060020a031681565b60025460a060020a900460ff1615610f7457600080fd5b600160a060020a0382161515610f8957600080fd5b30600160a060020a031682600160a060020a031614151515610faa57600080fd5b610fb433826125c0565b1515610fbf57600080fd5b610fc98382612572565b1515610fd457600080fd5b610fdf8383836125e0565b505050565b6000805433600160a060020a0390811691161461100057600080fd5b5080600160a060020a0381166354c15b826000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561104857600080fd5b6102c65a03f1151561105957600080fd5b50505060405180519050151561106e57600080fd5b60108054600160a060020a031916600160a060020a039290921691909117905550565b60005433600160a060020a039081169116146110ac57600080fd5b600160a060020a03811615156110c157600080fd5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146110fe57600080fd5b600160a060020a038116151561111357600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60025460a060020a900460ff161561114c57600080fd5b6111563385612572565b151561116157600080fd5b61116a84610f02565b1561117457600080fd5b600b5461118b908590600160a060020a0316612592565b600b54600160a060020a03166327ebe40a858585853360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156111fa57600080fd5b6102c65a03f1151561120b57600080fd5b50505050505050565b60005433600160a060020a0390811691161461122f57600080fd5b60025460a060020a900460ff16151561124757600080fd5b600b54600160a060020a0316151561125e57600080fd5b600c54600160a060020a0316151561127557600080fd5b601054600160a060020a0316151561128c57600080fd5b601354600160a060020a0316156112a257600080fd5b6112aa6126c8565b565b600a60205260009081526040902054600160a060020a031681565b600080808085116112d757600080fd5b600084116112e457600080fd5b60068054869081106112f257fe5b9060005260206000209060020201915060068481548110151561131157fe5b9060005260206000209060020201905061132d8286838761271b565b801561133e575061133e848661289b565b95945050505050565b600960205260009081526040902054600160a060020a031681565b60025460a060020a900460ff161561137957600080fd5b6113833385612572565b151561138e57600080fd5b61139784611f47565b15156113a257600080fd5b600c546113b9908590600160a060020a0316612592565b600c54600160a060020a03166327ebe40a858585853360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156111fa57600080fd5b60025433600160a060020a0390811691161461144357600080fd5b600e55565b60025460a060020a900460ff161561145f57600080fd5b6114693382612572565b151561147457600080fd5b6000908152600a602052604090208054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146114bd57600080fd5b600160a060020a03811615156114d257600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b60025460009033600160a060020a0390811691161461151257600080fd5b5080600160a060020a03811615156115325750600254600160a060020a03165b601154611388901061154357600080fd5b60118054600101905561155a6000808086856128f0565b50505050565b60025433600160a060020a039081169116148061158b575060005433600160a060020a039081169116145b806115a4575060015433600160a060020a039081169116145b15156115af57600080fd5b60035463ffffffff1681106115c357600080fd5b600555565b60025460a060020a900460ff1681565b600154600090819033600160a060020a039081169116146115f857600080fd5b30600160a060020a0316319150600e54600f546001010290508082111561164557600154600160a060020a031681830380156108fc0290604051600060405180830381858888f150505050505b5050565b600081815260076020526040902054600160a060020a0316801515610c7257600080fd5b61afc881565b601354600160a060020a031681565b6000805433600160a060020a0390811691161461169e57600080fd5b5080600160a060020a0381166385b861886000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116e657600080fd5b6102c65a03f115156116f757600080fd5b50505060405180519050151561170c57600080fd5b600b8054600160a060020a031916600160a060020a039290921691909117905550565b600160a060020a031660009081526008602052604090205490565b60005433600160a060020a0390811691161461176557600080fd5b60025460a060020a900460ff16151561177d57600080fd5b60138054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60055481565b60025433600160a060020a0390811691161480611809575060005433600160a060020a039081169116145b80611822575060015433600160a060020a039081169116145b151561182d57600080fd5b60025460a060020a900460ff161561184457600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055565b611872612fa0565b600061187c612fa0565b600080600061188a8761172f565b94508415156118ba5760006040518059106118a25750595b90808252806020026020018201604052509550611941565b846040518059106118c85750595b908082528060200260200182016040525093506118e3610ef1565b925060009150600190505b82811161193d57600081815260076020526040902054600160a060020a0388811691161415611935578084838151811061192457fe5b602090810290910101526001909101905b6001016118ee565b8395505b5050505050919050565b600080600080600080600080600260149054906101000a900460ff1615151561197357600080fd5b600680548a90811061198157fe5b60009182526020909120600290910201600181015490975067ffffffffffffffff1615156119ae57600080fd5b611a438761010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612b9c565b1515611a4e57600080fd5b60018701546006805460c060020a90920463ffffffff1697509087908110611a7257fe5b600091825260209091206001808a015460029093029091019081015490965061ffff60f060020a92839004811696509190041684901115611ac057600185015460f060020a900461ffff1693505b6010548754865460018a0154600160a060020a0390931692630d9f5aed92919068010000000000000000900467ffffffffffffffff166000190160006040516020015260405160e060020a63ffffffff86160281526004810193909352602483019190915267ffffffffffffffff166044820152606401602060405180830381600087803b1515611b5057600080fd5b6102c65a03f11515611b6157600080fd5b505050604051805160008b81526007602052604090205460018a810154929650600160a060020a039091169450611bb092508b9160c060020a900463ffffffff1690870161ffff1686866128f0565b6001880180547bffffffff00000000000000000000000000000000000000000000000019169055600f8054600019019055600e54909150600160a060020a0333169080156108fc0290604051600060405180830381858888f150939c9b505050505050505050505050565b60025433600160a060020a0390811691161480611c46575060005433600160a060020a039081169116145b80611c5f575060015433600160a060020a039081169116145b1515611c6a57600080fd5b600b54600160a060020a0316635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611ca957600080fd5b6102c65a03f11515611cba57600080fd5b5050600c54600160a060020a03169050635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611cfd57600080fd5b6102c65a03f11515610fdf57600080fd5b60408051908101604052600281527f434b000000000000000000000000000000000000000000000000000000000000602082015281565b600381600e8110611d5257fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b600760205260009081526040902054600160a060020a031681565b60025460a060020a900460ff1615611da457600080fd5b600160a060020a0382161515611db957600080fd5b30600160a060020a031682600160a060020a031614151515611dda57600080fd5b600b54600160a060020a0383811691161415611df557600080fd5b600c54600160a060020a0383811691161415611e1057600080fd5b611e1a3382612572565b1515611e2557600080fd5b6116453383836125e0565b600254600160a060020a031681565b600e5481565b600d54600160a060020a031681565b60025460009033600160a060020a03908116911614611e7257600080fd5b60125461afc89010611e8357600080fd5b611e92600080600085306128f0565b600b54909150611eac908290600160a060020a0316612592565b600b54600160a060020a03166327ebe40a82611ec6612bd4565b6000620151803060405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b1515611f2657600080fd5b6102c65a03f11515611f3757600080fd5b5050601280546001019055505050565b600080808311611f5657600080fd5b6006805484908110611f6457fe5b906000526020600020906002020190506120098161010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612c82565b9392505050565b61138881565b60005433600160a060020a0390811691161461203157600080fd5b600d8054600160a060020a031916600160a060020a0392909216919091179055565b600b54600160a060020a031681565b600080600080600080600080600080600060068c81548110151561208257fe5b906000526020600020906002020190508060010160189054906101000a900463ffffffff1663ffffffff16600014159a50438160010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115995080600101601c9054906101000a900461ffff1661ffff1698508060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1697508060010160189054906101000a900463ffffffff1663ffffffff1696508060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1695508060010160109054906101000a900463ffffffff1663ffffffff1694508060010160149054906101000a900463ffffffff1663ffffffff16935080600101601e9054906101000a900461ffff1661ffff16925080600001549150509193959799509193959799565b60025460009060a060020a900460ff16156121dd57600080fd5b6121e73383612572565b15156121f257600080fd5b6121fb82611f47565b151561220657600080fd5b6122108284612cb9565b151561221b57600080fd5b600c54600160a060020a031663c55d0f568460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561226c57600080fd5b6102c65a03f1151561227d57600080fd5b5050506040518051600e549092508201341015905061229b57600080fd5b600c54600e54600160a060020a039091169063454a2ab39034038560405160e060020a63ffffffff851602815260048101919091526024016000604051808303818588803b15156122eb57600080fd5b6125ee5a03f115156122fc57600080fd5b50505050610fdf8263ffffffff168463ffffffff16612d08565b60125481565b601054600160a060020a031681565b600254600090819060a060020a900460ff161561234757600080fd5b600e5434101561235657600080fd5b6123603385612572565b151561236b57600080fd5b612375838561289b565b151561238057600080fd5b600680548590811061238e57fe5b906000526020600020906002020191506124338261010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612c82565b151561243e57600080fd5b600680548490811061244c57fe5b906000526020600020906002020190506124f18161010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612c82565b15156124fc57600080fd5b6125088285838661271b565b151561251357600080fd5b61155a8484612d08565b612525612fa0565b61252d612fa0565b6000808460405180591061253e5750595b818152601f19601f8301168101602001604052905092505060208201905084612568828287612e72565b5090949350505050565b600090815260076020526040902054600160a060020a0391821691161490565b6000918252600960205260409091208054600160a060020a031916600160a060020a03909216919091179055565b600090815260096020526040902054600160a060020a0391821691161490565b600160a060020a03808316600081815260086020908152604080832080546001019055858352600790915290208054600160a060020a031916909117905583161561267357600160a060020a03831660009081526008602090815260408083208054600019019055838352600a82528083208054600160a060020a03199081169091556009909252909120805490911690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b60005433600160a060020a039081169116146126e357600080fd5b60025460a060020a900460ff1615156126fb57600080fd5b6002805474ff000000000000000000000000000000000000000019169055565b60008184141561272d57506000612893565b6001850154608060020a900463ffffffff1682148061275c5750600185015460a060020a900463ffffffff1682145b1561276957506000612893565b6001830154608060020a900463ffffffff168414806127985750600183015460a060020a900463ffffffff1684145b156127a557506000612893565b6001830154608060020a900463ffffffff1615806127d257506001850154608060020a900463ffffffff16155b156127df57506001612893565b60018581015490840154608060020a9182900463ffffffff9081169290910416148061282a575060018086015490840154608060020a900463ffffffff90811660a060020a90920416145b1561283757506000612893565b6001808601549084015460a060020a900463ffffffff908116608060020a90920416148061288257506001858101549084015460a060020a9182900463ffffffff9081169290910416145b1561288f57506000612893565b5060015b949350505050565b6000818152600760205260408082205484835290822054600160a060020a0391821691168082148061133e57506000858152600a6020526040902054600160a060020a03908116908316149250505092915050565b6000806128fb612fdb565b600063ffffffff8916891461290f57600080fd5b63ffffffff8816881461292157600080fd5b61ffff8716871461293157600080fd5b600287049250600d8361ffff16111561294957600d92505b610100604051908101604090815287825267ffffffffffffffff42166020830152600090820181905263ffffffff808c1660608401528a16608083015260a082015261ffff80851660c0830152881660e0820152600680549193506001918083016129b4838261301f565b6000928352602090922085916002020181518155602082015160018201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060c082015181600101601c6101000a81548161ffff021916908361ffff16021790555060e08201516001909101805461ffff9290921660f060020a027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555003905063ffffffff81168114612b0f57600080fd5b7f0a5311bd2a6608f08a180df2ee7c5946819a649b204b554bb8e39825b2c50ad58582846060015163ffffffff16856080015163ffffffff168651604051600160a060020a03909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390a1612b90600086836125e0565b98975050505050505050565b60008160a0015163ffffffff1615801590610c6f57504367ffffffffffffffff16826040015167ffffffffffffffff16111592915050565b600b5460009081908190600160a060020a031663eac9d94c82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612c2257600080fd5b6102c65a03f11515612c3357600080fd5b50505060405180519250506fffffffffffffffffffffffffffffffff82168214612c5c57600080fd5b50600281048101662386f26fc10000811015612c7c5750662386f26fc100005b92915050565b60008160a0015163ffffffff16158015610c6f57504367ffffffffffffffff16826040015167ffffffffffffffff16111592915050565b6000806000600685815481101515612ccd57fe5b90600052602060002090600202019150600684815481101515612cec57fe5b9060005260206000209060020201905061133e8286838761271b565b600080600683815481101515612d1a57fe5b90600052602060002090600202019150600684815481101515612d3957fe5b600091825260209091206002909102016001810180547bffffffff000000000000000000000000000000000000000000000000191660c060020a63ffffffff8716021790559050612d8982612eb7565b612d9281612eb7565b6000848152600a602090815260408083208054600160a060020a031990811690915586845281842080549091169055600f8054600190810190915587845260079092529182902054908301547f241ea03ca20251805084d27d4440371c34a0b85ff108f6bb5611248f73818b8092600160a060020a0390921691879187916801000000000000000090910467ffffffffffffffff1690518085600160a060020a0316600160a060020a031681526020018481526020018381526020018267ffffffffffffffff16815260200194505050505060405180910390a150505050565b60005b60208210612e985782518452602084019350602083019250602082039150612e75565b6001826020036101000a03905080198351168185511617909352505050565b600554600182015443919060039060e060020a900461ffff16600e8110612eda57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16811515612f0557fe5b6001840180546fffffffffffffffff0000000000000000191668010000000000000000939092049390930167ffffffffffffffff16919091021790819055600d60e060020a90910461ffff161015612f9d576001818101805461ffff60e060020a8083048216909401169092027fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555b50565b60206040519081016040526000815290565b60806040519081016040526004815b60008152600019919091019060200181612fc15790505090565b6101006040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e082015290565b815481835581811511610fdf57600083815260209020610fdf91610ef99160029182028101918502015b808211156130635760008082556001820155600201613049565b50905600a165627a7a72305820a6465fc1ce7ab1a92906ff7206b23d80a21bbd50b85b4bde6a91f8e6b2e3edde0029", "function_sighashes": ["0x01ffc9a7", "0x0519ce79", "0x0560ff44", "0x05e45546", "0x06fdde03", "0x095ea7b3", "0x0a0f8168", "0x0d9f5aed", "0x0e583df0", "0x14001f4c", "0x18160ddd", "0x183a7947", "0x1940a936", "0x19c2f201", "0x21717ebf", "0x23b872dd", "0x24e7a38a", "0x27d7874c", "0x27ebe40a", "0x2ba73c15", "0x3d7d3f5a", "0x3f4ba83a", "0x454a2ab3", "0x46116e6f", "0x46d22c70", "0x481af3d3", "0x4ad8c938", "0x4b85fd55", "0x4dfff04f", "0x4e0a3379", "0x54c15b82", "0x56129134", "0x5663896e", "0x5c975abb", "0x5fd8c710", "0x6352211e", "0x680eba27", "0x6af04a57", "0x6fbde40d", "0x70a08231", "0x71587988", "0x76190f8f", "0x7a7d4937", "0x8456cb59", "0x8462151c", "0x85b86188", "0x88c2a0bf", "0x91876e57", "0x95d89b41", "0x9d6fac6f", "0xa45f4bfc", "0xa9059cbb", "0xb047fb50", "0xb0c35c05", "0xbc4006f5", "0xc3bea9af", "0xc55d0f56", "0xcb4799f2", "0xd3e6f49f", "0xdefb9584", "0xe17b25af", "0xe6cbe351", "0xe98b7f4d", "0xeac9d94c", "0xed60ade6", "0xf1ca9410", "0xf2b47d52", "0xf7d8c883", "0xffffffff"], "is_erc20": false, "is_erc721": true, "block_number": null} diff --git a/tests/resources/test_stream/blocks_2112234_2112234/expected_contracts.json b/tests/resources/test_stream/blocks_2112234_2112234/expected_contracts.json index 5109a2934..73bc857e6 100644 --- a/tests/resources/test_stream/blocks_2112234_2112234/expected_contracts.json +++ b/tests/resources/test_stream/blocks_2112234_2112234/expected_contracts.json @@ -1 +1 @@ -{"type": "contract", "address": "0xdbdacfc9eb9d42559ac1efbdb40460c728139e6a", "bytecode": "0x6060604052361561008d5760e060020a600035046306fdde03811461008f578063095ea7b3146100a557806318160ddd1461012457806323b872dd1461012f578063313ce567146101dc578063475a9fa9146101f057806370a0823114610215578063721a37d21461024357806395d89b411461008f578063a9059cbb14610268578063dd62ed3e146102e7575b005b61031d6040805160208101909152600081525b90565b61038b60043560243560007319ee743d2e356d5f0e4d97cc09b96d06e933d0db63c6605267600160005085856040518460e060020a0281526004018084815260200183600160a060020a0316815260200182815260200193505050506020604051808303818660325a03f4156100025750506040515191506103179050565b6102316003546100a2565b61038b60043560243560443560008054604080517fa00bfa1100000000000000000000000000000000000000000000000000000000815260016004820152600160a060020a038781166024830152868116604483015260648201869052929092166084830152517319ee743d2e356d5f0e4d97cc09b96d06e933d0db9163a00bfa119160a482810192602092919082900301818660325a03f4156100025750506040515195945050505050565b604080516000815290519081900360200190f35b61038b6004356024356000805433600160a060020a0390811691161461039f57610002565b600160a060020a03600435166000908152600160205260409020545b60408051918252519081900360200190f35b61038b6004356024356000805433600160a060020a039081169116146103ce57610002565b61038b60043560243560007319ee743d2e356d5f0e4d97cc09b96d06e933d0db6388d5fecb600160005085856040518460e060020a0281526004018084815260200183600160a060020a0316815260200182815260200193505050506020604051808303818660325a03f4156100025750506040515191506103179050565b610231600435602435600160a060020a038281166000908152600260209081526040808320938516835292905220545b92915050565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f16801561037d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b604080519115158252519081900360200190f35b50600160a060020a03821660009081526001602081905260409091208054830190556003805483019055610317565b600160a060020a038316600090815260016020526040902054821161040a57506040600020805482900390556003805482900390556001610317565b50600061031756", "function_sighashes": ["0x06fdde03", "0x095ea7b3", "0x18160ddd", "0x23b872dd", "0x313ce567", "0x475a9fa9", "0x70a08231", "0x721a37d2", "0x95d89b41", "0xa9059cbb", "0xdd62ed3e"], "is_erc20": true, "is_erc721": false, "block_number": 2112234, "block_timestamp": 1471774428, "block_hash": "0xd279067d9852394d6b6c00b13c49696503c9618d3ed3b23c6b1b1321857ddd92", "item_id": "contract_2112234_0xdbdacfc9eb9d42559ac1efbdb40460c728139e6a", "item_timestamp": "2016-08-21T10:13:48Z"} +{"type": "contract", "address": "0xdbdacfc9eb9d42559ac1efbdb40460c728139e6a", "bytecode": "0x6060604052361561008d5760e060020a600035046306fdde03811461008f578063095ea7b3146100a557806318160ddd1461012457806323b872dd1461012f578063313ce567146101dc578063475a9fa9146101f057806370a0823114610215578063721a37d21461024357806395d89b411461008f578063a9059cbb14610268578063dd62ed3e146102e7575b005b61031d6040805160208101909152600081525b90565b61038b60043560243560007319ee743d2e356d5f0e4d97cc09b96d06e933d0db63c6605267600160005085856040518460e060020a0281526004018084815260200183600160a060020a0316815260200182815260200193505050506020604051808303818660325a03f4156100025750506040515191506103179050565b6102316003546100a2565b61038b60043560243560443560008054604080517fa00bfa1100000000000000000000000000000000000000000000000000000000815260016004820152600160a060020a038781166024830152868116604483015260648201869052929092166084830152517319ee743d2e356d5f0e4d97cc09b96d06e933d0db9163a00bfa119160a482810192602092919082900301818660325a03f4156100025750506040515195945050505050565b604080516000815290519081900360200190f35b61038b6004356024356000805433600160a060020a0390811691161461039f57610002565b600160a060020a03600435166000908152600160205260409020545b60408051918252519081900360200190f35b61038b6004356024356000805433600160a060020a039081169116146103ce57610002565b61038b60043560243560007319ee743d2e356d5f0e4d97cc09b96d06e933d0db6388d5fecb600160005085856040518460e060020a0281526004018084815260200183600160a060020a0316815260200182815260200193505050506020604051808303818660325a03f4156100025750506040515191506103179050565b610231600435602435600160a060020a038281166000908152600260209081526040808320938516835292905220545b92915050565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f16801561037d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b604080519115158252519081900360200190f35b50600160a060020a03821660009081526001602081905260409091208054830190556003805483019055610317565b600160a060020a038316600090815260016020526040902054821161040a57506040600020805482900390556003805482900390556001610317565b50600061031756", "function_sighashes": ["0x06fdde03", "0x095ea7b3", "0x18160ddd", "0x23b872dd", "0x313ce567", "0x475a9fa9", "0x70a08231", "0x721a37d2", "0x88d5fecb", "0x95d89b41", "0xa00bfa11", "0xa9059cbb", "0xc6605267", "0xdd62ed3e"], "is_erc20": true, "is_erc721": false, "block_number": 2112234, "block_timestamp": 1471774428, "block_hash": "0xd279067d9852394d6b6c00b13c49696503c9618d3ed3b23c6b1b1321857ddd92", "item_id": "contract_2112234_0xdbdacfc9eb9d42559ac1efbdb40460c728139e6a", "item_timestamp": "2016-08-21T10:13:48Z"} diff --git a/tests/resources/test_stream/blocks_508110_508110/expected_contracts.json b/tests/resources/test_stream/blocks_508110_508110/expected_contracts.json index 85e5eb4cf..0f87775ed 100644 --- a/tests/resources/test_stream/blocks_508110_508110/expected_contracts.json +++ b/tests/resources/test_stream/blocks_508110_508110/expected_contracts.json @@ -1 +1 @@ -{"type": "contract", "address": "0xaec3266ebd18361ab1378646e91f0c5c373038da", "bytecode": "0x606060405236156100825760e060020a6000350463013cf08b81146100845780630d61b519146100d9578063173a4b701461020b57806321933be81461031a57806339ce39831461035b578063400e3949146103645780634d853ee51461036d5780635e44daf31461037f5780638160f0b514610479578063fd46146a14610482575b005b61049460043560048054829081101561000257906000526020600020906008020160005060018101546004820154600583015483546002850154600160a060020a039190911695509293600301919060ff1686565b61054c600435600060006000600060006000600460005087815481101561000257508152600887027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018150600154600482015491965001421180156101435750600585015460ff165b156109ac5760009350600092505b60068501548310156109b65760068501805484908110156100025790600052602060002090600202016000506040805160025460018401547fbbd39ac0000000000000000000000000000000000000000000000000000000008352600160a060020a03908116600484015292519395509091169163bbd39ac09160248181019260209290919082900301816000876161da5a03f1156100025750506040515183548102909701969485019491505060019290920191610151565b604080516020606435600481810135601f810184900484028501840190955284845261054c94813594602480359560443595608494920191908190840183828082843750949650505050505050600060006000600260009054906101000a9004600160a060020a0316600160a060020a031663bbd39ac0336040518260e060020a0281526004018082600160a060020a031681526020019150506020604051808303816000876161da5a03f1156100025750505060405151111561068c576004805460018101808355909190828015829011610695578285526106959060089081027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90810191840201610739565b61008260043560243560443560038054600160a060020a03199081163317909155600280549190911684179055600082141561057b57612710600055610581565b61054c60015481565b61054c60055481565b61055e600354600160a060020a031681565b61054c600435602435600060006000600260009054906101000a9004600160a060020a0316600160a060020a031663bbd39ac0336040518260e060020a0281526004018082600160a060020a031681526020019150506020604051808303816000876161da5a03f115610002575050506040515111801561040d57506000198312158061040d575060018313155b156108f9576004805485908110156100025760009182526008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905033600160a060020a0316600090815260078201602052604090205490915060ff1660011415610900576108f9565b61054c60005481565b61055e600254600160a060020a031681565b60408051600160a060020a0388168152602081018790529081018590526080810183905260a0810182905260c0606082018181528554600260018216156101000260001901909116049183018290529060e0830190869080156105385780601f1061050d57610100808354040283529160200191610538565b820191906000526020600020905b81548152906001019060200180831161051b57829003601f168201915b505097505050505050505060405180910390f35b60408051918252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b60008290555b80600014156105965762278d0060015561059e565b603c81026001555b505050565b505042816004016000508190555060018160050160006101000a81548160ff021916908302179055507f095779230509156998187c606e5b8a5a734137945aa43da9bf39c5e7f529a86b82878787876040518086815260200185600160a060020a03168152602001848152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156106735780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1600182016005555b50949350505050565b505060048054929450918491508110156100025790600052602060002090600802016000508054600160a060020a03191687178155600181810187905560028281018790558551600384018054600082815260209081902096975091959481161561010002600019011692909204601f908101839004840193919288019083901061080a57805160ff19168380011785555b506105a39291506107f2565b50506001015b80821115610806578054600160a060020a0319168155600060018281018290556002838101839055600384018054848255909281161561010002600019011604601f8190106107d857505b5060006004830181905560058301805460ff191690556006830180548282559082526020909120610733916002028101905b8082111561080657600081556001018054600160a060020a03191681556107b6565b601f01602090049060005260206000209081019061078491905b8082111561080657600081556001016107f2565b5090565b82800160010185558215610727579182015b8281111561072757825182600050559160200191906001019061081c565b505060408051808201909152858152336020820152600684018054939550909290915084908110156100025790600052602060002090600202016000508151815560209182015160019182018054600160a060020a031916909117905533600160a060020a03166000818152600785018452604090819020805460ff1916909317909255815187815292830186905282820152517f0ee65d9041aa0fefb9e13f940fcdce8fb817356542f5024e16208214b26efc099181900360600190a15b5092915050565b6006810180546001810180835590919082801582901161083a5760020281600202836000526020600020918201910161083a91906107b6565b6000548411801561094a5750600086125b1561095c5760058501805460ff191690555b6005850154604080518981526020810189905280820187905260ff929092166060830152517fd220b7272a8b6d0d7d6bcdace67b936a8f175e6d5c1b3ee438b72256b32ab3af9181900360800190a15b5050505050919050565b600054841180156109c75750600086135b15610939576040805186546001880154600289015483529251600160a060020a03919091169291602081810192600092909190829003018185876185025a03f15050505060058501805460ff1916905561095c56", "function_sighashes": ["0x013cf08b", "0x0d61b519", "0x173a4b70", "0x21933be8", "0x39ce3983", "0x400e3949", "0x4d853ee5", "0x5e44daf3", "0x8160f0b5", "0xfd46146a"], "is_erc20": false, "is_erc721": false, "block_number": 508110, "block_timestamp": 1446973196, "block_hash": "0xc881ee96ddf8b5be74d7680ccda437466b14b9d942aa0161f139fe920690f665", "item_id": "contract_508110_0xaec3266ebd18361ab1378646e91f0c5c373038da", "item_timestamp": "2015-11-08T08:59:56Z"} +{"type": "contract", "address": "0xaec3266ebd18361ab1378646e91f0c5c373038da", "bytecode": "0x606060405236156100825760e060020a6000350463013cf08b81146100845780630d61b519146100d9578063173a4b701461020b57806321933be81461031a57806339ce39831461035b578063400e3949146103645780634d853ee51461036d5780635e44daf31461037f5780638160f0b514610479578063fd46146a14610482575b005b61049460043560048054829081101561000257906000526020600020906008020160005060018101546004820154600583015483546002850154600160a060020a039190911695509293600301919060ff1686565b61054c600435600060006000600060006000600460005087815481101561000257508152600887027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018150600154600482015491965001421180156101435750600585015460ff165b156109ac5760009350600092505b60068501548310156109b65760068501805484908110156100025790600052602060002090600202016000506040805160025460018401547fbbd39ac0000000000000000000000000000000000000000000000000000000008352600160a060020a03908116600484015292519395509091169163bbd39ac09160248181019260209290919082900301816000876161da5a03f1156100025750506040515183548102909701969485019491505060019290920191610151565b604080516020606435600481810135601f810184900484028501840190955284845261054c94813594602480359560443595608494920191908190840183828082843750949650505050505050600060006000600260009054906101000a9004600160a060020a0316600160a060020a031663bbd39ac0336040518260e060020a0281526004018082600160a060020a031681526020019150506020604051808303816000876161da5a03f1156100025750505060405151111561068c576004805460018101808355909190828015829011610695578285526106959060089081027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90810191840201610739565b61008260043560243560443560038054600160a060020a03199081163317909155600280549190911684179055600082141561057b57612710600055610581565b61054c60015481565b61054c60055481565b61055e600354600160a060020a031681565b61054c600435602435600060006000600260009054906101000a9004600160a060020a0316600160a060020a031663bbd39ac0336040518260e060020a0281526004018082600160a060020a031681526020019150506020604051808303816000876161da5a03f115610002575050506040515111801561040d57506000198312158061040d575060018313155b156108f9576004805485908110156100025760009182526008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905033600160a060020a0316600090815260078201602052604090205490915060ff1660011415610900576108f9565b61054c60005481565b61055e600254600160a060020a031681565b60408051600160a060020a0388168152602081018790529081018590526080810183905260a0810182905260c0606082018181528554600260018216156101000260001901909116049183018290529060e0830190869080156105385780601f1061050d57610100808354040283529160200191610538565b820191906000526020600020905b81548152906001019060200180831161051b57829003601f168201915b505097505050505050505060405180910390f35b60408051918252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b60008290555b80600014156105965762278d0060015561059e565b603c81026001555b505050565b505042816004016000508190555060018160050160006101000a81548160ff021916908302179055507f095779230509156998187c606e5b8a5a734137945aa43da9bf39c5e7f529a86b82878787876040518086815260200185600160a060020a03168152602001848152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156106735780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1600182016005555b50949350505050565b505060048054929450918491508110156100025790600052602060002090600802016000508054600160a060020a03191687178155600181810187905560028281018790558551600384018054600082815260209081902096975091959481161561010002600019011692909204601f908101839004840193919288019083901061080a57805160ff19168380011785555b506105a39291506107f2565b50506001015b80821115610806578054600160a060020a0319168155600060018281018290556002838101839055600384018054848255909281161561010002600019011604601f8190106107d857505b5060006004830181905560058301805460ff191690556006830180548282559082526020909120610733916002028101905b8082111561080657600081556001018054600160a060020a03191681556107b6565b601f01602090049060005260206000209081019061078491905b8082111561080657600081556001016107f2565b5090565b82800160010185558215610727579182015b8281111561072757825182600050559160200191906001019061081c565b505060408051808201909152858152336020820152600684018054939550909290915084908110156100025790600052602060002090600202016000508151815560209182015160019182018054600160a060020a031916909117905533600160a060020a03166000818152600785018452604090819020805460ff1916909317909255815187815292830186905282820152517f0ee65d9041aa0fefb9e13f940fcdce8fb817356542f5024e16208214b26efc099181900360600190a15b5092915050565b6006810180546001810180835590919082801582901161083a5760020281600202836000526020600020918201910161083a91906107b6565b6000548411801561094a5750600086125b1561095c5760058501805460ff191690555b6005850154604080518981526020810189905280820187905260ff929092166060830152517fd220b7272a8b6d0d7d6bcdace67b936a8f175e6d5c1b3ee438b72256b32ab3af9181900360800190a15b5050505050919050565b600054841180156109c75750600086135b15610939576040805186546001880154600289015483529251600160a060020a03919091169291602081810192600092909190829003018185876185025a03f15050505060058501805460ff1916905561095c56", "function_sighashes": ["0x013cf08b", "0x0d61b519", "0x173a4b70", "0x21933be8", "0x39ce3983", "0x400e3949", "0x4d853ee5", "0x5e44daf3", "0x8160f0b5", "0xbbd39ac0", "0xfd46146a"], "is_erc20": false, "is_erc721": false, "block_number": 508110, "block_timestamp": 1446973196, "block_hash": "0xc881ee96ddf8b5be74d7680ccda437466b14b9d942aa0161f139fe920690f665", "item_id": "contract_508110_0xaec3266ebd18361ab1378646e91f0c5c373038da", "item_timestamp": "2015-11-08T08:59:56Z"} From 594bec6b85d3d968f01c05f9c5af8e44642e4da0 Mon Sep 17 00:00:00 2001 From: Artur Mullakhmetov Date: Thu, 24 Nov 2022 00:16:49 +0300 Subject: [PATCH 2/2] check all erc721 function signatures --- ethereumetl/service/eth_contract_service.py | 54 +++++++++++++------ .../service/test_eth_contract_service.py | 13 +++++ 2 files changed, 50 insertions(+), 17 deletions(-) diff --git a/ethereumetl/service/eth_contract_service.py b/ethereumetl/service/eth_contract_service.py index 97de221ef..b0841707a 100644 --- a/ethereumetl/service/eth_contract_service.py +++ b/ethereumetl/service/eth_contract_service.py @@ -49,28 +49,48 @@ def get_function_sighashes(self, bytecode): # https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/token/ERC20/ERC20.sol def is_erc20_contract(self, function_sighashes): c = ContractWrapper(function_sighashes) - return c.implements('totalSupply()') and \ - c.implements('balanceOf(address)') and \ - c.implements('transfer(address,uint256)') and \ - c.implements('transferFrom(address,address,uint256)') and \ - c.implements('approve(address,uint256)') and \ - c.implements('allowance(address,address)') + return all([ + c.implements('totalSupply()'), + c.implements('balanceOf(address)'), + c.implements('transfer(address,uint256)'), + c.implements('transferFrom(address,address,uint256)'), + c.implements('approve(address,uint256)'), + c.implements('allowance(address,address)') + ]) # https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md # https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/token/ERC721/ERC721Basic.sol - # Doesn't check the below ERC721 methods to match CryptoKitties contract - # getApproved(uint256) - # setApprovalForAll(address,bool) - # isApprovedForAll(address,address) - # transferFrom(address,address,uint256) - # safeTransferFrom(address,address,uint256) - # safeTransferFrom(address,address,uint256,bytes) + # CryptoKitties contracts doesn't strictly implement erc721 interface + # so we have to check for it's sighashes explicitly def is_erc721_contract(self, function_sighashes): c = ContractWrapper(function_sighashes) - return c.implements('balanceOf(address)') and \ - c.implements('ownerOf(uint256)') and \ - c.implements_any_of('transfer(address,uint256)', 'transferFrom(address,address,uint256)') and \ - c.implements('approve(address,uint256)') + return all([ + c.implements('balanceOf(address)'), + c.implements('ownerOf(uint256)'), + c.implements_any_of('transfer(address,uint256)', 'transferFrom(address,address,uint256)'), + c.implements('approve(address,uint256)'), + c.implements('getApproved(uint256)'), + c.implements('setApprovalForAll(address,bool)'), + c.implements('isApprovedForAll(address,address)'), + c.implements('transferFrom(address,address,uint256)'), + c.implements('safeTransferFrom(address,address,uint256)'), + c.implements('safeTransferFrom(address,address,uint256,bytes)'), + ]) or self.is_crypto_kitties_contract(function_sighashes) + + # https://etherscan.io/address/0x06012c8cf97bead5deae237070f9587f8e7a266d#code#L52 + def is_crypto_kitties_contract(self, function_sighashes): + return function_sighashes == [ + '0x01ffc9a7', '0x0519ce79', '0x0560ff44', '0x05e45546', '0x06fdde03', '0x095ea7b3','0x0a0f8168', + '0x0d9f5aed', '0x0e583df0', '0x14001f4c', '0x18160ddd', '0x183a7947', '0x1940a936', '0x19c2f201', + '0x21717ebf', '0x23b872dd', '0x24e7a38a', '0x27d7874c', '0x27ebe40a', '0x2ba73c15', '0x3d7d3f5a', + '0x3f4ba83a', '0x454a2ab3', '0x46116e6f', '0x46d22c70', '0x481af3d3', '0x4ad8c938', '0x4b85fd55', + '0x4dfff04f', '0x4e0a3379', '0x54c15b82', '0x56129134', '0x5663896e', '0x5c975abb', '0x5fd8c710', + '0x6352211e', '0x680eba27', '0x6af04a57', '0x6fbde40d', '0x70a08231', '0x71587988', '0x76190f8f', + '0x7a7d4937', '0x8456cb59', '0x8462151c', '0x85b86188', '0x88c2a0bf', '0x91876e57', '0x95d89b41', + '0x9d6fac6f', '0xa45f4bfc', '0xa9059cbb', '0xb047fb50', '0xb0c35c05', '0xbc4006f5', '0xc3bea9af', + '0xc55d0f56', '0xcb4799f2', '0xd3e6f49f', '0xdefb9584', '0xe17b25af', '0xe6cbe351', '0xe98b7f4d', + '0xeac9d94c', '0xed60ade6', '0xf1ca9410', '0xf2b47d52', '0xf7d8c883', '0xffffffff' + ] def clean_bytecode(bytecode): diff --git a/tests/ethereumetl/service/test_eth_contract_service.py b/tests/ethereumetl/service/test_eth_contract_service.py index 1372cc860..aea4b1593 100644 --- a/tests/ethereumetl/service/test_eth_contract_service.py +++ b/tests/ethereumetl/service/test_eth_contract_service.py @@ -81,6 +81,19 @@ '0x70a08231', '0x780e9d63', '0x79ba5097', '0x80ac58cd', '0x95d89b41', '0xa22cb465', '0xb6dc7ea3', '0xb88d4fde', '0xbacc1fc5', '0xc87b56dd', '0xe3056a34', '0xe985e9c5', '0xf2fde38b', '0xfca3b5aa', '0xffffffff'], False, True + ), + ( # CryptoKitties contract + '0x606060409081526002805460a060020a60ff02191690556101c090519081016040908152603c82526078602083015261012c9082015261025860608201526107086080820152610e1060a0820152611c2060c082015261384060e082015261708061010082015261e100610120820152620151806101408201526202a3006101608201526205460061018082015262093a806101a0820152620000a790600390600e620004e4565b50600f60055566071afd498d0000600e553415620000c457600080fd5b6002805460008054600160a060020a033316600160a060020a03199182168117835560a060020a60ff02199093167401000000000000000000000000000000000000000017169091179091556200012f90808060001981640100000000620028f06200013682021704565b5062000649565b6000806200014362000587565b600063ffffffff891689146200015857600080fd5b63ffffffff881688146200016b57600080fd5b61ffff871687146200017c57600080fd5b600287049250600d8361ffff1611156200019557600d92505b61010060405190810160409081528782526001604060020a0342166020830152600090820181905263ffffffff808c1660608401528a16608083015260a082015261ffff80851660c0830152881660e082015260068054919350600191808301620002018382620005cb565b6000928352602090922085916002020181518155602082015160018201805467ffffffffffffffff19166001604060020a039290921691909117905560408201518160010160086101000a8154816001604060020a0302191690836001604060020a0316021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060c082015181600101601c6101000a81548161ffff021916908361ffff16021790555060e08201516001909101805461ffff929092167e0100000000000000000000000000000000000000000000000000000000000002600160f060020a039092169190911790555003905063ffffffff811681146200035e57600080fd5b7f0a5311bd2a6608f08a180df2ee7c5946819a649b204b554bb8e39825b2c50ad58582846060015163ffffffff16856080015163ffffffff168651604051600160a060020a03909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390a1620003ef60008683640100000000620025e0620003fb82021704565b98975050505050505050565b600160a060020a03808316600081815260086020908152604080832080546001019055858352600790915290208054600160a060020a03191690911790558316156200048f57600160a060020a03831660009081526008602090815260408083208054600019019055838352600a82528083208054600160a060020a03199081169091556009909252909120805490911690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b600283019183908215620005755791602002820160005b838211156200054157835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302620004fb565b8015620005735782816101000a81549063ffffffff021916905560040160208160030104928301926001030262000541565b505b5062000583929150620005ff565b5090565b6101006040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e082015290565b815481835581811511620005fa57600202816002028360005260206000209182019101620005fa919062000626565b505050565b6200062391905b808211156200058357805463ffffffff1916815560010162000606565b90565b6200062391905b808211156200058357600080825560018201556002016200062d565b61309380620006596000396000f3006060604052600436106102a55763ffffffff60e060020a60003504166301ffc9a781146102dd5780630519ce79146103295780630560ff441461035857806305e45546146103f157806306fdde0314610416578063095ea7b3146104295780630a0f81681461044b5780630e583df01461045e57806314001f4c1461047157806318160ddd14610490578063183a7947146104a35780631940a936146104b657806319c2f201146104cc57806321717ebf146104df57806323b872dd146104f257806324e7a38a1461051a57806327d7874c146105395780632ba73c15146105585780633d7d3f5a146105775780633f4ba83a1461059657806346116e6f146105a957806346d22c70146105bf578063481af3d3146105d85780634ad8c938146105ee5780634b85fd551461060d5780634dfff04f146106235780634e0a33791461064557806356129134146106645780635663896e146106865780635c975abb1461069c5780635fd8c710146106af5780636352211e146106c2578063680eba27146106d85780636af04a57146106eb5780636fbde40d146106fe57806370a082311461071d578063715879881461073c5780637a7d49371461075b5780638456cb591461076e5780638462151c1461078157806388c2a0bf146107f357806391876e571461080957806395d89b411461081c5780639d6fac6f1461082f578063a45f4bfc1461085e578063a9059cbb14610874578063b047fb5014610896578063b0c35c05146108a9578063bc4006f5146108bc578063c3bea9af146108cf578063d3e6f49f146108e5578063defb9584146108fb578063e17b25af1461090e578063e6cbe3511461092d578063e98b7f4d14610940578063ed60ade6146109ae578063f1ca9410146109bc578063f2b47d52146109cf578063f7d8c883146109e2575b600b5433600160a060020a03908116911614806102d05750600c5433600160a060020a039081169116145b15156102db57600080fd5b005b34156102e857600080fd5b6103157fffffffff00000000000000000000000000000000000000000000000000000000600435166109f0565b604051901515815260200160405180910390f35b341561033457600080fd5b61033c610c77565b604051600160a060020a03909116815260200160405180910390f35b341561036357600080fd5b61037a600480359060248035908101910135610c86565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103b657808201518382015260200161039e565b50505050905090810190601f1680156103e35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103fc57600080fd5b610404610d63565b60405190815260200160405180910390f35b341561042157600080fd5b61037a610d69565b341561043457600080fd5b6102db600160a060020a0360043516602435610da0565b341561045657600080fd5b61033c610e2a565b341561046957600080fd5b610404610e39565b341561047c57600080fd5b6102db600160a060020a0360043516610e44565b341561049b57600080fd5b610404610ef1565b34156104ae57600080fd5b610404610efc565b34156104c157600080fd5b610315600435610f02565b34156104d757600080fd5b610404610f47565b34156104ea57600080fd5b61033c610f4e565b34156104fd57600080fd5b6102db600160a060020a0360043581169060243516604435610f5d565b341561052557600080fd5b6102db600160a060020a0360043516610fe4565b341561054457600080fd5b6102db600160a060020a0360043516611091565b341561056357600080fd5b6102db600160a060020a03600435166110e3565b341561058257600080fd5b6102db600435602435604435606435611135565b34156105a157600080fd5b6102db611214565b34156105b457600080fd5b61033c6004356112ac565b34156105ca57600080fd5b6103156004356024356112c7565b34156105e357600080fd5b61033c600435611347565b34156105f957600080fd5b6102db600435602435604435606435611362565b341561061857600080fd5b6102db600435611428565b341561062e57600080fd5b6102db600160a060020a0360043516602435611448565b341561065057600080fd5b6102db600160a060020a03600435166114a2565b341561066f57600080fd5b6102db600435600160a060020a03602435166114f4565b341561069157600080fd5b6102db600435611560565b34156106a757600080fd5b6103156115c8565b34156106ba57600080fd5b6102db6115d8565b34156106cd57600080fd5b61033c600435611649565b34156106e357600080fd5b61040461166d565b34156106f657600080fd5b61033c611673565b341561070957600080fd5b6102db600160a060020a0360043516611682565b341561072857600080fd5b610404600160a060020a036004351661172f565b341561074757600080fd5b6102db600160a060020a036004351661174a565b341561076657600080fd5b6104046117d8565b341561077957600080fd5b6102db6117de565b341561078c57600080fd5b6107a0600160a060020a036004351661186a565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156107df5780820151838201526020016107c7565b505050509050019250505060405180910390f35b34156107fe57600080fd5b61040460043561194b565b341561081457600080fd5b6102db611c1b565b341561082757600080fd5b61037a611d0e565b341561083a57600080fd5b610845600435611d45565b60405163ffffffff909116815260200160405180910390f35b341561086957600080fd5b61033c600435611d72565b341561087f57600080fd5b6102db600160a060020a0360043516602435611d8d565b34156108a157600080fd5b61033c611e30565b34156108b457600080fd5b610404611e3f565b34156108c757600080fd5b61033c611e45565b34156108da57600080fd5b6102db600435611e54565b34156108f057600080fd5b610315600435611f47565b341561090657600080fd5b610404612010565b341561091957600080fd5b6102db600160a060020a0360043516612016565b341561093857600080fd5b61033c612053565b341561094b57600080fd5b610956600435612062565b6040519915158a5297151560208a01526040808a01979097526060890195909552608088019390935260a087019190915260c086015260e0850152610100840152610120830191909152610140909101905180910390f35b6102db6004356024356121c3565b34156109c757600080fd5b610404612316565b34156109da57600080fd5b61033c61231c565b6102db60043560243561232b565b60006040517f737570706f727473496e7465726661636528627974657334290000000000000081526019016040518091039020600160e060020a03191682600160e060020a0319161480610c6f57506040517f746f6b656e4d657461646174612875696e743235362c737472696e67290000008152601d0160405180910390206040517f746f6b656e734f664f776e657228616464726573732900000000000000000000815260160160405180910390206040517f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81527f7432353629000000000000000000000000000000000000000000000000000000602082015260250160405180910390206040517f7472616e7366657228616464726573732c75696e743235362900000000000000815260190160405180910390206040517f617070726f766528616464726573732c75696e74323536290000000000000000815260180160405180910390206040517f6f776e65724f662875696e743235362900000000000000000000000000000000815260100160405180910390206040517f62616c616e63654f662861646472657373290000000000000000000000000000815260120160405180910390206040517f746f74616c537570706c792829000000000000000000000000000000000000008152600d0160405180910390206040517f73796d626f6c2829000000000000000000000000000000000000000000000000815260080160405180910390206040517f6e616d652829000000000000000000000000000000000000000000000000000081526006016040518091039020181818181818181818600160e060020a03191682600160e060020a031916145b90505b919050565b600154600160a060020a031681565b610c8e612fa0565b610c96612fb2565b600d54600090600160a060020a03161515610cb057600080fd5b600d54600160a060020a031663cb4799f2878787600060405160a0015260405160e060020a63ffffffff861602815260048101848152604060248301908152604483018490529091606401848480828437820191505094505050505060a060405180830381600087803b1515610d2557600080fd5b6102c65a03f11515610d3657600080fd5b50505060405180608001805160209091016040529092509050610d59828261251d565b9695505050505050565b60115481565b60408051908101604052600d81527f43727970746f4b69747469657300000000000000000000000000000000000000602082015281565b60025460a060020a900460ff1615610db757600080fd5b610dc13382612572565b1515610dcc57600080fd5b610dd68183612592565b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925338383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15050565b600054600160a060020a031681565b662386f26fc1000081565b6000805433600160a060020a03908116911614610e6057600080fd5b5080600160a060020a0381166376190f8f6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ea857600080fd5b6102c65a03f11515610eb957600080fd5b505050604051805190501515610ece57600080fd5b600c8054600160a060020a031916600160a060020a039290921691909117905550565b600654600019015b90565b600f5481565b6000808211610f1057600080fd5b6006805483908110610f1e57fe5b600091825260209091206002909102016001015460c060020a900463ffffffff16151592915050565b6201518081565b600c54600160a060020a031681565b60025460a060020a900460ff1615610f7457600080fd5b600160a060020a0382161515610f8957600080fd5b30600160a060020a031682600160a060020a031614151515610faa57600080fd5b610fb433826125c0565b1515610fbf57600080fd5b610fc98382612572565b1515610fd457600080fd5b610fdf8383836125e0565b505050565b6000805433600160a060020a0390811691161461100057600080fd5b5080600160a060020a0381166354c15b826000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561104857600080fd5b6102c65a03f1151561105957600080fd5b50505060405180519050151561106e57600080fd5b60108054600160a060020a031916600160a060020a039290921691909117905550565b60005433600160a060020a039081169116146110ac57600080fd5b600160a060020a03811615156110c157600080fd5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146110fe57600080fd5b600160a060020a038116151561111357600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60025460a060020a900460ff161561114c57600080fd5b6111563385612572565b151561116157600080fd5b61116a84610f02565b1561117457600080fd5b600b5461118b908590600160a060020a0316612592565b600b54600160a060020a03166327ebe40a858585853360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156111fa57600080fd5b6102c65a03f1151561120b57600080fd5b50505050505050565b60005433600160a060020a0390811691161461122f57600080fd5b60025460a060020a900460ff16151561124757600080fd5b600b54600160a060020a0316151561125e57600080fd5b600c54600160a060020a0316151561127557600080fd5b601054600160a060020a0316151561128c57600080fd5b601354600160a060020a0316156112a257600080fd5b6112aa6126c8565b565b600a60205260009081526040902054600160a060020a031681565b600080808085116112d757600080fd5b600084116112e457600080fd5b60068054869081106112f257fe5b9060005260206000209060020201915060068481548110151561131157fe5b9060005260206000209060020201905061132d8286838761271b565b801561133e575061133e848661289b565b95945050505050565b600960205260009081526040902054600160a060020a031681565b60025460a060020a900460ff161561137957600080fd5b6113833385612572565b151561138e57600080fd5b61139784611f47565b15156113a257600080fd5b600c546113b9908590600160a060020a0316612592565b600c54600160a060020a03166327ebe40a858585853360405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156111fa57600080fd5b60025433600160a060020a0390811691161461144357600080fd5b600e55565b60025460a060020a900460ff161561145f57600080fd5b6114693382612572565b151561147457600080fd5b6000908152600a602052604090208054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146114bd57600080fd5b600160a060020a03811615156114d257600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b60025460009033600160a060020a0390811691161461151257600080fd5b5080600160a060020a03811615156115325750600254600160a060020a03165b601154611388901061154357600080fd5b60118054600101905561155a6000808086856128f0565b50505050565b60025433600160a060020a039081169116148061158b575060005433600160a060020a039081169116145b806115a4575060015433600160a060020a039081169116145b15156115af57600080fd5b60035463ffffffff1681106115c357600080fd5b600555565b60025460a060020a900460ff1681565b600154600090819033600160a060020a039081169116146115f857600080fd5b30600160a060020a0316319150600e54600f546001010290508082111561164557600154600160a060020a031681830380156108fc0290604051600060405180830381858888f150505050505b5050565b600081815260076020526040902054600160a060020a0316801515610c7257600080fd5b61afc881565b601354600160a060020a031681565b6000805433600160a060020a0390811691161461169e57600080fd5b5080600160a060020a0381166385b861886000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116e657600080fd5b6102c65a03f115156116f757600080fd5b50505060405180519050151561170c57600080fd5b600b8054600160a060020a031916600160a060020a039290921691909117905550565b600160a060020a031660009081526008602052604090205490565b60005433600160a060020a0390811691161461176557600080fd5b60025460a060020a900460ff16151561177d57600080fd5b60138054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60055481565b60025433600160a060020a0390811691161480611809575060005433600160a060020a039081169116145b80611822575060015433600160a060020a039081169116145b151561182d57600080fd5b60025460a060020a900460ff161561184457600080fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055565b611872612fa0565b600061187c612fa0565b600080600061188a8761172f565b94508415156118ba5760006040518059106118a25750595b90808252806020026020018201604052509550611941565b846040518059106118c85750595b908082528060200260200182016040525093506118e3610ef1565b925060009150600190505b82811161193d57600081815260076020526040902054600160a060020a0388811691161415611935578084838151811061192457fe5b602090810290910101526001909101905b6001016118ee565b8395505b5050505050919050565b600080600080600080600080600260149054906101000a900460ff1615151561197357600080fd5b600680548a90811061198157fe5b60009182526020909120600290910201600181015490975067ffffffffffffffff1615156119ae57600080fd5b611a438761010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612b9c565b1515611a4e57600080fd5b60018701546006805460c060020a90920463ffffffff1697509087908110611a7257fe5b600091825260209091206001808a015460029093029091019081015490965061ffff60f060020a92839004811696509190041684901115611ac057600185015460f060020a900461ffff1693505b6010548754865460018a0154600160a060020a0390931692630d9f5aed92919068010000000000000000900467ffffffffffffffff166000190160006040516020015260405160e060020a63ffffffff86160281526004810193909352602483019190915267ffffffffffffffff166044820152606401602060405180830381600087803b1515611b5057600080fd5b6102c65a03f11515611b6157600080fd5b505050604051805160008b81526007602052604090205460018a810154929650600160a060020a039091169450611bb092508b9160c060020a900463ffffffff1690870161ffff1686866128f0565b6001880180547bffffffff00000000000000000000000000000000000000000000000019169055600f8054600019019055600e54909150600160a060020a0333169080156108fc0290604051600060405180830381858888f150939c9b505050505050505050505050565b60025433600160a060020a0390811691161480611c46575060005433600160a060020a039081169116145b80611c5f575060015433600160a060020a039081169116145b1515611c6a57600080fd5b600b54600160a060020a0316635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611ca957600080fd5b6102c65a03f11515611cba57600080fd5b5050600c54600160a060020a03169050635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611cfd57600080fd5b6102c65a03f11515610fdf57600080fd5b60408051908101604052600281527f434b000000000000000000000000000000000000000000000000000000000000602082015281565b600381600e8110611d5257fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b600760205260009081526040902054600160a060020a031681565b60025460a060020a900460ff1615611da457600080fd5b600160a060020a0382161515611db957600080fd5b30600160a060020a031682600160a060020a031614151515611dda57600080fd5b600b54600160a060020a0383811691161415611df557600080fd5b600c54600160a060020a0383811691161415611e1057600080fd5b611e1a3382612572565b1515611e2557600080fd5b6116453383836125e0565b600254600160a060020a031681565b600e5481565b600d54600160a060020a031681565b60025460009033600160a060020a03908116911614611e7257600080fd5b60125461afc89010611e8357600080fd5b611e92600080600085306128f0565b600b54909150611eac908290600160a060020a0316612592565b600b54600160a060020a03166327ebe40a82611ec6612bd4565b6000620151803060405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b1515611f2657600080fd5b6102c65a03f11515611f3757600080fd5b5050601280546001019055505050565b600080808311611f5657600080fd5b6006805484908110611f6457fe5b906000526020600020906002020190506120098161010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612c82565b9392505050565b61138881565b60005433600160a060020a0390811691161461203157600080fd5b600d8054600160a060020a031916600160a060020a0392909216919091179055565b600b54600160a060020a031681565b600080600080600080600080600080600060068c81548110151561208257fe5b906000526020600020906002020190508060010160189054906101000a900463ffffffff1663ffffffff16600014159a50438160010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115995080600101601c9054906101000a900461ffff1661ffff1698508060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1697508060010160189054906101000a900463ffffffff1663ffffffff1696508060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1695508060010160109054906101000a900463ffffffff1663ffffffff1694508060010160149054906101000a900463ffffffff1663ffffffff16935080600101601e9054906101000a900461ffff1661ffff16925080600001549150509193959799509193959799565b60025460009060a060020a900460ff16156121dd57600080fd5b6121e73383612572565b15156121f257600080fd5b6121fb82611f47565b151561220657600080fd5b6122108284612cb9565b151561221b57600080fd5b600c54600160a060020a031663c55d0f568460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561226c57600080fd5b6102c65a03f1151561227d57600080fd5b5050506040518051600e549092508201341015905061229b57600080fd5b600c54600e54600160a060020a039091169063454a2ab39034038560405160e060020a63ffffffff851602815260048101919091526024016000604051808303818588803b15156122eb57600080fd5b6125ee5a03f115156122fc57600080fd5b50505050610fdf8263ffffffff168463ffffffff16612d08565b60125481565b601054600160a060020a031681565b600254600090819060a060020a900460ff161561234757600080fd5b600e5434101561235657600080fd5b6123603385612572565b151561236b57600080fd5b612375838561289b565b151561238057600080fd5b600680548590811061238e57fe5b906000526020600020906002020191506124338261010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612c82565b151561243e57600080fd5b600680548490811061244c57fe5b906000526020600020906002020190506124f18161010060405190810160409081528254825260019092015467ffffffffffffffff8082166020840152680100000000000000008204169282019290925263ffffffff608060020a83048116606083015260a060020a83048116608083015260c060020a83041660a082015261ffff60e060020a8304811660c083015260f060020a90920490911660e0820152612c82565b15156124fc57600080fd5b6125088285838661271b565b151561251357600080fd5b61155a8484612d08565b612525612fa0565b61252d612fa0565b6000808460405180591061253e5750595b818152601f19601f8301168101602001604052905092505060208201905084612568828287612e72565b5090949350505050565b600090815260076020526040902054600160a060020a0391821691161490565b6000918252600960205260409091208054600160a060020a031916600160a060020a03909216919091179055565b600090815260096020526040902054600160a060020a0391821691161490565b600160a060020a03808316600081815260086020908152604080832080546001019055858352600790915290208054600160a060020a031916909117905583161561267357600160a060020a03831660009081526008602090815260408083208054600019019055838352600a82528083208054600160a060020a03199081169091556009909252909120805490911690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b60005433600160a060020a039081169116146126e357600080fd5b60025460a060020a900460ff1615156126fb57600080fd5b6002805474ff000000000000000000000000000000000000000019169055565b60008184141561272d57506000612893565b6001850154608060020a900463ffffffff1682148061275c5750600185015460a060020a900463ffffffff1682145b1561276957506000612893565b6001830154608060020a900463ffffffff168414806127985750600183015460a060020a900463ffffffff1684145b156127a557506000612893565b6001830154608060020a900463ffffffff1615806127d257506001850154608060020a900463ffffffff16155b156127df57506001612893565b60018581015490840154608060020a9182900463ffffffff9081169290910416148061282a575060018086015490840154608060020a900463ffffffff90811660a060020a90920416145b1561283757506000612893565b6001808601549084015460a060020a900463ffffffff908116608060020a90920416148061288257506001858101549084015460a060020a9182900463ffffffff9081169290910416145b1561288f57506000612893565b5060015b949350505050565b6000818152600760205260408082205484835290822054600160a060020a0391821691168082148061133e57506000858152600a6020526040902054600160a060020a03908116908316149250505092915050565b6000806128fb612fdb565b600063ffffffff8916891461290f57600080fd5b63ffffffff8816881461292157600080fd5b61ffff8716871461293157600080fd5b600287049250600d8361ffff16111561294957600d92505b610100604051908101604090815287825267ffffffffffffffff42166020830152600090820181905263ffffffff808c1660608401528a16608083015260a082015261ffff80851660c0830152881660e0820152600680549193506001918083016129b4838261301f565b6000928352602090922085916002020181518155602082015160018201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060c082015181600101601c6101000a81548161ffff021916908361ffff16021790555060e08201516001909101805461ffff9290921660f060020a027dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555003905063ffffffff81168114612b0f57600080fd5b7f0a5311bd2a6608f08a180df2ee7c5946819a649b204b554bb8e39825b2c50ad58582846060015163ffffffff16856080015163ffffffff168651604051600160a060020a03909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390a1612b90600086836125e0565b98975050505050505050565b60008160a0015163ffffffff1615801590610c6f57504367ffffffffffffffff16826040015167ffffffffffffffff16111592915050565b600b5460009081908190600160a060020a031663eac9d94c82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612c2257600080fd5b6102c65a03f11515612c3357600080fd5b50505060405180519250506fffffffffffffffffffffffffffffffff82168214612c5c57600080fd5b50600281048101662386f26fc10000811015612c7c5750662386f26fc100005b92915050565b60008160a0015163ffffffff16158015610c6f57504367ffffffffffffffff16826040015167ffffffffffffffff16111592915050565b6000806000600685815481101515612ccd57fe5b90600052602060002090600202019150600684815481101515612cec57fe5b9060005260206000209060020201905061133e8286838761271b565b600080600683815481101515612d1a57fe5b90600052602060002090600202019150600684815481101515612d3957fe5b600091825260209091206002909102016001810180547bffffffff000000000000000000000000000000000000000000000000191660c060020a63ffffffff8716021790559050612d8982612eb7565b612d9281612eb7565b6000848152600a602090815260408083208054600160a060020a031990811690915586845281842080549091169055600f8054600190810190915587845260079092529182902054908301547f241ea03ca20251805084d27d4440371c34a0b85ff108f6bb5611248f73818b8092600160a060020a0390921691879187916801000000000000000090910467ffffffffffffffff1690518085600160a060020a0316600160a060020a031681526020018481526020018381526020018267ffffffffffffffff16815260200194505050505060405180910390a150505050565b60005b60208210612e985782518452602084019350602083019250602082039150612e75565b6001826020036101000a03905080198351168185511617909352505050565b600554600182015443919060039060e060020a900461ffff16600e8110612eda57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16811515612f0557fe5b6001840180546fffffffffffffffff0000000000000000191668010000000000000000939092049390930167ffffffffffffffff16919091021790819055600d60e060020a90910461ffff161015612f9d576001818101805461ffff60e060020a8083048216909401169092027fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555b50565b60206040519081016040526000815290565b60806040519081016040526004815b60008152600019919091019060200181612fc15790505090565b6101006040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e082015290565b815481835581811511610fdf57600083815260209020610fdf91610ef99160029182028101918502015b808211156130635760008082556001820155600201613049565b50905600a165627a7a72305820a6465fc1ce7ab1a92906ff7206b23d80a21bbd50b85b4bde6a91f8e6b2e3edde0029', + ['0x01ffc9a7', '0x0519ce79', '0x0560ff44', '0x05e45546', '0x06fdde03', '0x095ea7b3', '0x0a0f8168', + '0x0d9f5aed', '0x0e583df0', '0x14001f4c', '0x18160ddd', '0x183a7947', '0x1940a936', '0x19c2f201', + '0x21717ebf', '0x23b872dd', '0x24e7a38a', '0x27d7874c', '0x27ebe40a', '0x2ba73c15', '0x3d7d3f5a', + '0x3f4ba83a', '0x454a2ab3', '0x46116e6f', '0x46d22c70', '0x481af3d3', '0x4ad8c938', '0x4b85fd55', + '0x4dfff04f', '0x4e0a3379', '0x54c15b82', '0x56129134', '0x5663896e', '0x5c975abb', '0x5fd8c710', + '0x6352211e', '0x680eba27', '0x6af04a57', '0x6fbde40d', '0x70a08231', '0x71587988', '0x76190f8f', + '0x7a7d4937', '0x8456cb59', '0x8462151c', '0x85b86188', '0x88c2a0bf', '0x91876e57', '0x95d89b41', + '0x9d6fac6f', '0xa45f4bfc', '0xa9059cbb', '0xb047fb50', '0xb0c35c05', '0xbc4006f5', '0xc3bea9af', + '0xc55d0f56', '0xcb4799f2', '0xd3e6f49f', '0xdefb9584', '0xe17b25af', '0xe6cbe351', '0xe98b7f4d', + '0xeac9d94c', '0xed60ade6', '0xf1ca9410', '0xf2b47d52', '0xf7d8c883', '0xffffffff'], False, True ) ]) def test_get_function_sighashes(bytecode, expected_sighashes, is_erc20, is_erc721):