UNPKG

@layerzerolabs/hyperliquid-composer

Version:

LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation for Hyperliquid

1 lines 382 kB
{"abi":[{"type":"function","name":"AMOUNT_TO_FUND","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"AMOUNT_TO_SEND","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"ERC20","inputs":[],"outputs":[{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int8","internalType":"int8"},{"name":"assetBridgeAddress","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"ETH_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"HLP_CORE_WRITER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HLP_EID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"HLP_PRECOMPILE_READ_SPOT_BALANCE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HLP_PRECOMPILE_READ_USER_EXISTS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HL_LZ_ENDPOINT_V2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HL_LZ_ENDPOINT_V2_MAINNET","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HL_LZ_ENDPOINT_V2_TESTNET","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"HYPE","inputs":[],"outputs":[{"name":"coreIndexId","type":"uint64","internalType":"uint64"},{"name":"decimalDiff","type":"int8","internalType":"int8"},{"name":"assetBridgeAddress","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"coreSpotFromChainId","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"erc20","type":"uint64","internalType":"uint64"},{"name":"hype","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"eidFromChainId","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ethEid","type":"uint32","internalType":"uint32"},{"name":"hlpEid","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"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":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getComposeMessage","inputs":[{"name":"_composerMsg","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"hyperLiquidComposer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract HyperLiquidComposer"}],"stateMutability":"view"},{"type":"function","name":"oft","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract OFTMock"}],"stateMutability":"view"},{"type":"function","name":"recovery","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"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":"test_erc20_refund_sender_malformed_receiver","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_malformed_payload","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_native_refund_receiver_not_activated","inputs":[{"name":"_dust","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_non_evm_sender_malformed_receiver","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"typeConversionTest","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract TypeConversionTest"}],"stateMutability":"view"},{"type":"function","name":"userA","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"userB","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"SlotFound","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"fsig","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"keysHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WARNING_UninitedSlot","inputs":[{"name":"who","type":"address","indexed":false,"internalType":"address"},{"name":"slot","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"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}],"bytecode":{"object":"0x600c8054600160ff199182168117909255601f8054909116909117905560248054600160a01b600160e01b0319166503782dace9d960b21b1790556025805466038d7ea4c680006001600160401b031990911617905560c06040526005608090815264757365724160d81b60a05262000078906200013c565b602880546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260058152643ab9b2b92160d91b6020820152620000bf906200013c565b602980546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260088152677265636f7665727960c01b602082015262000109906200013c565b602a80546001600160a01b0319166001600160a01b039290921691909117905534801562000135575f80fd5b5062000319565b5f62000148826200014f565b5092915050565b5f80826040516020016200016491906200028a565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015620001ce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f49190620002a7565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620002329085908790600401620002d6565b5f604051808303815f87803b1580156200024a575f80fd5b505af11580156200025d573d5f803e3d5ffd5b50505050915091565b5f5b838110156200028257818101518382015260200162000268565b50505f910152565b5f82516200029d81846020870162000266565b9190910192915050565b5f60208284031215620002b8575f80fd5b81516001600160a01b0381168114620002cf575f80fd5b9392505050565b60018060a01b0383168152604060208201525f82518060408401526200030481606085016020870162000266565b601f01601f1916919091016060019392505050565b61eec580620003275f395ff3fe608060405234801562000010575f80fd5b5060043610620002b8575f3560e01c8063929c05791162000173578063c203ccab11620000e3578063e20c9f711162000093578063f8ba719e1162000077578063f8ba719e14620006f5578063fa7626d4146200070c578063fbe021a1146200071a575f80fd5b8063e20c9f7114620006e1578063e970bd6914620006eb575f80fd5b8063cc4aa20411620000c7578063cc4aa204146200067d578063ddceafa914620006b9578063deb22e9a14620006cd575f80fd5b8063c203ccab146200064d578063cb1a295f1462000669575f80fd5b8063b5508aa9116200013f578063ba8726791162000123578063ba87267914620005fa578063bb641b3e1462000604578063c1d1ead81462000631575f80fd5b8063b5508aa914620005d5578063ba414fa614620005df575f80fd5b8063929c057914620005765780639b5215f614620005a3578063a09e743014620005b7578063b0464fdc14620005cb575f80fd5b806347d7694f116200022b5780637773fb7311620001db57806385226c8111620001bf57806385226c8114620005155780639127ace2146200052e578063916a17c6146200055d575f80fd5b80637773fb7314620004ef5780637ecd9ac314620004f9575f80fd5b806366d9a9a0116200020f57806366d9a9a0146200045e57806376e86e72146200047757806376e9227314620004e5575f80fd5b806347d7694f14620003e65780635f60057d146200040c575f80fd5b806325996dae1162000287578063318f405a116200026b578063318f405a14620003a55780633e5e3c2314620003d25780633f7286f414620003dc575f80fd5b806325996dae146200034d5780632ade3880146200038c575f80fd5b80630a85348314620002bc5780630a9254e4146200031e57806312659341146200032a5780631ed7831c1462000334575b5f80fd5b620002f8620002cd36600462004e37565b60276020525f908152604090205467ffffffffffffffff808216916801000000000000000090041682565b6040805167ffffffffffffffff9384168152929091166020830152015b60405180910390f35b620003286200072e565b005b6200032862000769565b6200033e62000ae1565b60405162000315919062004e4f565b602a54620003769074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff909116815260200162000315565b6200039662000b43565b60405162000315919062004eee565b602b54620003b9906001600160a01b031681565b6040516001600160a01b03909116815260200162000315565b6200033e62000c8b565b6200033e62000ceb565b620003fd620003f736600462004fed565b62000d4b565b6040516200031591906200505e565b620004406200041d36600462004e37565b60266020525f908152604090205463ffffffff8082169164010000000090041682565b6040805163ffffffff93841681529290911660208301520162000315565b6200046862000d62565b604051620003159190620050d0565b602154620004b39067ffffffffffffffff8116906801000000000000000081045f0b90690100000000000000000090046001600160a01b031683565b6040805167ffffffffffffffff90941684525f9290920b60208401526001600160a01b03169082015260600162000315565b6200032862000ee7565b620003b961081081565b620003b973333333333333333333333333333333333333333381565b6200051f62001231565b60405162000315919062005179565b602554620005439067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200162000315565b6200056762001306565b604051620003159190620051fd565b602a5462000376907801000000000000000000000000000000000000000000000000900463ffffffff1681565b602254620003b9906001600160a01b031681565b602354620003b9906001600160a01b031681565b6200056762001400565b6200051f620014fa565b620005e9620015cf565b604051901515815260200162000315565b620003b961080181565b602454620005439074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b620003b973f9e1815f151024bde4b7c10bac10e8ba9f6b53e181565b620003b9733a73033c0b1407574c76bdbac67f126f6b4a9aa981565b602954620003b9906001600160a01b031681565b602054620004b39067ffffffffffffffff8116906801000000000000000081045f0b90690100000000000000000090046001600160a01b031683565b602a54620003b9906001600160a01b031681565b602854620003b9906001600160a01b031681565b6200033e620016a3565b6200032862001703565b62000328620007063660046200528e565b62001adf565b601f54620005e99060ff1681565b602454620003b9906001600160a01b031681565b620007386200211f565b602580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001664174876e800179055565b602254602354602454620007ad926001600160a01b0390811692169074010000000000000000000000000000000000000000900467ffffffffffffffff1662002da8565b604080515f6020820181905281830192909252600560608201527f6572726f72000000000000000000000000000000000000000000000000000000608082015260a00160408051808303601f19018152919052602a546024546028549293505f9262000877928492740100000000000000000000000000000000000000009182900463ffffffff169291900467ffffffffffffffff16906001600160a01b03165b8660405160200162000862929190620052b7565b60405160208183030381529060405262002dbb565b602b546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015620008ea575f80fd5b505af1158015620008fd573d5f803e3d5ffd5b50506023546022546040517fd0a102600000000000000000000000000000000000000000000000000000000081526001600160a01b03928316945063d0a1026093506200095792909116905f9086903390600401620052de565b5f604051808303815f87803b1580156200096f575f80fd5b505af115801562000982573d5f803e3d5ffd5b50505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620009d3575f80fd5b505af1158015620009e6573d5f803e3d5ffd5b50506023546040517fa4e7f8bd0000000000000000000000000000000000000000000000000000000081525f6004820181905293508392506001600160a01b039091169063a4e7f8bd906024015f60405180830381865afa15801562000a4e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262000a7791908101906200543d565b602082015160285492945090925062000a99916001600160a01b031662002def565b604082015160245462000acf919074010000000000000000000000000000000000000000900467ffffffffffffffff1662002e6d565b62000adb815f62002e6d565b50505050565b6060601680548060200260200160405190810160405280929190818152602001828054801562000b3957602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162000b1a575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101562000c82575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562000c6a578382905f5260205f2001805462000bd89062005534565b80601f016020809104026020016040519081016040528092919081815260200182805462000c069062005534565b801562000c555780601f1062000c2b5761010080835404028352916020019162000c55565b820191905f5260205f20905b81548152906001019060200180831162000c3757829003601f168201915b50505050508152602001906001019062000bb8565b50505050815250508152602001906001019062000b66565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801562000b3957602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000b1a575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801562000b3957602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000b1a575050505050905090565b606062000d59838362002ec6565b90505b92915050565b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101562000c82578382905f5260205f2090600202016040518060400160405290815f8201805462000db89062005534565b80601f016020809104026020016040519081016040528092919081815260200182805462000de69062005534565b801562000e355780601f1062000e0b5761010080835404028352916020019162000e35565b820191905f5260205f20905b81548152906001019060200180831162000e1757829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801562000ece57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000e7a5790505b5050505050815250508152602001906001019062000d85565b60225460235460245462000f2b926001600160a01b0390811692169074010000000000000000000000000000000000000000900467ffffffffffffffff1662002da8565b604080516020810182525f808252602b5483517ff4844814000000000000000000000000000000000000000000000000000000008152935192936001600160a01b039091163192737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f4844814926004808201939182900301818387803b15801562000faa575f80fd5b505af115801562000fbd573d5f803e3d5ffd5b5050602b546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b15801562001031575f80fd5b505af115801562001044573d5f803e3d5ffd5b50506023546025546022546040517fd0a102600000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063d0a10260945067ffffffffffffffff90921692620010ad929116905f9088903390600401620052de565b5f604051808303818588803b158015620010c5575f80fd5b505af1158015620010d8573d5f803e3d5ffd5b5050505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200112a575f80fd5b505af11580156200113d573d5f803e3d5ffd5b50506022546023546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152620011fb9450911691506370a0823190602401602060405180830381865afa158015620011aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620011d0919062005587565b60245474010000000000000000000000000000000000000000900467ffffffffffffffff1662002e6d565b60235462001214906001600160a01b0316315f62002e6d565b602b546200122d906001600160a01b0316318262002e6d565b5050565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101562000c82578382905f5260205f20018054620012749062005534565b80601f0160208091040260200160405190810160405280929190818152602001828054620012a29062005534565b8015620012f15780601f10620012c757610100808354040283529160200191620012f1565b820191905f5260205f20905b815481529060010190602001808311620012d357829003601f168201915b50505050508152602001906001019062001254565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101562000c82575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620013e757602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620013935790505b5050505050815250508152602001906001019062001329565b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101562000c82575f8481526020908190206040805180820182526002860290920180546001600160a01b03168352600181018054835181870281018701909452808452939491938583019392830182828015620014e157602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116200148d5790505b5050505050815250508152602001906001019062001423565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101562000c82578382905f5260205f200180546200153d9062005534565b80601f01602080910402602001604051908101604052809291908181526020018280546200156b9062005534565b8015620015ba5780601f106200159057610100808354040283529160200191620015ba565b820191905f5260205f20905b8154815290600101906020018083116200159c57829003601f168201915b5050505050815260200190600101906200151d565b6008545f9060ff1615620015e7575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801562001676573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200169c919062005587565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801562000b3957602002820191905f5260205f209081546001600160a01b0316815260019091019060200180831162000b1a575050505050905090565b60225460235460245462001747926001600160a01b0390811692169074010000000000000000000000000000000000000000900467ffffffffffffffff1662002da8565b6025546040517f6c5d32a9000000000000000000000000000000000000000000000000000000008152602860048201525f9167ffffffffffffffff1690737109709ecfa91a80626ff3989d68f67f5b1dd12d90636c5d32a9906024015f60405180830381865afa158015620017be573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620017e791908101906200559f565b604051602001620017fa929190620055dd565b60408051808303601f19018152919052602a546024546028549293505f926200185d928492740100000000000000000000000000000000000000009182900463ffffffff169291900467ffffffffffffffff16906001600160a01b03166200084e565b602b546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015620018d0575f80fd5b505af1158015620018e3573d5f803e3d5ffd5b50506023546025546022546040517fd0a102600000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063d0a10260945067ffffffffffffffff909216926200194c929116905f9087903390600401620052de565b5f604051808303818588803b15801562001964575f80fd5b505af115801562001977573d5f803e3d5ffd5b5050505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015620019c9575f80fd5b505af1158015620019dc573d5f803e3d5ffd5b50506023546040517fa4e7f8bd0000000000000000000000000000000000000000000000000000000081525f6004820181905293508392506001600160a01b039091169063a4e7f8bd906024015f60405180830381865afa15801562001a44573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262001a6d91908101906200543d565b602082015160285492945090925062001a8f916001600160a01b031662002def565b604082015160245462001ac5919074010000000000000000000000000000000000000000900467ffffffffffffffff1662002e6d565b60255462000adb90829067ffffffffffffffff1662002e6d565b62001b1d8167ffffffffffffffff165f678ac7230489e8000067ffffffffffffffff62001b0d91906200562e565b67ffffffffffffffff1662002f12565b6024549091505f9062001b5490839074010000000000000000000000000000000000000000900467ffffffffffffffff1662005652565b60225460235467ffffffffffffffff92909216925062001b82916001600160a01b0391821691168362002da8565b5f737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b031663d5bee9f56040518163ffffffff1660e01b81526004016020604051808303815f875af115801562001bd5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001bfb919062005676565b6040517f2501ecee0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f602482015290915061081090632501ecee906044015f604051808303815f87803b15801562001c5e575f80fd5b505af115801562001c71573d5f803e3d5ffd5b50506020545f925062001c959150680100000000000000009004820b600a620057d5565b6020546024549192506108019163312f619f91690100000000000000000081046001600160a01b03169167ffffffffffffffff9182169162001cf3918791740100000000000000000000000000000000000000009091041662005812565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015267ffffffffffffffff91821660248401521660448201526064015f604051808303815f87803b15801562001d61575f80fd5b505af115801562001d74573d5f803e3d5ffd5b50506025546040805167ffffffffffffffff90921660208301526001600160a01b038616908201525f9250606001905060408051808303601f19018152919052602a546028549192505f9162001df79183917401000000000000000000000000000000000000000090910463ffffffff169088906001600160a01b03166200084e565b6022546040517f86b9620d0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906386b9620d906024015f604051808303815f87803b15801562001e6a575f80fd5b505af115801562001e7d573d5f803e3d5ffd5b50506023546040518881526001600160a01b03888116945090911691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3602b546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562001f37575f80fd5b505af115801562001f4a573d5f803e3d5ffd5b50506023546025546022546040517fd0a102600000000000000000000000000000000000000000000000000000000081526001600160a01b03938416955063d0a10260945067ffffffffffffffff9092169262001fb3929116905f9087903390600401620052de565b5f604051808303818588803b15801562001fcb575f80fd5b505af115801562001fde573d5f803e3d5ffd5b5050505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562002030575f80fd5b505af115801562002043573d5f803e3d5ffd5b50506023546200206192506001600160a01b03163190505f62002e6d565b60255462002085906001600160a01b038616319067ffffffffffffffff1662002e6d565b6022546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152620021179216906370a0823190602401602060405180830381865afa158015620020ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002110919062005587565b8662002e6d565b505050505050565b604080518082018252619ce18152619daa60208083019182526103e65f818152602680845294517f113a6407f23900cfa1ecac751a02199ded2b9291b7b61d7b3fc27cad18581d048054955163ffffffff9283167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000978816176401000000009184168202179091558751808901895261765d815261769f8187019081526103e780865298875290517f354415ee754a59ff734517214ff8c4e3c5311a1050a5d2254382ba8bdca2307680549251918516929098169190911792160217909355845180860186526104da8152610451818401908152828552602780855291517f81f48bd84279ade89ca0299913d9e40d06f4ae51ee08f3cd6f968120d220e10d8054925167ffffffffffffffff9283167fffffffffffffffffffffffffffffffff0000000000000000000000000000000094851617680100000000000000009184168202179091558851808a0190995260eb89526096898701908152979096529190935294517fcb63f41d83a6606379654c30ef8a1498bf816351aa303c37a41e329cc6e7a103805495519187169590931694909417939094169091029190911790554614801590620022f35750466103e714155b156200254b576040517ff877cb1900000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5250435f55524c5f48595045524c49515549440000000000000000000000000060448201525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb19906064015f60405180830381865afa1580156200238f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620023b8919081019062005828565b6040517f98680034000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906398680034906200240d9084906004016200505e565b6020604051808303815f875af19250505080156200244a575060408051601f3d908101601f19168201909252620024479181019062005587565b60015b6200254757620024c66040518060400160405280601081526020017f466f726b696e67206d61696e6e65742000000000000000000000000000000000815250826040518060400160405280600781526020017f206661696c65640000000000000000000000000000000000000000000000000081525062002f6a565b6040517fdd82d13e00000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd82d13e906024015f604051808303815f87803b1580156200252a575f80fd5b505af11580156200253d573d5f803e3d5ffd5b5050505062002549565b505b505b737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b031663b4d6c7826108016040516200257f9062004d83565b604051809103905ff08015801562002599573d5f803e3d5ffd5b506001600160a01b0316803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b8152600401620025dd92919062005872565b5f604051808303815f87803b158015620025f5575f80fd5b505af115801562002608573d5f803e3d5ffd5b50505050737109709ecfa91a80626ff3989d68f67f5b1dd12d6001600160a01b031663b4d6c782610810604051620026409062004d91565b604051809103905ff0801580156200265a573d5f803e3d5ffd5b506001600160a01b0316803b806020016040519081016040528181525f908060200190933c6040518363ffffffff1660e01b81526004016200269e92919062005872565b5f604051808303815f87803b158015620026b6575f80fd5b505af1158015620026c9573d5f803e3d5ffd5b50505050466103e614620026f257733a73033c0b1407574c76bdbac67f126f6b4a9aa962002708565b73f9e1815f151024bde4b7c10bac10e8ba9f6b53e15b602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055465f8181526026602090815260408083208054602a80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff811663ffffffff9384167401000000000000000000000000000000000000000002908117835593547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff9091167fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff9094169390931764010000000090930490911678010000000000000000000000000000000000000000000000000291909117905560278252918290205482516060810190935267ffffffffffffffff80821680855294680100000000000000009092041692918201906103e6146200285f57600a62002862565b60095b5f0b8152602001620028748462002fe3565b6001600160a01b039081169091528151602080548482015160409586015185166901000000000000000000027fffffff0000000000000000000000000000000000000000ffffffffffffffffff60ff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000093841667ffffffffffffffff968716171782161783558551606081018752938716808552600a9385019390935273222222222222222222222222222222222222222293860193909352602180547c2222222222222222222222222222222222222222000000000000000000680a00000000000000009190931690931792909217909216919091179055602b5491519116903390620029909062004d9f565b6200299d92919062005895565b604051809103905ff080158015620029b7573d5f803e3d5ffd5b50602280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905560205460405167ffffffffffffffff8216916801000000000000000090045f0b9062002a1b9062004dad565b6001600160a01b03909316835267ffffffffffffffff90911660208301525f0b6040820152606001604051809103905ff08015801562002a5d573d5f803e3d5ffd5b50602380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905560405162002aa49062004dbb565b604051809103905ff08015801562002abe573d5f803e3d5ffd5b50602480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283161781556020546040517f312f619f00000000000000000000000000000000000000000000000000000000815269010000000000000000008204909316600484015267ffffffffffffffff9081169183019190915260448201526108019063312f619f906064015f604051808303815f87803b15801562002b6e575f80fd5b505af115801562002b81573d5f803e3d5ffd5b50506021546040517f312f619f0000000000000000000000000000000000000000000000000000000081526001600160a01b036901000000000000000000830416600482015267ffffffffffffffff91821660248201526044810191909152610801925063312f619f91506064015f604051808303815f87803b15801562002c07575f80fd5b505af115801562002c1a573d5f803e3d5ffd5b50506028546040517f2501ecee0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152600160248201526108109250632501ecee91506044015f604051808303815f87803b15801562002c83575f80fd5b505af115801562002c96573d5f803e3d5ffd5b50506029546040517f2501ecee0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152600160248201526108109250632501ecee91506044015f604051808303815f87803b15801562002cff575f80fd5b505af115801562002d12573d5f803e3d5ffd5b5050602b546040517fc88a5e6d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015268056bc75e2d631000006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c88a5e6d91506044015f604051808303815f87803b15801562002d95575f80fd5b505af115801562002117573d5f803e3d5ffd5b62002db68383835f6200300e565b505050565b60608484848460405160200162002dd6949392919062005932565b6040516020818303038152906040529050949350505050565b6040517f7c84c69b0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d90637c84c69b906044015b5f6040518083038186803b15801562002e5a575f80fd5b505afa15801562002117573d5f803e3d5ffd5b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440162002e43565b606062002ed782604c8186620059b1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929695505050505050565b5f62002f2084848462003297565b905062002f636040518060400160405280600c81526020017f426f756e6420726573756c74000000000000000000000000000000000000000081525082620034fa565b9392505050565b62002db683838360405160240162002f8593929190620059da565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2ced7cef0000000000000000000000000000000000000000000000000000000017905262003571565b5f62000d5c67ffffffffffffffff831673200000000000000000000000000000000000000062005a22565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905291515f92871691620030919162005a38565b5f60405180830381855afa9150503d805f8114620030cb576040519150601f19603f3d011682016040523d82523d5f602084013e620030d0565b606091505b509150505f81806020019051810190620030eb919062005587565b90506200313e846200313787620031307f70a082310000000000000000000000000000000000000000000000000000000062003129600d8d62003586565b90620035c3565b90620035fb565b9062003626565b8215620021175760408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f18160ddd0000000000000000000000000000000000000000000000000000000017905290515f916001600160a01b03891691620031b6919062005a38565b5f60405180830381855afa9150503d805f8114620031f0576040519150601f19603f3d011682016040523d82523d5f602084013e620031f5565b606091505b509150505f8180602001905181019062003210919062005587565b9050828610156200323b5762003227868462005a55565b62003233908262005a55565b905062003256565b62003247838762005a55565b62003253908262005a22565b90505b6200328d81620031377f18160ddd0000000000000000000000000000000000000000000000000000000062003129600d8d62003586565b5050505050505050565b5f818311156200332e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e000060648201526084015b60405180910390fd5b8284101580156200333f5750818411155b156200334d57508262002f63565b5f6200335a848462005a55565b6200336790600162005a22565b9050600385111580156200337a57508481115b1562003395576200338c858562005a22565b91505062002f63565b620033c260037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62005a55565b8510158015620033fc5750620033f9857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62005a55565b81115b156200343a576200342e857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62005a55565b6200338c908462005a55565b8285111562003499575f62003450848762005a55565b90505f6200345f838362005a6b565b9050805f03620034755784935050505062002f63565b600162003483828862005a22565b6200348f919062005a55565b93505050620034f2565b83851015620034f2575f620034af868662005a55565b90505f620034be838362005a6b565b9050805f03620034d45785935050505062002f63565b620034e0818662005a55565b620034ed90600162005a22565b935050505b509392505050565b6200122d82826040516024016200351392919062005a81565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb60e72cc0000000000000000000000000000000000000000000000000000000017905262003632565b6200358381620036415b63ffffffff16565b50565b6004820180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555f8262000d59565b6002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e083901c1790555f8262000d59565b6001808301805491820181555f908152602081206001600160a01b0384169201919091558262000d59565b6200122d828262003660565b620035838162003bc36200357b565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6004820154600283015460038401546001600160a01b039092169160e09190911b905f6200368e8662003be3565b6001600160a01b0385165f908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000881684528252808320905193945092620036e691859187910162005aa4565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff16620037245762003722865f62003cfb565b505b6001600160a01b0384165f908152602087815260408083207fffffffff000000000000000000000000000000000000000000000000000000008716845282528083209051909183916200377c91869188910162005aa4565b6040516020818303038152906040528051906020012081526020019081526020015f2090505f81600201548260010154620037b8919062005a22565b1115620038e7575f81600201548260010154620037d6919062005a22565b620037e49061010062005a55565b620037f190600262005ac7565b6040517f6900a3ae0000000000000000000000000000000000000000000000000000000081526004810182905290915081881090737109709ecfa91a80626ff3989d68f67f5b1dd12d90636900a3ae906024015f60405180830381865afa1580156200385f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262003888919081019062005828565b6040516020016200389a919062005ad4565b60405160208183030381529060405290620038e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200332591906200505e565b50505b80546040517f667f9d700000000000000000000000000000000000000000000000000000000081526001600160a01b038716600482015260248101919091525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063667f9d7090604401602060405180830381865afa15801562003963573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062003989919062005587565b60018381015460028501549293505f92908101610100039190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b1983169089901b1783546040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038a166004820152602481019190915260448101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b15801562003a50575f80fd5b505af115801562003a63573d5f803e3d5ffd5b505050505f8062003a748b62003d10565b9150915081158062003a865750898114155b1562003bab5784546040517f70ca10bb0000000000000000000000000000000000000000000000000000000081526001600160a01b038b166004820152602481019190915260448101859052737109709ecfa91a80626ff3989d68f67f5b1dd12d906370ca10bb906064015f604051808303815f87803b15801562003b09575f80fd5b505af115801562003b1c573d5f803e3d5ffd5b50506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f73746453746f726167652066696e642853746453746f72616765293a2046616960448201527f6c656420746f2077726974652076616c75652e0000000000000000000000000060648201526084019150620033259050565b62003bb68b62003de1565b5050505050505050505050565b80516a636f6e736f6c652e6c6f67602083015f808483855afa5050505050565b606081600701805462003bf69062005534565b90505f0362003c5c5762000d5c8260010180548060200260200160405190810160405280929190818152602001828054801562003c5157602002820191905f5260205f20905b81548152602001906001019080831162003c3c575b505050505062003dec565b81600701805462003c6d9062005534565b80601f016020809104026020016040519081016040528092919081815260200182805462003c9b9062005534565b801562003cea5780601f1062003cc05761010080835404028352916020019162003cea565b820191905f5260205f20905b81548152906001019060200180831162003ccc57829003601f168201915b50505050509050919050565b919050565b5f62003d08838362003e90565b549392505050565b60028101545f908190819060e01b62003d298562003be3565b60405160200162003d3c92919062005b66565b60408051601f198184030181529082905260048601549092505f9182916001600160a01b03169062003d7090859062005a38565b5f60405180830381855afa9150503d805f811462003daa576040519150601f19603f3d011682016040523d82523d5f602084013e62003daf565b606091505b50915091505f62003dd3828860030154602062003dcd919062005baf565b6200474e565b929792965091945050505050565b6200358381620047e1565b60605f8251602062003dff919062005baf565b67ffffffffffffffff81111562003e1a5762003e1a62005326565b6040519080825280601f01601f19166020018201604052801562003e45576020820181803683370190505b5090505f5b835181101562003e89575f84828151811062003e6a5762003e6a62005bc9565b6020908102919091018101518382028501909101525060010162003e4a565b5092915050565b6004820154600283015460038401545f926001600160a01b03169160e01b908362003ebb8762003be3565b6001600160a01b0385165f908152602089815260408083207fffffffff0000000000000000000000000000000000000000000000000000000088168452825280832090519394509262003f1391859187910162005aa4565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff161562003fdc57851562003f565762003f5687620047e1565b6001600160a01b0384165f908152602088815260408083207fffffffff00000000000000000000000000000000000000000000000000000000871684528252808320905190929162003fad91859187910162005aa4565b6040516020818303038152906040528051906020012081526020019081526020015f2094505050505062000d5c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b031663266cf1096040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562004037575f80fd5b505af11580156200404a573d5f803e3d5ffd5b505050505f6200405a8862003d10565b6040517f65bc94810000000000000000000000000000000000000000000000000000000081526001600160a01b03881660048201529092505f9150737109709ecfa91a80626ff3989d68f67f5b1dd12d906365bc9481906024015f604051808303815f875af1158015620040d0573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620040f9919081019062005c7c565b50905080515f036200419057604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f73746453746f726167652066696e642853746453746f72616765293a204e6f2060448201527f73746f726167652075736520646574656374656420666f72207461726765742e606482015260840162003325565b80515b5f6200419f8262005ce3565b91508110620045a3575f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b031663667f9d7089858581518110620041f057620041f062005bc9565b60200260200101516040518363ffffffff1660e01b81526004016200422a9291906001600160a01b03929092168252602082015260400190565b602060405180830381865afa15801562004246573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200426c919062005587565b905080620042d6577f080fc4a96620c4462e705b23f346413fe3796bb63c6f8d8591baec0e231577a588848481518110620042ab57620042ab62005bc9565b602090810291909101810151604080516001600160a01b039094168452918301520160405180910390a15b620042fe8b848481518110620042f057620042f062005bc9565b602002602001015162004886565b6200430a575062004193565b60068b01545f90819060ff16156200435e575f620043458e87878151811062004337576200433762005bc9565b602002602001015162004ad6565b90945092509050806200435c575050505062004193565b505b6001828201610100031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01811b8316811c868114620043a2575050505062004193565b7f9c9555b1e3102e3cf48f427d79cb678f5d9bd1ed0ad574389461e255f95170ed8b8b8a8c604051602001620043da92919062005aa4565b6040516020818303038152906040528051906020012089898151811062004405576200440562005bc9565b602090810291909101810151604080516001600160a01b0390961686527fffffffff000000000000000000000000000000000000000000000000000000009094169185019190915291830152606082015260800160405180910390a1604051806080016040528087878151811062004481576200448162005bc9565b60200260200101515f1c8152602001848152602001838152602001600115158152508e5f015f8d6001600160a01b03166001600160a01b031681526020019081526020015f205f8c7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020015f205f8a8c6040516020016200452a92919062005aa4565b60408051808303601f1901815291815281516020928301208352828201939093529082015f2083518155908301516001820155908201516002820155606090910151600390910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055505050505b506001600160a01b0386165f90815260208a815260408083207fffffffff000000000000000000000000000000000000000000000000000000008916845282528083209051909291620045fb91879189910162005aa4565b60408051601f198184030181529181528151602092830120835290820192909252015f206003015460ff16620046b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f73746453746f726167652066696e642853746453746f72616765293a20536c6f60448201527f74287329206e6f7420666f756e642e0000000000000000000000000000000000606482015260840162003325565b8715620046c657620046c689620047e1565b6001600160a01b0386165f90815260208a815260408083207fffffffff0000000000000000000000000000000000000000000000000000000089168452825280832090519092916200471d91879189910162005aa4565b6040516020818303038152906040528051906020012081526020019081526020015f209650505050505050