0 txs
0 calls
constructor
constructor(string _suffix)
functions
bridgeContract
viewfunction bridgeContract() view returns (address)
bridgedTokenAddress
viewfunction bridgedTokenAddress(address _nativeToken) view returns (address)
getBridgeInterfacesVersion
purefunction getBridgeInterfacesVersion() pure returns (uint64 major, uint64 minor, uint64 patch)
getBridgeMode
purefunction getBridgeMode() pure returns (bytes4 _data)
isBridgedTokenDeployAcknowledged
viewfunction isBridgedTokenDeployAcknowledged(address _token) view returns (bool)
isInitialized
viewfunction isInitialized() view returns (bool)
isRegisteredAsNativeToken
viewfunction isRegisteredAsNativeToken(address _token) view returns (bool)
isTokenBridgingAllowed
viewfunction isTokenBridgingAllowed(address _token) view returns (bool)
isTokenExecutionAllowed
viewfunction isTokenExecutionAllowed(address _token) view returns (bool)
isTokenRegistered
viewfunction isTokenRegistered(address _token) view returns (bool)
mediatorContractOnOtherSide
viewfunction mediatorContractOnOtherSide() view returns (address)
mediatorOwns
viewfunction mediatorOwns(address _token, uint256 _tokenId) view returns (uint256 amount)
messageFixed
viewfunction messageFixed(bytes32 _messageId) view returns (bool)
nativeTokenAddress
viewfunction nativeTokenAddress(address _bridgedToken) view returns (address)
owner
viewfunction owner() view returns (address)
requestGasLimit
viewfunction requestGasLimit() view returns (uint256)
tokenImageERC1155
viewfunction tokenImageERC1155() view returns (address)
tokenImageERC721
viewfunction tokenImageERC721() view returns (address)
deployAndHandleBridgedNFT
nonpayablefunction deployAndHandleBridgedNFT(address _token, string _name, string _symbol, address _recipient, uint256[] _tokenIds, uint256[] _values, string[] _tokenURIs)
disableTokenBridging
nonpayablefunction disableTokenBridging(address _token, bool _disable)
disableTokenExecution
nonpayablefunction disableTokenExecution(address _token, bool _disable)
fixFailedMessage
nonpayablefunction fixFailedMessage(bytes32 _messageId, address _token, address _sender, uint256[] _tokenIds, uint256[] _values)
fixMediatorBalanceERC1155
nonpayablefunction fixMediatorBalanceERC1155(address _token, address _receiver, uint256[] _tokenIds, uint256[] _values)
fixMediatorBalanceERC721
nonpayablefunction fixMediatorBalanceERC721(address _token, address _receiver, uint256[] _tokenIds)
handleBridgedNFT
nonpayablefunction handleBridgedNFT(address _token, address _recipient, uint256[] _tokenIds, uint256[] _values, string[] _tokenURIs)
handleNativeNFT
nonpayablefunction handleNativeNFT(address _token, address _recipient, uint256[] _tokenIds, uint256[] _values)
initialize
nonpayablefunction initialize(address _bridgeContract, address _mediatorContract, uint256 _requestGasLimit, address _owner, address _imageERC721, address _imageERC1155) returns (bool)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address _from, uint256[] _tokenIds, uint256[] _values, bytes _data) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address _from, uint256 _tokenId, uint256 _value, bytes _data) returns (bytes4)
onERC721Received
nonpayablefunction onERC721Received(address, address _from, uint256 _tokenId, bytes _data) returns (bytes4)
relayToken
nonpayablefunction relayToken(address token, address _receiver, uint256 _tokenId)
relayToken
nonpayablefunction relayToken(address token, uint256 _tokenId)
requestFailedMessageFix
nonpayablefunction requestFailedMessageFix(bytes32 _messageId, address _token, address _sender, uint256[] _tokenIds, uint256[] _values)
setBridgeContract
nonpayablefunction setBridgeContract(address _bridgeContract)
setCustomMetadata
nonpayablefunction setCustomMetadata(address _token, string _name, string _symbol)
setCustomTokenAddressPair
nonpayablefunction setCustomTokenAddressPair(address _nativeToken, address _bridgedToken)
setMediatorContractOnOtherSide
nonpayablefunction setMediatorContractOnOtherSide(address _mediatorContract)
setRequestGasLimit
nonpayablefunction setRequestGasLimit(uint256 _gasLimit)
setTokenImageERC1155
nonpayablefunction setTokenImageERC1155(address _image)
setTokenImageERC721
nonpayablefunction setTokenImageERC721(address _image)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
FailedMessageFixed
event FailedMessageFixed(bytes32 indexed messageId, address token)
NewTokenRegistered
event NewTokenRegistered(address indexed nativeToken, address indexed bridgedToken)
OwnershipTransferred
event OwnershipTransferred(address previousOwner, address newOwner)
TokenBridgingDisabled
event TokenBridgingDisabled(address indexed token, bool disabled)
TokenExecutionDisabled
event TokenExecutionDisabled(address indexed token, bool disabled)
TokensBridged
event TokensBridged(address indexed token, address indexed recipient, uint256[] tokenIds, uint256[] values, bytes32 indexed messageId)
TokensBridgingInitiated
event TokensBridgingInitiated(address indexed token, address indexed sender, uint256[] tokenIds, uint256[] values, bytes32 indexed messageId)
errors
No errors.
creation bytecode
0x60c06040523480156200001157600080fd5b506040516200562938038062005629833981016040819052620000349162000058565b806020815111156200004557600080fd5b602081015160a052516080525062000117565b600060208083850312156200006b578182fd5b82516001600160401b038082111562000082578384fd5b818501915085601f83011262000096578384fd5b815181811115620000a357fe5b604051601f8201601f1916810185018381118282101715620000c157fe5b6040528181528382018501881015620000d8578586fd5b8592505b81831015620000fb5783830185015181840186015291840191620000dc565b818311156200010c57858583830101525b979650505050505050565b60805160a0516154ee6200013b60003980612e70525080612eb652506154ee6000f3fe60806040523480156200001157600080fd5b50600436106200028c5760003560e01c80639cb7595a1162000165578063cd59658311620000d5578063f2fde38b1162000093578063f2fde38b1462000599578063f3b8379114620005b0578063f4ec76d914620005c7578063f92d746814620005de578063fb0a6f3014620005f5578063ff9935cb146200060c576200028c565b8063cd5965831462000533578063d79ca76e146200053d578063e1e5e8031462000554578063e853177b146200056b578063f23a6e611462000582576200028c565b8063b7dbbf871162000123578063b7dbbf8714620004be578063bc197c8114620004d5578063be3b625b14620004ec578063c2173d431462000505578063cba002b9146200051c576200028c565b80639cb7595a14620004545780639dd9cde0146200046f578063a5bd29421462000479578063ae813e9f1462000490578063b701e09414620004a7576200028c565b80634ce5cff411620002015780636e5d6bea11620001bf5780636e5d6bea14620004085780637996ad31146200041f578063871c076014620004365780638da5cb5b146200044057806399a935fc146200044a576200028c565b80634ce5cff414620003955780635933998214620003ac57806361c04f8414620003c35780636ca4835714620003da5780636cb4497214620003f1576200028c565b806328f43667116200024f57806328f43667146200032d5780632d70061f1462000344578063392e53cd146200036a578063437764df14620003745780634b92d874146200037e576200028c565b80630b26cf6614620002915780630b71a4a714620002aa578063150b7a0214620002c157806326aa101f14620002f0578063276fea8a1462000316575b600080fd5b620002a8620002a236600462003ce6565b62000623565b005b620002a8620002bb36600462003d24565b62000659565b620002d8620002d236600462004066565b620006dd565b604051620002e791906200491d565b60405180910390f35b620003076200030136600462003ce6565b6200076d565b604051620002e7919062004912565b620002a86200032736600462004413565b620007a2565b620002a86200033e36600462003ce6565b62000845565b6200035b6200035536600462003ce6565b62000878565b604051620002e791906200460c565b62000307620008de565b620002d86200092f565b620002a86200038f36600462003ce6565b6200093a565b62000307620003a636600462003ce6565b6200096d565b62000307620003bd3660046200433b565b62000a04565b6200035b620003d436600462003ce6565b62000a57565b620002a8620003eb36600462003dcb565b62000ac0565b620002a8620004023660046200414d565b62000b06565b620002a86200041936600462003ce6565b62000c01565b620002a86200043036600462003dcb565b62000c34565b6200035b62000de0565b6200035b62000e37565b6200035b62000e8e565b6200045e62000ee5565b604051620002e79392919062004971565b6200035b62000ef0565b620002a86200048a3660046200436d565b62000f47565b62000307620004a136600462003ce6565b62001212565b620002a8620004b836600462003e67565b62001270565b620002a8620004cf3660046200430d565b620012b5565b620002d8620004e636600462003f2f565b620012c2565b620004f6620013a9565b604051620002e7919062004932565b620003076200051636600462003ce6565b620013f7565b620004f66200052d3660046200430d565b62001454565b6200035b6200146c565b620002a86200054e366004620044ad565b620014c3565b620002a86200056536600462004182565b620014d5565b620002a86200057c36600462003d61565b620015bf565b620002d862000593366004620040de565b62001708565b620002a8620005aa36600462003ce6565b62001786565b620002a8620005c13660046200433b565b620017b9565b62000307620005d836600462003ce6565b620017ec565b620002a8620005ef366004620041f9565b6200187b565b620002a8620006063660046200414d565b620019b8565b620003076200061d36600462003fe3565b62001ab2565b6200062d62000e37565b6001600160a01b0316336001600160a01b0316146200064b57600080fd5b620006568162001c47565b50565b6200066362000e37565b6001600160a01b0316336001600160a01b0316146200068157600080fd5b6200068c8162001cc6565b6200069657600080fd5b620006a1816200076d565b15620006ac57600080fd5b6000620006b98362000878565b6001600160a01b031614620006cd57600080fd5b620006d9828262001ccc565b5050565b6000620006e962001dc7565b6200075657620007563386620007368887878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062001dec92505050565b620007418862001e19565b60408051600081526020810190915262001e5e565b506001600160e01b03196000351695945050505050565b60006200077a82620013f7565b806200079a575060006200078e8362000a57565b6001600160a01b031614155b90505b919050565b620007ac62001eb8565b620007b78562000a04565b15620007c257600080fd5b620007d08484848462001f6b565b620007db8662002049565b14620007e657600080fd5b620007f1856200209b565b620007ff84848484620020f4565b604080516001600160a01b0386168152905186917f1bc59e60074130cba06acb3689c8b1578e753b0ee7f1471c7b9b297fdbd43279919081900360200190a25050505050565b6200084f62000e37565b6001600160a01b0316336001600160a01b0316146200086d57600080fd5b62000656816200211f565b604080516f686f6d65546f6b656e4164647265737360801b60208083019190915260609390931b6001600160601b03191660308201528151808203602401815260449091018252805190830120600090815260029092529020546001600160a01b031690565b7f0a6f646cd611241d8073675e00d1a1ff700fbf1b53fcf473de56d1e6e4b714ba60005260046020527f078d888f9b66f3f8bfa10909e31f1e16240db73449f0500afdbbe3a70da457cc5460ff1690565b63329ff0f760e21b90565b6200094462000e37565b6001600160a01b0316336001600160a01b0316146200096257600080fd5b62000656816200219e565b6040805170195e1958dd5d1a5bdb911a5cd8589b1959607a1b6020808301919091526001600160601b0319606085901b1660318301528251602581840301815260459092018352815191810191909120600090815260049091529081205460ff168080620009e257506001600160a01b038316155b15620009f1571590506200079d565b620009fd60006200096d565b9392505050565b604080516b1b595cdcd859d9519a5e195960a21b602080830191909152602c80830185905283518084039091018152604c909201835281519181019190912060009081526004909152205460ff16919050565b6040805172666f726569676e546f6b656e4164647265737360681b60208083019190915260609390931b6001600160601b03191660338201528151808203602701815260479091018252805190830120600090815260029092529020546001600160a01b031690565b62000aca62001eb8565b62000ad586620013f7565b62000adf57600080fd5b62000aec8660026200221d565b62000afe8660018787878787620022d8565b505050505050565b62000b1062000e37565b6001600160a01b0316336001600160a01b03161462000b2e57600080fd5b6001600160a01b038216158062000b4b575062000b4b826200076d565b62000b5557600080fd5b6040805170195e1958dd5d1a5bdb911a5cd8589b1959607a1b6020808301919091526001600160601b0319606086901b16603183015282516025818403018152604583018085528151918301919091206000908152600490925290839020805485151560ff199091168117909155905290516001600160a01b038416917f7eaed571869fda346fbb60c26259a8598b4943b8e15079704be1a499d7729055919081900360650190a25050565b62000c0b62000e37565b6001600160a01b0316336001600160a01b03161462000c2957600080fd5b6200065681620023c5565b306001600160a01b0316636fde82026040518163ffffffff1660e01b815260040160206040518083038186803b15801562000c6e57600080fd5b505afa15801562000c83573d6000803e3d6000fd5b505050506040513d602081101562000c9a57600080fd5b50516001600160a01b0316331462000cb157600080fd5b62000cbc86620013f7565b62000cc657600080fd5b82811462000cd357600080fd5b8262000cde57600080fd5b606062000d51878787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a9250899182918501908490808284376000920191909152506200242f92505050565b9050600062000d6282600162002a12565b905062000dd681898989898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525062002ab792505050565b5050505050505050565b7f98aa806e31e94a687a31c65769cb99670064dd7f5a87526da075c5fb4eab988060005260026020527f0c1206883be66049a02d4937078367c00b3d71dd1a9465df969363c6ddeac96d546001600160a01b031690565b7f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060005260026020527fb7802e97e87ef2842a6cce7da7ffaeaedaa2f61a6a7870b23d9d01fc9b73712e546001600160a01b031690565b7f02e1d283efd236e8b97cefe072f0c863fa2db9f9ba42b0eca53ab31c49067a6760005260026020527f953ab8a758dd553cc38f793a1da5659c9dc6ef69c086214f73ad0b17e262b031546001600160a01b031690565b600360016000909192565b7f20b8ca26cc94f39fab299954184cf3a9bd04f69543e4f454fab299f015b8130f60005260026020527f0c25bd6cb8545e46227bc56e841bd085538c74351fb22e98acdfbe596b353cfb546001600160a01b031690565b8262000f5257600080fd5b80158062000f5f57508281145b62000f6957600080fd5b600062000f756200146c565b9050806001600160a01b031663cb08a10c896040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562000fbc57600080fd5b505afa15801562000fd1573d6000803e3d6000fd5b505050506040513d602081101562000fe857600080fd5b50511562000ff557600080fd5b306001600160a01b0316816001600160a01b0316633f9a8e7e8a6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156200104457600080fd5b505afa15801562001059573d6000803e3d6000fd5b505050506040513d60208110156200107057600080fd5b50516001600160a01b0316146200108657600080fd5b6200109062000de0565b6001600160a01b0316816001600160a01b0316634a610b048a6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015620010de57600080fd5b505afa158015620010f3573d6000803e3d6000fd5b505050506040513d60208110156200110a57600080fd5b50516001600160a01b0316146200112057600080fd5b606063276fea8a60e01b8989898989898960405160240180888152602001876001600160a01b03168152602001866001600160a01b0316815260200180602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600081840152601f19601f8201169050808301925050509950505050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506200120681600062002a12565b50505050505050505050565b604080516e1d1bdad95b949959da5cdd195c9959608a1b60208083019190915260609390931b6001600160601b031916602f820152815180820360230181526043909101825280519083012060009081529182905290205460021490565b6200127a62001eb8565b6000620012878962000878565b90506200129b8160008a8a8a8a8a620022d8565b620012aa818888868662002b3c565b505050505050505050565b620006d982338362002c16565b6000858414620012d157600080fd5b85620012dc57600080fd5b6200138f3389620013248b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062001dec92505050565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525062001e5e92505050565b506001600160e01b03196000351698975050505050505050565b7f2dfd6c9f781bb6bbb5369c114e949b69ebb440ef3d4dd6b2836225eb1dc3a2be60009081526020527f2de0d2cdc19d356cb53b5984f91bfd3b31fe0c678a0d190a6db39274bb34753f5490565b604080516e1d1bdad95b949959da5cdd195c9959608a1b60208083019190915260609390931b6001600160601b031916602f8201528151808203602301815260439091018252805190830120600090815291829052902054151590565b60008062001463848462002cc3565b54949350505050565b7f811bbb11e8899da471f0e69a3ed55090fc90215227fc5fb1cb0d6e962ea7b74f60005260026020527fb4ed64697d3ef8518241966f7c6f28b0d72f20f51198717d198d2d55076c593d546001600160a01b031690565b620014d083838362002c16565b505050565b620014df62000e37565b6001600160a01b0316336001600160a01b031614620014fd57600080fd5b6040805169637573746f6d4e616d6560b01b6020808301919091526001600160601b0319606089901b16602a8301528251601e818403018152603e909201835281519181019190912060009081526001909152206200155e90858562003a95565b50604080516b18dd5cdd1bdb54de5b589bdb60a21b6020808301919091526001600160601b0319606089901b16602c8301528251808303820181529183018352815191810191909120600090815260019091522062000afe90838362003a95565b306001600160a01b0316636fde82026040518163ffffffff1660e01b815260040160206040518083038186803b158015620015f957600080fd5b505afa1580156200160e573d6000803e3d6000fd5b505050506040513d60208110156200162557600080fd5b50516001600160a01b031633146200163c57600080fd5b6200164784620013f7565b6200165157600080fd5b806200165c57600080fd5b60408051600081526020838102808301840184529082018481529192606092620016a99289928992918991899182918a01908490808284376000920191909152508892506200242f915050565b90506000620016ba82600162002a12565b9050620016ff8188888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925062002ab7915050565b50505050505050565b60006200176e3387620017528987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062001dec92505050565b6200175d8962001e19565b620017688962001e19565b62001e5e565b506001600160e01b0319600035169695505050505050565b6200179062000e37565b6001600160a01b0316336001600160a01b031614620017ae57600080fd5b620006568162002d3b565b620017c362000e37565b6001600160a01b0316336001600160a01b031614620017e157600080fd5b620006568162002e06565b604080516f189c9a5919da5b99d11a5cd8589b195960821b6020808301919091526001600160601b0319606085901b1660308301528251602481840301815260449092018352815191810191909120600090815260049091529081205460ff1680806200186057506001600160a01b038316155b156200186f571590506200079d565b620009fd6000620017ec565b6200188562001eb8565b6000620018928b62000878565b90506001600160a01b0381166200198a578951620018c657885115620018c057620018bd8962002e6a565b99505b620018df565b8851620018d1578998505b620018dc8a62002e6a565b99505b836200193357620018ef62000ef0565b8a8a30604051620019009062003b2a565b6200190f9493929190620047c7565b604051809103906000f0801580156200192c573d6000803e3d6000fd5b506200197c565b6200193d62000e8e565b8a8a306040516200194e9062003b38565b6200195d9493929190620047c7565b604051809103906000f0801580156200197a573d6000803e3d6000fd5b505b90506200198a8b8262001ccc565b6200199c8160008a8a8a8a8a620022d8565b620019ab818888868662002b3c565b5050505050505050505050565b620019c262000e37565b6001600160a01b0316336001600160a01b031614620019e057600080fd5b6001600160a01b0382161580620019fd5750620019fd826200076d565b62001a0757600080fd5b604080516f189c9a5919da5b99d11a5cd8589b195960821b6020808301919091526001600160601b0319606086901b16603083015282516024818403018152604483018085528151918301919091206000908152600490925290839020805485151560ff199091168117909155905290516001600160a01b038416917fbeecfafc3eb3de7b89bd034a6a32944da5b2e4972cc6875eaa57b0727642188f919081900360640190a25050565b60408051600481526024810182526020810180516001600160e01b03166337ef410160e11b1781529151815160009384936060933093919290918291908083835b6020831062001b145780518252601f19909201916020918201910162001af3565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811462001b76576040519150601f19603f3d011682016040523d82523d6000602084013e62001b7b565b606091505b509150915081158062001bba57508051602014801562001bba575080806020019051602081101562001bac57600080fd5b50516001600160a01b031633145b8062001bc557503330145b62001bcf57600080fd5b62001bd9620008de565b1562001be457600080fd5b62001bef8962001c47565b62001bfa88620023c5565b62001c058762002e06565b62001c108662002d3b565b62001c1b856200211f565b62001c26846200219e565b62001c3062002edf565b62001c3a620008de565b9998505050505050505050565b62001c528162001cc6565b62001c5c57600080fd5b7f811bbb11e8899da471f0e69a3ed55090fc90215227fc5fb1cb0d6e962ea7b74f60005260026020527fb4ed64697d3ef8518241966f7c6f28b0d72f20f51198717d198d2d55076c593d80546001600160a01b0319166001600160a01b0392909216919091179055565b3b151590565b604080516f686f6d65546f6b656e4164647265737360801b6020808301919091526001600160601b0319606086811b82166030850152845160248186030181526044850186528051908401206000908152600280855286822080546001600160a01b03808b166001600160a01b0319928316811790935572666f726569676e546f6b656e4164647265737360681b60648a0152948a901b90951660778801528751606b818903018152608b909701808952875197870197909720835294529485208054909216908716908117909155909290917f78d063210f4fb6b4cc932390bb8045fa2465e51349590182dab8b9e84c57a6ee9190a35050565b7f6168652c307c1e813ca11cfb3a601f1cf3b22452021a5052d8b05f1f1f8a3e925490565b805182901562001e1357815160141462001e0557600080fd5b62001e108262002f36565b90505b92915050565b60408051600180825281830190925260609182919060208083019080368337019050509050828160008151811062001e4d57fe5b602090810291909101015292915050565b62001e69856200076d565b62001e7b5762001e7b8560016200221d565b606062001e8b868585856200242f565b9050600062001ea78262001ea189898962002f3d565b62002a12565b9050620016ff818888878762002ab7565b600062001ec46200146c565b9050336001600160a01b0382161462001edc57600080fd5b62001ee662000de0565b6001600160a01b0316816001600160a01b031663d67bdd256040518163ffffffff1660e01b815260040160206040518083038186803b15801562001f2957600080fd5b505afa15801562001f3e573d6000803e3d6000fd5b505050506040513d602081101562001f5557600080fd5b50516001600160a01b0316146200065657600080fd5b60008484848460405160200180856001600160a01b03168152602001846001600160a01b031681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101562001fd857818101518382015260200162001fbe565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156200201957818101518382015260200162001fff565b5050505090500196505050505050506040516020818303038152906040528051906020012090505b949350505050565b604080516e6d657373616765436865636b73756d60881b602080830191909152602f80830185905283518084039091018152604f90920183528151918101919091206000908152908190522054919050565b604080516b1b595cdcd859d9519a5e195960a21b602080830191909152602c8083019490945282518083039094018452604c9091018252825192810192909220600090815260049092529020805460ff19166001179055565b62002119846000620021068262000a57565b6001600160a01b03161485858562002f46565b50505050565b6200212a8162001cc6565b6200213457600080fd5b7f20b8ca26cc94f39fab299954184cf3a9bd04f69543e4f454fab299f015b8130f60005260026020527f0c25bd6cb8545e46227bc56e841bd085538c74351fb22e98acdfbe596b353cfb80546001600160a01b0319166001600160a01b0392909216919091179055565b620021a98162001cc6565b620021b357600080fd5b7f02e1d283efd236e8b97cefe072f0c863fa2db9f9ba42b0eca53ab31c49067a6760005260026020527f953ab8a758dd553cc38f793a1da5659c9dc6ef69c086214f73ad0b17e262b03180546001600160a01b0319166001600160a01b0392909216919091179055565b604080516e1d1bdad95b949959da5cdd195c9959608a1b6020808301919091526001600160601b0319606086901b16602f830152825160238184030181526043909201835281519181019190912060009081529081905220548114620006d957604080516e1d1bdad95b949959da5cdd195c9959608a1b60208083019190915260609490941b6001600160601b031916602f820152815180820360230181526043909101825280519084012060009081529283905290912055565b620022e3876200096d565b620022ed57600080fd5b6200235f87878787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525062002f4692505050565b6200236962003205565b856001600160a01b0316886001600160a01b03167fdba5aae9a9fef2121c9cd75845616e9a0ab4820000f44140995e6c286ef495db87878787604051620023b49493929190620048be565b60405180910390a450505050505050565b7f98aa806e31e94a687a31c65769cb99670064dd7f5a87526da075c5fb4eab988060005260026020527f0c1206883be66049a02d4937078367c00b3d71dd1a9465df969363c6ddeac96d80546001600160a01b0319166001600160a01b0392909216919091179055565b60606001600160a01b038416158015906200246557506200244f62000de0565b6001600160a01b0316846001600160a01b031614155b6200246f57600080fd5b60006200247c8662000a57565b90506001600160a01b038116620028af57606084516001600160401b0381118015620024a757600080fd5b50604051908082528060200260200182016040528015620024dd57816020015b6060815260200190600190039081620024c75790505b50845190915015620026565760005b85518110156200264f57600062002518898884815181106200250a57fe5b602002602001015162001454565b90506000620025458784815181106200252d57fe5b6020026020010151836200327d90919063ffffffff16565b9050808a6001600160a01b031662fdd58e308b87815181106200256457fe5b60200260200101516040518363ffffffff1660e01b81526004016200258b929190620048a5565b60206040518083038186803b158015620025a457600080fd5b505afa158015620025b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025df919062004354565b1015620025eb57600080fd5b6200260c8a898581518110620025fd57fe5b602002602001015183620032d8565b6200262c8a8985815181106200261e57fe5b6020026020010151620032ef565b8484815181106200263957fe5b60209081029190910101525050600101620024ec565b5062002799565b60005b8551811015620027975762002675888783815181106200250a57fe5b156200268057600080fd5b306001600160a01b0316886001600160a01b0316636352211e888481518110620026a657fe5b60200260200101516040518263ffffffff1660e01b8152600401620026cc919062004932565b60206040518083038186803b158015620026e557600080fd5b505afa158015620026fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002720919062003d05565b6001600160a01b0316146200273457600080fd5b62002756888783815181106200274657fe5b60200260200101516001620032d8565b62002776888783815181106200276857fe5b6020026020010151620034c7565b8282815181106200278357fe5b602090810291909101015260010162002659565b505b620027a48762001212565b156200281b57601385511115620027ba57600080fd5b604051632dc0782560e21b90620027de90899089908990899087906024016200466d565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152925062002041915050565b600e855111156200282b57600080fd5b6060620028388862003540565b905060606200284789620037d7565b905063f92d746860e01b8983838b8b8b8960405160240162002870979695949392919062004814565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529450620020419350505050565b8251156200292157604051637265da3760e11b81526001600160a01b0387169063e4cbb46e90620028e79087908790600401620048e9565b600060405180830381600087803b1580156200290257600080fd5b505af115801562002917573d6000803e3d6000fd5b50505050620029b3565b60005b8451811015620029b157866001600160a01b03166342966c688683815181106200294a57fe5b60200260200101516040518263ffffffff1660e01b815260040162002970919062004932565b600060405180830381600087803b1580156200298b57600080fd5b505af1158015620029a0573d6000803e3d6000fd5b505060019092019150620029249050565b505b604051636ca4835760e01b90620029d590839088908890889060240162004620565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152915050949350505050565b600062002a1e6200146c565b6001600160a01b031663dc8601b362002a3662000de0565b8562002a41620013a9565b6040518463ffffffff1660e01b815260040162002a619392919062004791565b602060405180830381600087803b15801562002a7c57600080fd5b505af115801562002a91573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e10919062004354565b62002ac284620017ec565b62002acc57600080fd5b62002ae58562002adf8686868662001f6b565b6200397c565b84836001600160a01b0316856001600160a01b03167f4592bc44d36f208ac23b24a332824c332066017d3978a7d3c6543f992ea17f3d858560405162002b2d929190620048e9565b60405180910390a45050505050565b60005b8381101562000afe57600083838381811062002b5757fe5b905060200281019062002b6b919062004994565b9050111562002c0d57856001600160a01b031663162094c486868481811062002b9057fe5b9050602002013585858581811062002ba457fe5b905060200281019062002bb8919062004994565b6040518463ffffffff1660e01b815260040162002bd8939291906200493b565b600060405180830381600087803b15801562002bf357600080fd5b505af115801562002c08573d6000803e3d6000fd5b505050505b60010162002b3f565b62002c2062001dc7565b1562002c2b57600080fd5b62002c376001620039ce565b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038516916323b872dd91606480830192600092919082900301818387803b15801562002c8c57600080fd5b505af115801562002ca1573d6000803e3d6000fd5b5050505062002cb16000620039ce565b620014d0833384620007418562001e19565b604080516b6d65646961746f724f776e7360a01b602080830191909152606094851b6001600160601b031916602c8301528183019390935281518082038301815293810182528351938301939093206080840152600460a0808501919091528151808503909101815260c09093019052815191012090565b6001600160a01b03811662002d4f57600080fd5b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e062002d7a62000e37565b604080516001600160a01b03928316815291841660208301528051918290030190a17f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060005260026020527fb7802e97e87ef2842a6cce7da7ffaeaedaa2f61a6a7870b23d9d01fc9b73712e80546001600160a01b0319166001600160a01b0392909216919091179055565b62002e10620039f2565b81111562002e1d57600080fd5b7f2dfd6c9f781bb6bbb5369c114e949b69ebb440ef3d4dd6b2836225eb1dc3a2be60009081526020527f2de0d2cdc19d356cb53b5984f91bfd3b31fe0c678a0d190a6db39274bb34753f55565b606080827f000000000000000000000000000000000000000000000000000000000000000060405160200162002ea2929190620045e8565b60408051808303601f1901815291905292517f00000000000000000000000000000000000000000000000000000000000000000183525090919050565b7f0a6f646cd611241d8073675e00d1a1ff700fbf1b53fcf473de56d1e6e4b714ba60005260046020527f078d888f9b66f3f8bfa10909e31f1e16240db73449f0500afdbbe3a70da457cc805460ff19166001179055565b6014015190565b60019392505050565b805115620030a85783156200303b5760005b825181101562002fbd5762002fb48684838151811062002f7457fe5b602002602001015162002fae85858151811062002f8d57fe5b602002602001015162002fa78b8988815181106200250a57fe5b9062003a37565b620032d8565b60010162002f58565b5060408051600081526020810191829052631759616b60e11b9091526001600160a01b03861690632eb2c2d6906200300190309087908790879060248101620046d1565b600060405180830381600087803b1580156200301c57600080fd5b505af115801562003031573d6000803e3d6000fd5b50505050620030a2565b604051634b93bab560e11b81526001600160a01b03861690639727756a906200306d908690869086906004016200474d565b600060405180830381600087803b1580156200308857600080fd5b505af11580156200309d573d6000803e3d6000fd5b505050505b620031fe565b83156200316c5760005b82518110156200316557620030de86848381518110620030ce57fe5b60200260200101516000620032d8565b856001600160a01b03166323b872dd3086868581518110620030fc57fe5b60200260200101516040518463ffffffff1660e01b8152600401620031249392919062004729565b600060405180830381600087803b1580156200313f57600080fd5b505af115801562003154573d6000803e3d6000fd5b505060019092019150620030b29050565b50620031fe565b60005b825181101562000afe57856001600160a01b03166340c10f19858584815181106200319657fe5b60200260200101516040518363ffffffff1660e01b8152600401620031bd929190620048a5565b600060405180830381600087803b158015620031d857600080fd5b505af1158015620031ed573d6000803e3d6000fd5b5050600190920191506200316f9050565b5050505050565b6000620032116200146c565b6001600160a01b031663669f618b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200324a57600080fd5b505afa1580156200325f573d6000803e3d6000fd5b505050506040513d60208110156200327657600080fd5b5051905090565b60008282018381101562001e10576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000620032e6848462002cc3565b91909155505050565b60408051602480820184905282518083039091018152604490910182526020810180516001600160e01b03166303a24d0760e21b1781529151815160609360009385936001600160a01b03891693919290918291908083835b60208310620033695780518252601f19909201916020918201910162003348565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114620033cb576040519150601f19603f3d011682016040523d82523d6000602084013e620033d0565b606091505b509150915081620033f15760405180602001604052806000815250620034be565b8080602001905160208110156200340757600080fd5b81019080805160405193929190846401000000008211156200342857600080fd5b9083019060208201858111156200343e57600080fd5b82516401000000008111828201881017156200345957600080fd5b82525081516020918201929091019080838360005b83811015620034885781810151838201526020016200346e565b50505050905090810190601f168015620034b65780820380516001836020036101000a031916815260200191505b506040525050505b95945050505050565b60408051602480820184905282518083039091018152604490910182526020810180516001600160e01b031663c87b56dd60e01b1781529151815160609360009385936001600160a01b038916939192909182919080838360208310620033695780518252601f19909201916020918201910162003348565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b1781529151815160609360009385936001600160a01b03881693919290918291908083835b60208310620035ab5780518252601f1990920191602091820191016200358a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146200360d576040519150601f19603f3d011682016040523d82523d6000602084013e62003612565b606091505b50915091508162003703576040805169637573746f6d4e616d6560b01b602080830191909152606087901b6001600160601b031916602a8301528251808303601e018152603e83018085528151918301919091206000908152600180845290859020805460029281161561010002600019011691909104601f81018490049093028401605e908101909552828252909390920182828015620036f85780601f10620036cc57610100808354040283529160200191620036f8565b820191906000526020600020905b815481529060010190602001808311620036da57829003601f168201915b505050505062002041565b8080602001905160208110156200371957600080fd5b81019080805160405193929190846401000000008211156200373a57600080fd5b9083019060208201858111156200375057600080fd5b82516401000000008111828201881017156200376b57600080fd5b82525081516020918201929091019080838360005b838110156200379a57818101518382015260200162003780565b50505050905090810190601f168015620037c85780820380516001836020036101000a031916815260200191505b50604052505050949350505050565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b1781529151815160609360009385936001600160a01b03881693919290918291908083835b60208310620038425780518252601f19909201916020918201910162003821565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114620038a4576040519150601f19603f3d011682016040523d82523d6000602084013e620038a9565b606091505b5091509150816200370357600160008560405160200180806b18dd5cdd1bdb54de5b589bdb60a21b815250600c01826001600160a01b031660601b81526014019150506040516020818303038152906040528051906020012081526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620036f85780601f10620036cc57610100808354040283529160200191620036f8565b604080516e6d657373616765436865636b73756d60881b602080830191909152602f8083019590955282518083039095018552604f909101825283519381019390932060009081529283905290912055565b7f6168652c307c1e813ca11cfb3a601f1cf3b22452021a5052d8b05f1f1f8a3e9255565b6000620039fe6200146c565b6001600160a01b031663e5789d036040518163ffffffff1660e01b815260040160206040518083038186803b1580156200324a57600080fd5b60008282111562003a8f576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262003acd576000855562003b18565b82601f1062003ae85782800160ff1982351617855562003b18565b8280016001018555821562003b18579182015b8281111562003b1857823582559160200191906001019062003afb565b5062003b2692915062003b46565b5090565b61053a8062004a4583390190565b61053a8062004f7f83390190565b5b8082111562003b26576000815560010162003b47565b80356200079d8162004a2e565b60008083601f84011262003b7c578182fd5b5081356001600160401b0381111562003b93578182fd5b602083019150836020808302850101111562003bae57600080fd5b9250929050565b600082601f83011262003bc6578081fd5b81356001600160401b0381111562003bda57fe5b602080820262003bec828201620049db565b8381529350818401858301828701840188101562003c0957600080fd5b600092505b8483101562003c2e57803582526001929092019190830190830162003c0e565b505050505092915050565b60008083601f84011262003c4b578182fd5b5081356001600160401b0381111562003c62578182fd5b60208301915083602082850101111562003bae57600080fd5b600082601f83011262003c8c578081fd5b81356001600160401b0381111562003ca057fe5b62003cb5601f8201601f1916602001620049db565b915080825283602082850101111562003ccd57600080fd5b8060208401602084013760009082016020015292915050565b60006020828403121562003cf8578081fd5b813562001e108162004a2e565b60006020828403121562003d17578081fd5b815162001e108162004a2e565b6000806040838503121562003d37578081fd5b823562003d448162004a2e565b9150602083013562003d568162004a2e565b809150509250929050565b6000806000806060858703121562003d77578182fd5b843562003d848162004a2e565b9350602085013562003d968162004a2e565b925060408501356001600160401b0381111562003db1578283fd5b62003dbf8782880162003b6a565b95989497509550505050565b6000806000806000806080878903121562003de4578182fd5b863562003df18162004a2e565b9550602087013562003e038162004a2e565b945060408701356001600160401b038082111562003e1f578384fd5b62003e2d8a838b0162003b6a565b9096509450606089013591508082111562003e46578384fd5b5062003e5589828a0162003b6a565b979a9699509497509295939492505050565b60008060008060008060008060a0898b03121562003e83578182fd5b883562003e908162004a2e565b9750602089013562003ea28162004a2e565b965060408901356001600160401b038082111562003ebe578384fd5b62003ecc8c838d0162003b6a565b909850965060608b013591508082111562003ee5578384fd5b62003ef38c838d0162003b6a565b909650945060808b013591508082111562003f0c578384fd5b5062003f1b8b828c0162003b6a565b999c989b5096995094979396929594505050565b60008060008060008060008060a0898b03121562003f4b578384fd5b883562003f588162004a2e565b9750602089013562003f6a8162004a2e565b965060408901356001600160401b038082111562003f86578586fd5b62003f948c838d0162003b6a565b909850965060608b013591508082111562003fad578586fd5b62003fbb8c838d0162003b6a565b909650945060808b013591508082111562003fd4578384fd5b5062003f1b8b828c0162003c39565b60008060008060008060c0878903121562003ffc578384fd5b8635620040098162004a2e565b955060208701356200401b8162004a2e565b9450604087013593506060870135620040348162004a2e565b92506080870135620040468162004a2e565b915060a0870135620040588162004a2e565b809150509295509295509295565b6000806000806000608086880312156200407e578283fd5b85356200408b8162004a2e565b945060208601356200409d8162004a2e565b93506040860135925060608601356001600160401b03811115620040bf578182fd5b620040cd8882890162003c39565b969995985093965092949392505050565b60008060008060008060a08789031215620040f7578384fd5b8635620041048162004a2e565b95506020870135620041168162004a2e565b9450604087013593506060870135925060808701356001600160401b038111156200413f578283fd5b62003e5589828a0162003c39565b6000806040838503121562004160578182fd5b82356200416d8162004a2e565b91506020830135801515811462003d56578182fd5b6000806000806000606086880312156200419a578283fd5b8535620041a78162004a2e565b945060208601356001600160401b0380821115620041c3578485fd5b620041d189838a0162003c39565b90965094506040880135915080821115620041ea578283fd5b50620040cd8882890162003c39565b60008060008060008060008060008060e08b8d03121562004218578384fd5b620042238b62003b5d565b995060208b01356001600160401b03808211156200423f578586fd5b6200424d8e838f0162003c7b565b9a5060408d013591508082111562004263578586fd5b620042718e838f0162003c7b565b99506200428160608e0162003b5d565b985060808d013591508082111562004297578586fd5b620042a58e838f0162003b6a565b909850965060a08d0135915080821115620042be578586fd5b620042cc8e838f0162003b6a565b909650945060c08d0135915080821115620042e5578384fd5b50620042f48d828e0162003b6a565b915080935050809150509295989b9194979a5092959850565b6000806040838503121562004320578182fd5b82356200432d8162004a2e565b946020939093013593505050565b6000602082840312156200434d578081fd5b5035919050565b60006020828403121562004366578081fd5b5051919050565b600080600080600080600060a0888a03121562004388578081fd5b8735965060208801356200439c8162004a2e565b95506040880135620043ae8162004a2e565b945060608801356001600160401b0380821115620043ca578283fd5b620043d88b838c0162003b6a565b909650945060808a0135915080821115620043f1578283fd5b50620044008a828b0162003b6a565b989b979a50959850939692959293505050565b600080600080600060a086880312156200442b578283fd5b8535945060208601356200443f8162004a2e565b93506040860135620044518162004a2e565b925060608601356001600160401b03808211156200446d578283fd5b6200447b89838a0162003bb5565b9350608088013591508082111562004491578283fd5b50620044a08882890162003bb5565b9150509295509295909350565b600080600060608486031215620044c2578081fd5b8335620044cf8162004a2e565b92506020840135620044e18162004a2e565b929592945050506040919091013590565b6000815180845260208085018081965082840281019150828601855b858110156200453c57828403895262004529848351620045ba565b988501989350908401906001016200450e565b5091979650505050505050565b81835260006001600160fb1b0383111562004562578081fd5b6020830280836020870137939093016020019283525090919050565b6000815180845260208085019450808401835b83811015620045af5781518752958201959082019060010162004591565b509495945050505050565b60008151808452620045d4816020860160208601620049ff565b601f01601f19169290920160200192915050565b60008351620045fc818460208801620049ff565b9190910191825250602001919050565b6001600160a01b0391909116815260200190565b6001600160a01b038581168252841660208201526080604082018190526000906200464e908301856200457e565b82810360608401526200466281856200457e565b979650505050505050565b6001600160a01b0386811682528516602082015260a0604082018190526000906200469b908301866200457e565b8281036060840152620046af81866200457e565b90508281036080840152620046c58185620044f2565b98975050505050505050565b6001600160a01b0386811682528516602082015260a060408201819052600090620046ff908301866200457e565b82810360608401526200471381866200457e565b90508281036080840152620046c58185620045ba565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b038416815260606020820181905260009062004773908301856200457e565b82810360408401526200478781856200457e565b9695505050505050565b6001600160a01b0384168152606060208201819052600090620047b790830185620045ba565b9050826040830152949350505050565b600060018060a01b03808716835260806020840152620047eb6080840187620045ba565b8381036040850152620047ff8187620045ba565b92505080841660608401525095945050505050565b600060018060a01b03808a16835260e060208401526200483860e084018a620045ba565b83810360408501526200484c818a620045ba565b9050818816606085015283810360808501526200486a81886200457e565b91505082810360a08401526200488181866200457e565b905082810360c0840152620048978185620044f2565b9a9950505050505050505050565b6001600160a01b03929092168252602082015260400190565b600060408252620048d460408301868862004549565b82810360208401526200466281858762004549565b600060408252620048fe60408301856200457e565b8281036020840152620034be81856200457e565b901515815260200190565b6001600160e01b031991909116815260200190565b90815260200190565b60008482526040602083015282604083015282846060840137818301606090810191909152601f909201601f1916010192915050565b6001600160401b0393841681529183166020830152909116604082015260600190565b6000808335601e19843603018112620049ab578283fd5b8301803591506001600160401b03821115620049c5578283fd5b60200191503681900382131562003bae57600080fd5b6040518181016001600160401b0381118282101715620049f757fe5b604052919050565b60005b8381101562004a1c57818101518382015260200162004a02565b83811115620021195750506000910152565b6001600160a01b03811681146200065657600080fdfe608060405234801561001057600080fd5b5060405161053a38038061053a8339818101604052608081101561003357600080fd5b81516020830180516040519294929383019291908464010000000082111561005a57600080fd5b90830190602082018581111561006f57600080fd5b825164010000000081118282018810171561008957600080fd5b82525081516020918201929091019080838360005b838110156100b657818101518382015260200161009e565b50505050905090810190601f1680156100e35780820380516001836020036101000a031916815260200191505b506040526020018051604051939291908464010000000082111561010657600080fd5b90830190602082018581111561011b57600080fd5b825164010000000081118282018810171561013557600080fd5b82525081516020918201929091019080838360005b8381101561016257818101518382015260200161014a565b50505050905090810190601f16801561018f5780820380516001836020036101000a031916815260200191505b506040526020908101517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc87905585519093506101d29250600691860190610210565b5081516101e6906007906020850190610210565b50600a80546001600160a01b0319166001600160a01b0392909216919091179055506102b1915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282610246576000855561028c565b82601f1061025f57805160ff191683800117855561028c565b8280016001018555821561028c579182015b8281111561028c578251825591602001919060010190610271565b5061029892915061029c565b5090565b5b80821115610298576000815560010161029d565b61027a806102c06000396000f3fe6080604052600436106100345760003560e01c80632f95b6aa1461007d5780635c60da1b146100be578063d784d426146100ef575b600061003e610124565b90506001600160a01b03811661005357600080fd5b60405136600082376000803683855af43d82016040523d6000833e808015610079573d83f35b3d83fd5b34801561008957600080fd5b50610092610149565b6040805167ffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b3480156100ca57600080fd5b506100d3610124565b604080516001600160a01b039092168252519081900360200190f35b3480156100fb57600080fd5b506101226004803603602081101561011257600080fd5b50356001600160a01b0316610152565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b60016000809192565b600a546001600160a01b03163314806101ec5750600a60009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50516001600160a01b031633145b6101f557600080fd5b6001600160a01b03811661020857600080fd5b6102118161023e565b61021a57600080fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fea2646970667358221220bc88bfc34175d5f654e94d2bf5d87e430cfb86f6b1fd721c819c7b4541dfff6264736f6c63430007050033608060405234801561001057600080fd5b5060405161053a38038061053a8339818101604052608081101561003357600080fd5b81516020830180516040519294929383019291908464010000000082111561005a57600080fd5b90830190602082018581111561006f57600080fd5b825164010000000081118282018810171561008957600080fd5b82525081516020918201929091019080838360005b838110156100b657818101518382015260200161009e565b50505050905090810190601f1680156100e35780820380516001836020036101000a031916815260200191505b506040526020018051604051939291908464010000000082111561010657600080fd5b90830190602082018581111561011b57600080fd5b825164010000000081118282018810171561013557600080fd5b82525081516020918201929091019080838360005b8381101561016257818101518382015260200161014a565b50505050905090810190601f16801561018f5780820380516001836020036101000a031916815260200191505b506040526020908101517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc87905585519093506101d29250600491860190610210565b5081516101e6906005906020850190610210565b50600880546001600160a01b0319166001600160a01b0392909216919091179055506102b1915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282610246576000855561028c565b82601f1061025f57805160ff191683800117855561028c565b8280016001018555821561028c579182015b8281111561028c578251825591602001919060010190610271565b5061029892915061029c565b5090565b5b80821115610298576000815560010161029d565b61027a806102c06000396000f3fe6080604052600436106100345760003560e01c80632f95b6aa1461007d5780635c60da1b146100be578063d784d426146100ef575b600061003e610124565b90506001600160a01b03811661005357600080fd5b60405136600082376000803683855af43d82016040523d6000833e808015610079573d83f35b3d83fd5b34801561008957600080fd5b50610092610149565b6040805167ffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b3480156100ca57600080fd5b506100d3610124565b604080516001600160a01b039092168252519081900360200190f35b3480156100fb57600080fd5b506101226004803603602081101561011257600080fd5b50356001600160a01b0316610152565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b60016000809192565b6008546001600160a01b03163314806101ec5750600860009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50516001600160a01b031633145b6101f557600080fd5b6001600160a01b03811661020857600080fd5b6102118161023e565b61021a57600080fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b3b15159056fea2646970667358221220172e5b97c48bf1ecec2125e7f83d61c8663c5d22fba42b7e8eee56182c804c1564736f6c63430007050033a26469706673582212200262ee15ffb667cb943d20d3d02417239c5c9c6f01c1388eb7458a77f526c2b464736f6c634300070500330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000966726f6d20784461690000000000000000000000000000000000000000000000