@layerzerolabs/oapp-evm
Version:
LayerZero Labs reference EVM OmniChain Application (OApp) implementation
1 lines • 928 kB
JSON
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DEFAULT_CHANNEL_ID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"EVM_COMPUTE_MAP_BPS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"EVM_COMPUTE_REDUCE_FEE_USD","inputs":[],"outputs":[{"name":"","type":"uint120","internalType":"uint120"}],"stateMutability":"view"},{"type":"function","name":"EVM_REQUEST_FEE_USD","inputs":[],"outputs":[{"name":"","type":"uint120","internalType":"uint120"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"MAP_REDUCE_COMPUTE_TYPES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"NATIVE_TOKEN_PRICE_USD","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"TREASURY_GAS_CAP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"TREASURY_GAS_FOR_FEE_CAP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"assertGuid","inputs":[{"name":"packetBytes","type":"bytes","internalType":"bytes"},{"name":"guid","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"createEndpoints","inputs":[{"name":"_endpointNum","type":"uint8","internalType":"uint8"},{"name":"_libraryType","type":"uint8","internalType":"enum TestHelperOz5.LibraryType"},{"name":"nativeTokenAddresses","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decodeLzComposeOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"index","type":"uint16","internalType":"uint16"},{"name":"gas","type":"uint128","internalType":"uint128"},{"name":"value","type":"uint128","internalType":"uint128"}],"stateMutability":"pure"},{"type":"function","name":"decodeLzReadOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"gas","type":"uint128","internalType":"uint128"},{"name":"size","type":"uint32","internalType":"uint32"},{"name":"value","type":"uint128","internalType":"uint128"}],"stateMutability":"pure"},{"type":"function","name":"decodeLzReceiveOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"gas","type":"uint128","internalType":"uint128"},{"name":"value","type":"uint128","internalType":"uint128"}],"stateMutability":"pure"},{"type":"function","name":"decodeNativeDropOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"receiver","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"executorValueCap","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getNextInflightPacket","inputs":[{"name":"_dstEid","type":"uint16","internalType":"uint16"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"packetBytes","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"hasPendingPackets","inputs":[{"name":"_dstEid","type":"uint16","internalType":"uint16"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"flag","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lzCompose","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_from","type":"address","internalType":"address"},{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_guid","type":"bytes32","internalType":"bytes32"},{"name":"_to","type":"address","internalType":"address"},{"name":"_composerMsg","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzCompose","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_guid","type":"bytes32","internalType":"bytes32"},{"name":"_composer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzReadReceive","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_resolvedPayload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzReceive","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"nextExecutorOption","inputs":[{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_cursor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"optionType","type":"uint8","internalType":"uint8"},{"name":"option","type":"bytes","internalType":"bytes"},{"name":"cursor","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"registerEndpoint","inputs":[{"name":"endpoint","type":"address","internalType":"contract EndpointV2Mock"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"schedulePacket","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setExecutorValueCap","inputs":[{"name":"_valueCap","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUpEndpoints","inputs":[{"name":"_endpointNum","type":"uint8","internalType":"uint8"},{"name":"_libraryType","type":"uint8","internalType":"enum TestHelperOz5.LibraryType"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setupOApps","inputs":[{"name":"_oappCreationCode","type":"bytes","internalType":"bytes"},{"name":"_startEid","type":"uint8","internalType":"uint8"},{"name":"_oappNum","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"oapps","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"validatePacket","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_resolvedPayload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyPackets","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_dstAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyPackets","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"},{"name":"_packetAmount","type":"uint256","internalType":"uint256"},{"name":"_composer","type":"address","internalType":"address"},{"name":"_resolvedPayload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyPackets","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wireOApps","inputs":[{"name":"oapps","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wireReadOApps","inputs":[{"name":"oapps","type":"address[]","internalType":"address[]"},{"name":"channels","type":"uint32[]","internalType":"uint32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"Executor_InvalidLzComposeOption","inputs":[]},{"type":"error","name":"Executor_InvalidLzReadOption","inputs":[]},{"type":"error","name":"Executor_InvalidLzReceiveOption","inputs":[]},{"type":"error","name":"Executor_InvalidNativeDropOption","inputs":[]},{"type":"error","name":"QueueEmpty","inputs":[]},{"type":"error","name":"QueueFull","inputs":[]}],"bytecode":{"object":"0x60806040819052600c8054600160ff199182168117909255601f805490911690911790556200002e906200009d565b604051809103905ff08015801562000048573d5f803e3d5ffd5b50601f80546001600160a01b039290921661010002610100600160a81b0319909216919091179055602480546001600160801b03191667016345785d8a000017905534801562000096575f80fd5b50620000ab565b6107c7806202b84883390190565b6202b78e80620000ba5f395ff3fe608060405260043610620002ae575f3560e01c806382411c771162000166578063b752b72a11620000ce578063defd9da61162000082578063defd9da614620008a4578063e20c9f7114620008e4578063ec53eaa014620008fb578063f93e1d611462000912578063fa7626d41462000957578063faed6c581462000972575f80fd5b8063b752b72a14620007d1578063b76bada514620007f5578063b954fdf6146200080b578063ba414fa6146200084f578063baead19c1462000866578063d6d624971462000880575f80fd5b8063997cff1b1162000126578063997cff1b146200071d578063a29c89841462000741578063ae6ce4001462000758578063b0464fdc146200077c578063b1dcf5c81462000793578063b5508aa914620007ba575f80fd5b806382411c77146200033d578063834bd159146200065957806385226c81146200067d578063916a17c614620006a35780639751ca8614620006c9575f80fd5b80633e5e3c23116200021657806365449eb011620001ca57806365449eb0146200056457806366d9a9a01462000588578063699cbade14620005ae5780636e1775e314620005cc578063703ca25414620006025780637982cf421462000626575f80fd5b80633e5e3c2314620004605780633f7286f41462000477578063518e8ab0146200048e57806351aa318b14620004dd5780635ea0fefe146200050b578063601978891462000540575f80fd5b80631cc46525116200026e5780631cc46525146200037b5780631ed7831c146200039f5780632113ce6214620003c55780632a35d25014620003ff5780632ade388014620004235780633bbd6a941462000449575f80fd5b8063090852b614620002ba5780630a69faa914620002e05780630a9254e414620002f75780630afba868146200030e5780631766f5a4146200033d575f80fd5b36620002b657005b5f80fd5b348015620002c6575f80fd5b50620002de620002d836600462005f45565b62000996565b005b620002de620002f1366004620060b4565b620009c2565b34801562000303575f80fd5b50620002de62000af7565b3480156200031a575f80fd5b506200032561271081565b60405161ffff90911681526020015b60405180910390f35b34801562000349575f80fd5b506200035a670de0b6b3a764000081565b6040516effffffffffffffffffffffffffffff909116815260200162000334565b34801562000387575f80fd5b50620002de6200039936600462006168565b62000b03565b348015620003ab575f80fd5b50620003b662000b58565b604051620003349190620061dc565b348015620003d1575f80fd5b50602454620003e6906001600160801b031681565b6040516001600160801b03909116815260200162000334565b3480156200040b575f80fd5b50620003b66200041d366004620061f0565b62000bba565b3480156200042f575f80fd5b506200043a62000cd2565b60405162000334919062006304565b620002de6200045a36600462006385565b62000e1a565b3480156200046c575f80fd5b50620003b662000ed5565b34801562000483575f80fd5b50620003b662000f35565b3480156200049a575f80fd5b50620004b2620004ac36600462006438565b62000f95565b6040805161ffff90941684526001600160801b03928316602085015291169082015260600162000334565b348015620004e9575f80fd5b50620004f56201117181565b60405163ffffffff909116815260200162000334565b34801562000517575f80fd5b506200052f620005293660046200648a565b62000fb1565b604051901515815260200162000334565b3480156200054c575f80fd5b50620002de6200055e366004620064b7565b62000fe3565b34801562000570575f80fd5b50620002de62000582366004620065bf565b62001ba1565b34801562000594575f80fd5b506200059f62001c7f565b604051620003349190620066c5565b348015620005ba575f80fd5b50620003e668056bc75e2d6310000081565b348015620005d8575f80fd5b50620005f0620005ea36600462006742565b62001def565b604051620003349493929190620067b5565b3480156200060e575f80fd5b50620002de62000620366004620067e4565b62001e11565b34801562000632575f80fd5b506200064a620006443660046200648a565b62001fca565b60405162000334919062006821565b34801562000665575f80fd5b50620002de6200067736600462006835565b620020b1565b34801562000689575f80fd5b5062000694620025b4565b604051620003349190620068ad565b348015620006af575f80fd5b50620006ba62002689565b604051620003349190620068c1565b348015620006d5575f80fd5b50620006ed620006e736600462006438565b6200276e565b604080516001600160801b03948516815263ffffffff909316602084015292169181019190915260600162000334565b34801562000729575f80fd5b50620002de6200073b36600462006742565b6200277d565b620002de6200075236600462006934565b620027d4565b34801562000764575f80fd5b50620002de62000776366004620069be565b6200285b565b34801562000788575f80fd5b50620006ba620028f8565b3480156200079f575f80fd5b50620007ab620186a081565b60405190815260200162000334565b348015620007c6575f80fd5b5062000694620029dd565b348015620007dd575f80fd5b50620002de620007ef366004620069dc565b62002ab2565b34801562000801575f80fd5b50620007ab600381565b34801562000817575f80fd5b506200082f6200082936600462006438565b62002acf565b604080516001600160801b03909316835260208301919091520162000334565b3480156200085b575f80fd5b506200052f62002ae9565b34801562000872575f80fd5b50620007ab64e8d4a5100081565b3480156200088c575f80fd5b50620002de6200089e366004620069fb565b62002b8d565b348015620008b0575f80fd5b50620002de620008c236600462006a69565b602480546001600160801b0319166001600160801b0392909216919091179055565b348015620008f0575f80fd5b50620003b662004a7f565b620002de6200090c366004620064b7565b62004adf565b3480156200091e575f80fd5b50620009366200093036600462006438565b62004c11565b604080516001600160801b0393841681529290911660208301520162000334565b34801562000963575f80fd5b50601f546200052f9060ff1681565b3480156200097e575f80fd5b50620002de6200099036600462006a87565b62004c1f565b620009be82826001600160a01b03165f1b5f8060405180602001604052805f815250620020b1565b5050565b5f60235f620009d2878762004caa565b63ffffffff16815260208101919091526040015f908120546001600160a01b031691508062000a018562004cd0565b92505091505f604051806060016040528062000a1e8a8a62004dba565b63ffffffff16815260200162000a358a8a62004dcb565b815260200162000a468a8a62004de7565b6001600160401b0316905290506001600160a01b038416630c0c389e6001600160801b038581169085168462000a7d8d8d62004e0d565b62000a898e8e62004e21565b604080516020810182525f815290516001600160e01b031960e089901b16815262000abc949392918e9160040162006af4565b5f604051808303818589803b15801562000ad4575f80fd5b5088f115801562000ae7573d5f803e3d5ffd5b5050505050505050505050505050565b62000b0162004e32565b565b620009be82828460ff166001600160401b0381111562000b275762000b2762005fc1565b60405190808252806020026020018201604052801562000b51578160200160208202803683370190505b5062002b8d565b6060601680548060200260200160405190810160405280929190818152602001828054801562000bb057602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162000b91575b5050505050905090565b60608160ff166001600160401b0381111562000bda5762000bda62005fc1565b60405190808252806020026020018201604052801562000c04578160200160208202803683370190505b509050825b62000c15838562006b7a565b60ff168160ff16101562000cbf5760ff81165f9081526023602090815260408083205481516001600160a01b039091169281019290925230908201526001606082015262000c7790879060800160405160208183030381529060405262004e83565b9050808362000c87878562006b96565b60ff168151811062000c9d5762000c9d62006bb2565b6001600160a01b03909216602092830291909101909101525060010162000c09565b5062000ccb8162001e11565b9392505050565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562000e11575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000df9578382905f5260205f2001805462000d679062006bc6565b80601f016020809104026020016040519081016040528092919081815260200182805462000d959062006bc6565b801562000de45780601f1062000dba5761010080835404028352916020019162000de4565b820191905f5260205f20905b81548152906001019060200180831162000dc657829003601f168201915b50505050508152602001906001019062000d47565b50505050815250508152602001906001019062000cf5565b50505050905090565b63ffffffff87165f908152602360205260408120546001600160a01b031690808062000e468962004edf565b925092509250836001600160a01b03166391d20fa18284908d8b8d898d8d60405180602001604052805f8152506040518a63ffffffff1660e01b815260040162000e97979695949392919062006c00565b5f604051808303818589803b15801562000eaf575f80fd5b5088f115801562000ec2573d5f803e3d5ffd5b5050505050505050505050505050505050565b6060601880548060200260200160405190810160405280929190818152602001828054801562000bb057602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000b91575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000bb057602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000b91575050505050905090565b5f805f62000fa4858562004fd7565b9250925092509250925092565b61ffff82165f9081526020808052604080832084845290915281208162000fd88262005052565b119150505b92915050565b5f62000ff0848462004caa565b63ffffffff81165f908152602360205260408120549192506001600160a01b03909116908163402f846862001026888862004e0d565b62001032898962004dba565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015263ffffffff1660248201526044016040805180830381865afa1580156200107f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620010a5919062006c6e565b5090505f620010b5878762005070565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052506040805163054fd4d560e41b8152905195965090946001600160a01b03881694506354fd4d509350600480830193506060928290030181865afa1580156200112e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001154919062006cc7565b50509050806001600160401b03166003036200160d57825f6001600160a01b038216639c33abf7620011878c8c62004dba565b620011938d8d62004e0d565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526001600160a01b03166024820152600260448201526064015f60405180830381865afa158015620011e8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262001211919081019062006d53565b90505f818060200190518101906200122a919062006df6565b608001515f8151811062001242576200124262006bb2565b602002602001015190505f620012598c8c62005081565b6040516200126992919062006ed7565b6040518091039020905060605f630223536e60e01b88846064604051602401620012969392919062006ee6565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505f6001600160a01b03851663f010cb238d8985620012eb426103e862006f13565b6040518563ffffffff1660e01b81526004016200130c949392919062006f29565b602060405180830381865afa15801562001328573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200134e919062006f6b565b90506200135b8162005092565b6040805160018082528183019092529194505f9250816020015b6200137f62005c07565b815260200190600190039081620013755790505090506040518060a001604052808d63ffffffff168152602001886001600160a01b03168152602001838152602001426103e8620013d1919062006f13565b815260200184815250815f81518110620013ef57620013ef62006bb2565b602090810291909101015260405163b143044b60e01b81526001600160a01b0386169063b143044b906200142890849060040162006f83565b5f604051808303815f87803b15801562001440575f80fd5b505af115801562001453573d5f803e3d5ffd5b505050505f630894edf160e01b8a866040516024016200147592919062007033565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505f6001600160a01b03871663f010cb238f8b85620014ca426103e862006f13565b6040518563ffffffff1660e01b8152600401620014eb949392919062006f29565b602060405180830381865afa15801562001507573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200152d919062006f6b565b90506200153a8162005092565b9450506040518060a001604052808e63ffffffff168152602001896001600160a01b03168152602001828152602001426103e862001579919062006f13565b815260200185815250825f8151811062001597576200159762006bb2565b602090810291909101015260405163b143044b60e01b81526001600160a01b0387169063b143044b90620015d090859060040162006f83565b5f604051808303815f87803b158015620015e8575f80fd5b505af1158015620015fb573d5f803e3d5ffd5b50505050505050505050505062001b97565b806001600160401b0316600a0362001b3757825f6001600160a01b038216639c33abf76200163c8c8c62004dba565b620016488d8d62004e0d565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526001600160a01b03166024820152600160448201526064015f60405180830381865afa1580156200169d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620016c6919081019062006d53565b90505f81806020019051810190620016df919062007056565b608001515f81518110620016f757620016f762006bb2565b602002602001015190505f6200170e8c8c620051a8565b6040516200171e92919062006ed7565b604051809103902090505f620017358d8d62004e21565b8b60405160200162001749929190620070a7565b60405160208183030381529060405280519060200120905060605f63ab750e7560e01b8985856040516024016200178393929190620070ce565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505f6001600160a01b03861663f010cb238e8a85620017d8426103e862006f13565b6040518563ffffffff1660e01b8152600401620017f9949392919062006f29565b602060405180830381865afa15801562001815573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200183b919062006f6b565b9050620018488162005092565b6040805160018082528183019092529194505f9190816020015b6200186c62005c07565b815260200190600190039081620018625790505090506040518060a001604052808f63ffffffff1681526020018a6001600160a01b03168152602001848152602001426103e8620018be919062006f13565b815260200185815250815f81518110620018dc57620018dc62006bb2565b602090810291909101015260405163b143044b60e01b81526001600160a01b0388169063b143044b906200191590849060040162006f83565b5f604051808303815f87803b1580156200192d575f80fd5b505af115801562001940573d5f803e3d5ffd5b505050505050505f63594924da60e01b8985856040516024016200196793929190620070ce565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505f6001600160a01b03861663f010cb238e8a85620019bc426103e862006f13565b6040518563ffffffff1660e01b8152600401620019dd949392919062006f29565b602060405180830381865afa158015620019f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001a1f919062006f6b565b905062001a2c8162005092565b6040805160018082528183019092529194505f9190816020015b62001a5062005c07565b81526020019060019003908162001a465790505090506040518060a001604052808f63ffffffff1681526020018a6001600160a01b03168152602001848152602001426103e862001aa2919062006f13565b815260200185815250815f8151811062001ac05762001ac062006bb2565b602090810291909101015260405163b143044b60e01b81526001600160a01b0388169063b143044b9062001af990849060040162006f83565b5f604051808303815f87803b15801562001b11575f80fd5b505af115801562001b24573d5f803e3d5ffd5b5050505050505050505050505062001b97565b6040516312cc947f60e01b81526001600160a01b038416906312cc947f9062001b67908b908b90600401620070f4565b5f604051808303815f87803b15801562001b7f575f80fd5b505af115801562001b92573d5f803e3d5ffd5b505050505b5050505050505050565b5f5b825181101562001c7a575f83828151811062001bc35762001bc362006bb2565b602002602001015190505f5b835181101562001c6f57816001600160a01b031663f0a9e48185838151811062001bfd5762001bfd62006bb2565b60209081029190910101516040516001600160e01b031960e084901b16815263ffffffff9091166004820152600160248201526044015f604051808303815f87803b15801562001c4b575f80fd5b505af115801562001c5e573d5f803e3d5ffd5b50506001909201915062001bcf9050565b505060010162001ba3565b505050565b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101562000e11578382905f5260205f2090600202016040518060400160405290815f8201805462001cd59062006bc6565b80601f016020809104026020016040519081016040528092919081815260200182805462001d039062006bc6565b801562001d525780601f1062001d285761010080835404028352916020019162001d52565b820191905f5260205f20905b81548152906001019060200180831162001d3457829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562001dd657602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b0319168152602001906004019060208260030104928301926001038202915080841162001d975790505b5050505050815250508152602001906001019062001ca2565b5f365f8062001e00878787620051b9565b935093509350935093509350935093565b80515f5b8181101562001c7a575f83828151811062001e345762001e3462006bb2565b602002602001015190505f5b8381101562001fbf5782811462001fb6575f85828151811062001e675762001e6762006bb2565b602002602001015190505f816001600160a01b0316635e280f116040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001eaf573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001ed5919062007109565b6001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f11573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001f37919062007127565b9050836001600160a01b0316633400288b8262001f5a856001600160a01b031690565b6040516001600160e01b031960e085901b16815263ffffffff92909216600483015260248201526044015f604051808303815f87803b15801562001f9c575f80fd5b505af115801562001faf573d5f803e3d5ffd5b5050505050505b60010162001e40565b505060010162001e15565b61ffff82165f90815260208080526040808320848452909152812060609162001ff38262005052565b1115620020aa575f620020068262005214565b5f818152602160205260409020805491925090620020249062006bc6565b80601f0160208091040260200160405190810160405280929190818152602001828054620020529062006bc6565b8015620020a15780601f106200207757610100808354040283529160200191620020a1565b820191905f5260205f20905b8154815290600101906020018083116200208357829003601f168201915b50505050509250505b5092915050565b63ffffffff85165f908152602360205260409020546001600160a01b0316620021215760405162461bcd60e51b815260206004820152601b60248201527f656e64706f696e74206e6f74207965742072656769737465726564000000000060448201526064015b60405180910390fd5b63ffffffff85165f908152602080805260408083208784529091528120906200214a8262005052565b90505f855f036200216857620021608362005052565b90506200217c565b85821162002177578162002179565b855b90505b801562001b9757806200218f8162007145565b9150505f6200219e846200527f565b5f81815260216020526040812080549293509091620021bd9062006bc6565b80601f0160208091040260200160405190810160405280929190818152602001828054620021eb9062006bc6565b80156200223a5780601f1062002210576101008083540402835291602001916200223a565b820191905f5260205f20905b8154815290600101906020018083116200221c57829003601f168201915b505060405163997cff1b60e01b8152939450309363997cff1b9350620022699250859150869060040162007033565b5f6040518083038186803b15801562002280575f80fd5b505afa15801562002293573d5f803e3d5ffd5b5050604051636019788960e01b815230925063601978899150620022be9084908a906004016200715d565b5f604051808303815f87803b158015620022d6575f80fd5b505af1158015620022e9573d5f803e3d5ffd5b5050505f8381526022602052604081208054919250906200230a9062006bc6565b80601f0160208091040260200160405190810160405280929190818152602001828054620023389062006bc6565b8015620023875780601f106200235d5761010080835404028352916020019162002387565b820191905f5260205f20905b8154815290600101906020018083116200236957829003601f168201915b505050505090506200239b816002620052ed565b1562002453575f80620023ae8362005302565b604051919350915081905f906001600160a01b0383169085908381818185875af1925050503d805f8114620023ff576040519150601f19603f3d011682016040523d82523d5f602084013e62002404565b606091505b50509050806200244e5760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b604482015260640162002118565b505050505b62002460816001620052ed565b15620024bd576040516307629f5560e51b8152309063ec53eaa0906200248d90859085906004016200715d565b5f604051808303815f87803b158015620024a5575f80fd5b505af1158015620024b8573d5f803e3d5ffd5b505050505b620024ca816005620052ed565b156200252957604051630a69faa960e01b81523090630a69faa990620024f990859085908c9060040162007185565b5f604051808303815f87803b15801562002511575f80fd5b505af115801562002524573d5f803e3d5ffd5b505050505b6001600160a01b038816158015906200254a57506200254a816003620052ed565b15620025ab576040516328a7226160e21b8152309063a29c8984906200257b908590859088908e90600401620071cd565b5f604051808303815f87803b15801562002593575f80fd5b505af1158015620025a6573d5f803e3d5ffd5b505050505b5050506200217c565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101562000e11578382905f5260205f20018054620025f79062006bc6565b80601f0160208091040260200160405190810160405280929190818152602001828054620026259062006bc6565b8015620026745780601f106200264a5761010080835404028352916020019162002674565b820191905f5260205f20905b8154815290600101906020018083116200265657829003601f168201915b505050505081526020019060010190620025d7565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101562000e11575f8481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200275557602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620027165790505b50505050508152505081526020019060010190620026ac565b5f805f62000fa48585620053f5565b5f6200278a848462004e21565b9050818114620027ce5760405162461bcd60e51b815260206004820152600e60248201526d0ceead2c840dcdee840dac2e8c6d60931b604482015260640162002118565b50505050565b30633bbd6a94620027e6878762004caa565b620027f2888862004e0d565b868686620028018c8c620051a8565b6040518863ffffffff1660e01b815260040162002825979695949392919062007217565b5f604051808303815f87803b1580156200283d575f80fd5b505af115801562002850573d5f803e3d5ffd5b505050505050505050565b8060235f836001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200289c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620028c2919062007127565b63ffffffff16815260208101919091526040015f2080546001600160a01b0319166001600160a01b039290921691909117905550565b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101562000e11575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620029c457602002820191905f5260205f20905f905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620029855790505b505050505081525050815260200190600101906200291b565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101562000e11578382905f5260205f2001805462002a209062006bc6565b80601f016020809104026020016040519081016040528092919081815260200182805462002a4e9062006bc6565b801562002a9d5780601f1062002a735761010080835404028352916020019162002a9d565b820191905f5260205f20905b81548152906001019060200180831162002a7f57829003601f168201915b50505050508152602001906001019062002a00565b620009be82825f8060405180602001604052805f815250620020b1565b5f8062002add848462005467565b915091505b9250929050565b6008545f9060ff161562002b01575060085460ff1690565b604051630667f9d760e41b8152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190526519985a5b195960d21b60248301525f9163667f9d7090604401602060405180830381865afa15801562002b60573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002b86919062006f6b565b1415905090565b8260ff166001600160401b0381111562002bab5762002bab62005fc1565b60405190808252806020026020018201604052801562002bd5578160200160208202803683370190505b50805162002bec9160259160209091019062005c42565b508260ff166001600160401b0381111562002c0b5762002c0b62005fc1565b60405190808252806020026020018201604052801562002c35578160200160208202803683370190505b50805162002c4c9160269160209091019062005caa565b508260ff166001600160401b0381111562002c6b5762002c6b62005fc1565b60405190808252806020026020018201604052801562002c95578160200160208202803683370190505b50805162002cac9160279160209091019062005c42565b508260ff166001600160401b0381111562002ccb5762002ccb62005fc1565b60405190808252806020026020018201604052801562002cf5578160200160208202803683370190505b50805162002d0c9160289160209091019062005c42565b508260ff166001600160401b0381111562002d2b5762002d2b62005fc1565b60405190808252806020026020018201604052801562002d55578160200160208202803683370190505b50805162002d6c9160299160209091019062005c42565b5060408051600180825281830190925290602080830190803683375050815162002d9e92602a92506020019062005c42565b506040516001625e79b760e01b0319815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa15801562002df1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002e17919062007109565b602a80545f9062002e2c5762002e2c62006bb2565b5f918252602082200180546001600160a01b0319166001600160a01b0393909316929092179091555b8360ff168160ff1610156200306c575f62002e7282600162006b7a565b60ff1690505f838360ff168151811062002e905762002e9062006bb2565b602002602001015190508160256001018460ff168154811062002eb75762002eb762006bb2565b905f5260205f2090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055505f6001600160a01b0316816001600160a01b03160362002f9357813060405162002f129062005d58565b63ffffffff90921682526001600160a01b03166020820152604001604051809103905ff08015801562002f47573d5f803e3d5ffd5b506025805460ff861690811062002f625762002f6262006bb2565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555062003028565b81308260405162002fa49062005d66565b63ffffffff90931683526001600160a01b039182166020840152166040820152606001604051809103905ff08015801562002fe1573d5f803e3d5ffd5b506025805460ff861690811062002ffc5762002ffc62006bb2565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6200306160255f018460ff168154811062003047576200304762006bb2565b5f918252602090912001546001600160a01b03166200285b565b505060010162002e55565b50306040516200307c9062005d74565b6001600160a01b039091168152602001604051809103905ff080158015620030a6573d5f803e3d5ffd5b50602b80546001600160a01b0319166001600160a01b03929092169190911790555f5b8360ff168160ff1610156200476d575f836001811115620030ee57620030ee62007278565b036200457b575f60255f018260ff168154811062003110576200311062006bb2565b905f5260205f20015f9054906101000a90046001600160a01b03169050308164e8d4a51000620186a0604051620031479062005d82565b6001600160a01b03948516815293909216602084015260408301526060820152608001604051809103905ff08015801562003184573d5f803e3d5ffd5b50602c80546001600160a01b0319166001600160a01b03929092169190911790556040518190620031b59062005d90565b6001600160a01b039091168152602001604051809103905ff080158015620031df573d5f803e3d5ffd5b50602c6001015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550308164e8d4a51000620186a0604051620032229062005d9e565b6001600160a01b03948516815293909216602084015260408301526060820152608001604051809103905ff0801580156200325f573d5f803e3d5ffd5b50602e80546001600160a01b0319166001600160a01b03929092169190911790556025805460ff84169081106200329a576200329a62006bb2565b5f91825260209091200154602c5460405163e8964e8160e01b81526001600160a01b03918216600482015291169063e8964e81906024015f604051808303815f87803b158015620032e9575f80fd5b505af1158015620032fc573d5f803e3d5ffd5b5050505060255f018260ff16815481106200331b576200331b62006bb2565b5f91825260209091200154602d5460405163e8964e8160e01b81526001600160a01b03918216600482015291169063e8964e81906024015f604051808303815f87803b1580156200336a575f80fd5b505af11580156200337d573d5f803e3d5ffd5b5050505060255f018260ff16815481106200339c576200339c62006bb2565b5f91825260209091200154602e5460405163e8964e8160e01b81526001600160a01b03918216600482015291169063e8964e81906024015f604051808303815f87803b158015620033eb575f80fd5b505af1158015620033fe573d5f803e3d5ffd5b5050602c54602780546001600160a01b039092169350915060ff85169081106200342c576200342c62006bb2565b5f91825260209091200180546001600160a01b0319166001600160a01b03928316179055602d546028805491909216919060ff851690811062003473576200347362006bb2565b5f91825260209091200180546001600160a01b0319166001600160a01b03928316179055602e546029805491909216919060ff8516908110620034ba57620034ba62006bb2565b5f918252602082200180546001600160a01b03939093166001600160a01b0319909316929092179091556040805160018082528183019092529081602001602082028036833701905050905030815f815181106200351c576200351c62006bb2565b6001600160a01b0392909216602092830291909101820152604080516003808252608082019092525f9290919082016060803683375050602c5482519293506001600160a01b0316918391505f9062003579576200357962006bb2565b6001600160a01b039283166020918202929092010152602d54825191169082906001908110620035ad57620035ad62006bb2565b6001600160a01b039283166020918202929092010152602e54825191169082906002908110620035e157620035e162006bb2565b6001600160a01b039283166020918202929092010152602b5460405185925f92859291169030908790620036159062005dac565b62003626969594939291906200728c565b604051809103905ff08015801562003640573d5f803e3d5ffd5b50602f80546001600160a01b0319166001600160a01b03929092169190911790556026805460ff86169081106200367b576200367b62006bb2565b905f5260205f2090600891828204019190066004029054906101000a900463ffffffff16604051620036ad9062005dba565b63ffffffff9091168152602001604051809103905ff080158015620036d4573d5f803e3d5ffd5b50603180546001600160a01b0319166001600160a01b03928316908117909155602f5460405163c7b2370b60e01b815260048101929092529091169063c7b2370b906024015f604051808303815f87803b15801562003731575f80fd5b505af115801562003744573d5f803e3d5ffd5b5050505060256001018460ff168154811062003764576200376462006bb2565b5f918252602090912060088204015460079091166004026101000a900463ffffffff166200379485600162006b7a565b602b5460405184916001600160a01b031690602a906001908890620037b99062005dc8565b620037cb9796959493929190620072db565b604051809103905ff080158015620037e5573d5f803e3d5ffd5b50603080546001600160a01b0319166001600160a01b03929092169190911790556026805460ff861690811062003820576200382062006bb2565b905f5260205f2090600891828204019190066004029054906101000a900463ffffffff16670de0b6b3a76400006040516200385b9062005dd6565b63ffffffff90921682526020820152604001604051809103905ff08015801562003887573d5f803e3d5ffd5b50603280546001600160a01b0319166001600160a01b03929092169182179055604051630e7c9b7f60e21b8152670de0b6b3a764000060048201819052602482015261271060448201526339f26dfc906064015f604051808303815f87803b158015620038f2575f80fd5b505af115801562003905573d5f803e3d5ffd5b505060305460325460405163c7b2370b60e01b81526001600160a01b0391821660048201529116925063c7b2370b91506024015f604051808303815f87803b15801562003950575f80fd5b505af115801562003963573d5f803e3d5ffd5b5050505050506200398e60405180606001604052806060815260200160608152602001606081525090565b6200399b86600162006b7a565b60ff166001600160401b03811115620039b857620039b862005fc1565b60405190808252806020026020018201604052801562003a1857816020015b6040805160c0810182525f8082526020808301829052928201819052606082018190526080820181905260a082015282525f19909201910181620039d75790505b50815262003a2886600162006b7a565b60ff166001600160401b0381111562003a455762003a4562005fc1565b60405190808252806020026020018201604052801562003a9757816020015b604080516080810182525f8082526020808301829052928201819052606082015282525f1990920191018162003a645790505b50602082015262003aaa86600162006b7a565b60ff166001600160401b0381111562003ac75762003ac762005fc1565b60405190808252806020026020018201604052801562003b0d57816020015b604080518082019091525f808252602082015281526020019060019003908162003ae65790505b50604082810191909152805160018082528183019092525f91602080830190803683375050604080515f80825260208201909252603054845194955090936001600160a01b03909116925084919062003b6a5762003b6a62006bb2565b60200260200101906001600160a01b031690816001600160a01b0316815250505f5b8860ff168160ff16101562004182578060ff168660ff16031562004179575f62003bb882600162006b7a565b60408051600180825281830190925260ff9290921692505f9190816020015b62003be162005de4565b81526020019060019003908162003bd75790505090505f6040518060c0016040528060646001600160401b03168152602001875160ff168152602001865160ff1681526020015f60ff16815260200187815260200186815250905060405180604001604052808463ffffffff16815260200182815250825f8151811062003c6c5762003c6c62006bb2565b6020908102919091010152602c546040516329460b0b60e01b81526001600160a01b03909116906329460b0b9062003ca990859060040162007387565b5f604051808303815f87803b15801562003cc1575f80fd5b505af115801562003cd4573d5f803e3d5ffd5b5050602d546040516329460b0b60e01b81526001600160a01b0390911692506329460b0b915062003d0a90859060040162007387565b5f604051808303815f87803b15801562003d22575f80fd5b505af115801562003d35573d5f803e3d5ffd5b505f92506001915062003d459050565b60405190808252806020026020018201604052801562003d8257816020015b62003d6e62005e48565b81526020019060019003908162003d645790505b506040805180820182526127108152602f546001600160a01b0316602080830191909152825180840190935263ffffffff88168352820181905282519293509183905f9062003dd55762003dd562006bb2565b6020908102919091010152602c5460405163c14c434960e01b81526001600160a01b039091169063c14c43499062003e1290859060040162007463565b5f604051808303815f87803b15801562003e2a575f80fd5b505af115801562003e3d573d5f803e3d5ffd5b50506040805160c08101825263ffffffff89168152611388602082018190529181019190915261271060608201526402540be40060808201526024546001600160801b031660a08201528b518051919550935060ff891692508210905062003ea95762003ea962006bb2565b602002602001018190525060405180608001604052808463ffffffff1681526020016113886001600160401b0316815260200161271061ffff1681526020016402540be4006001600160801b031681525087602001518560ff168151811062003f165762003f1662006bb2565b602002602001018190525060405180604001604052808463ffffffff168152602001600381525087604001518560ff168151811062003f595762003f5962006bb2565b60200260200101819052505f60256006015f9054906101000a90046001600160a01b03166001600160a01b031663c18403276040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003fb9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003fdf9190620074d3565b6040805160018082528183019092529192505f9190816020015b6200402c6040805180820182525f8082528251606081018452818152602081810183905293810191909152909182015290565b81526020019060019003908162003ff957905050905060405180604001604052808663ffffffff1681526020016040518060600160405280856001620040739190620074f1565b6001600160801b031681526001602082018190526040909101529052815182905f90620040a457620040a462006bb2565b6020908102919091010152602b546040516318b0dbfb60e11b81526001600160a01b0390911690633161b7f690620040e19084906004016200751f565b5f604051808303815f87803b158015620040f9575f80fd5b505af11580156200410c573d5f803e3d5ffd5b5050602b54604051635d6d7ccb60e01b815268056bc75e2d6310000060048201526001600160a01b039091169250635d6d7ccb91506024015f604051808303815f87803b1580156200415c575f80fd5b505af11580156200416f573d5f803e3d5ffd5b5050505050505050505b60010162003b8c565b506040805160018082528183019092525f91816020015b620041a362005e8a565b815260200190600190039081620041995750506040805160c081018252602f546001600160a01b03168152855160ff9081166020808401919091528651909116828401525f606083018190526080830188905260a083018790528351808501909452620111718452908301829052835193945090928491906200422a576200422a62006bb2565b6020908102919091010152602e5460405163642fa5a760e11b81526001600160a01b039091169063c85f4b4e906200426790859060040162007592565b5f604051808303815f87803b1580156200427f575f80fd5b505af115801562004292573d5f803e3d5ffd5b5050505050506040518060c0016040528060256001018760ff1681548110620042bf57620042bf62006bb2565b5f91825260209182902060088204015460079091166004026101000a900463ffffffff168252611388908201819052604082015261271060608201526402540be40060808201526024546001600160801b031660a0909101528351805160ff8b1690811062004332576200433262006bb2565b6020026020010181905250604051806080016040528060256001018760ff168154811