0 txs
0 calls
constructor
No constructor.
functions
bridgeContract
viewfunction bridgeContract() view returns (address)
bridgedTokenAddress
viewfunction bridgedTokenAddress(address _nativeToken) view returns (address)
dailyLimit
viewfunction dailyLimit(address _token) view returns (uint256)
executionDailyLimit
viewfunction executionDailyLimit(address _token) view returns (uint256)
getBridgeInterfacesVersion
purefunction getBridgeInterfacesVersion() pure returns (uint64 major, uint64 minor, uint64 patch)
getBridgeMode
purefunction getBridgeMode() pure returns (bytes4 _data)
getCurrentDay
viewfunction getCurrentDay() view returns (uint256)
isInitialized
viewfunction isInitialized() view returns (bool)
isRegisteredAsNativeToken
viewfunction isRegisteredAsNativeToken(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 (bool)
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)
tokenImage
viewfunction tokenImage() view returns (address)
tokenRegistrationMessageId
viewfunction tokenRegistrationMessageId(address _token) view returns (bytes32)
totalExecutedPerDay
viewfunction totalExecutedPerDay(address _token, uint256 _day) view returns (uint256)
totalSpentPerDay
viewfunction totalSpentPerDay(address _token, uint256 _day) view returns (uint256)
withinExecutionLimit
viewfunction withinExecutionLimit(address _token) view returns (bool)
withinLimit
viewfunction withinLimit(address _token) view returns (bool)
deployAndHandleBridgedNFT
nonpayablefunction deployAndHandleBridgedNFT(address _token, string _name, string _symbol, address _recipient, uint256 _tokenId, string _tokenURI)
fixFailedMessage
nonpayablefunction fixFailedMessage(bytes32 _messageId)
fixMediatorBalance
nonpayablefunction fixMediatorBalance(address _token, address _receiver, uint256 _tokenId)
handleBridgedNFT
nonpayablefunction handleBridgedNFT(address _token, address _recipient, uint256 _tokenId, string _tokenURI)
handleNativeNFT
nonpayablefunction handleNativeNFT(address _token, address _recipient, uint256 _tokenId)
initialize
nonpayablefunction initialize(address _bridgeContract, address _mediatorContract, uint256 _dailyLimit, uint256 _executionDailyLimit, uint256 _requestGasLimit, address _owner, address _image) returns (bool)
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)
setBridgeContract
nonpayablefunction setBridgeContract(address _bridgeContract)
setCustomMetadata
nonpayablefunction setCustomMetadata(address _token, string _name, string _symbol)
setCustomTokenAddressPair
nonpayablefunction setCustomTokenAddressPair(address _nativeToken, address _bridgedToken)
setDailyLimit
nonpayablefunction setDailyLimit(address _token, uint256 _dailyLimit)
setExecutionDailyLimit
nonpayablefunction setExecutionDailyLimit(address _token, uint256 _dailyLimit)
setMediatorContractOnOtherSide
nonpayablefunction setMediatorContractOnOtherSide(address _mediatorContract)
setRequestGasLimit
nonpayablefunction setRequestGasLimit(uint256 _requestGasLimit)
setTokenImage
nonpayablefunction setTokenImage(address _image)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
DailyLimitChanged
event DailyLimitChanged(address indexed token, uint256 newLimit)
ExecutionDailyLimitChanged
event ExecutionDailyLimitChanged(address indexed token, uint256 newLimit)
FailedMessageFixed
event FailedMessageFixed(bytes32 indexed messageId, address token, address recipient, uint256 value)
NewTokenRegistered
event NewTokenRegistered(address indexed nativeToken, address indexed bridgedToken)
OwnershipTransferred
event OwnershipTransferred(address previousOwner, address newOwner)
TokensBridged
event TokensBridged(address indexed token, address indexed recipient, uint256 tokenId, bytes32 indexed messageId)
TokensBridgingInitiated
event TokensBridgingInitiated(address indexed token, address indexed sender, uint256 tokenId, bytes32 indexed messageId)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b5061436a806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200028c5760003560e01c80638190d9061162000165578063cba002b911620000d5578063efb947f31162000093578063efb947f31462000a28578063f2c54fe81462000a61578063f2fde38b1462000a90578063f3b837911462000ab9578063f3f514151462000ad9578063fbc547ce1462000b02576200028c565b8063cba002b914620008a6578063cd59658314620008d5578063d79ca76e14620008df578063e1e5e8031462000918578063e3ae398414620009ef576200028c565b8063ab3a25d91162000123578063ab3a25d9146200080b578063b7dbbf87146200083a578063be3b625b1462000869578063c1aef4f21462000873578063c2173d43146200087d576200028c565b80638190d9061462000778578063871c076014620007a15780638da5cb5b14620007ab5780639a4a439514620007b55780639cb7595a14620007d5576200028c565b8063392e53cd11620002015780635933998211620001bf5780635933998214620006ae5780635c2a899414620006ce57806361c04f8414620006f75780636e5d6bea14620007205780637837cf911462000749576200028c565b8063392e53cd14620005165780633c91b10514620005205780633e6968b6146200065f57806340f8dd86146200067b578063437764df14620006a4576200028c565b80631fa2195f116200024f5780631fa2195f146200042757806326aa101f14620004505780632803212f14620004795780632b9d843d14620004a85780632d70061f14620004d1576200028c565b80630729da0b14620002915780630950d51514620002fa5780630b26cf66146200031c5780630b71a4a71462000345578063150b7a021462000376575b600080fd5b620002e6600480360360e0811015620002a957600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a081013582169160c0909101351662000b96565b604080519115158252519081900360200190f35b6200031a600480360360208110156200031257600080fd5b503562000d3d565b005b6200031a600480360360208110156200033457600080fd5b50356001600160a01b031662000df6565b6200031a600480360360408110156200035d57600080fd5b506001600160a01b038135811691602001351662000e2c565b6200040a600480360360808110156200038e57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115620003c957600080fd5b820183602082011115620003dc57600080fd5b803590602001918460018302840111600160201b83111715620003fe57600080fd5b50909250905062000ebb565b604080516001600160e01b03199092168252519081900360200190f35b6200031a600480360360208110156200043f57600080fd5b50356001600160a01b031662000f32565b620002e6600480360360208110156200046857600080fd5b50356001600160a01b031662000f65565b6200031a600480360360408110156200049157600080fd5b506001600160a01b03813516906020013562000f98565b620002e660048036036020811015620004c057600080fd5b50356001600160a01b031662000ff3565b620004fa60048036036020811015620004e957600080fd5b50356001600160a01b031662001032565b604080516001600160a01b039092168252519081900360200190f35b620002e662001098565b6200031a600480360360c08110156200053857600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200056357600080fd5b8201836020820111156200057657600080fd5b803590602001918460018302840111600160201b831117156200059857600080fd5b919390929091602081019035600160201b811115620005b657600080fd5b820183602082011115620005c957600080fd5b803590602001918460018302840111600160201b83111715620005eb57600080fd5b919390926001600160a01b03833516926020810135929190606081019060400135600160201b8111156200061e57600080fd5b8201836020820111156200063157600080fd5b803590602001918460018302840111600160201b831117156200065357600080fd5b509092509050620010e9565b620006696200132f565b60408051918252519081900360200190f35b62000669600480360360208110156200069357600080fd5b50356001600160a01b031662001338565b6200040a62001397565b620002e660048036036020811015620006c657600080fd5b5035620013a2565b620002e660048036036020811015620006e657600080fd5b50356001600160a01b0316620013f5565b620004fa600480360360208110156200070f57600080fd5b50356001600160a01b03166200142d565b6200031a600480360360208110156200073857600080fd5b50356001600160a01b031662001496565b6200031a600480360360408110156200076157600080fd5b506001600160a01b038135169060200135620014c9565b62000669600480360360208110156200079057600080fd5b50356001600160a01b031662001524565b620004fa6200158d565b620004fa620015e4565b6200031a60048036036020811015620007cd57600080fd5b50356200163b565b620007df62001945565b6040805167ffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b62000669600480360360408110156200082357600080fd5b506001600160a01b0381351690602001356200194e565b6200031a600480360360408110156200085257600080fd5b506001600160a01b038135169060200135620019b4565b62000669620019c1565b620004fa62001a0f565b620002e6600480360360208110156200089557600080fd5b50356001600160a01b031662001a66565b620002e660048036036040811015620008be57600080fd5b506001600160a01b03813516906020013562001a7c565b620004fa62001adc565b6200031a60048036036060811015620008f757600080fd5b506001600160a01b0381358116916020810135909116906040013562001b33565b6200031a600480360360608110156200093057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200095b57600080fd5b8201836020820111156200096e57600080fd5b803590602001918460018302840111600160201b831117156200099057600080fd5b919390929091602081019035600160201b811115620009ae57600080fd5b820183602082011115620009c157600080fd5b803590602001918460018302840111600160201b83111715620009e357600080fd5b50909250905062001b45565b6200031a6004803603606081101562000a0757600080fd5b506001600160a01b0381358116916020810135909116906040013562001c37565b6200031a6004803603606081101562000a4057600080fd5b506001600160a01b0381358116916020810135909116906040013562001c65565b620006696004803603604081101562000a7957600080fd5b506001600160a01b03813516906020013562001f5c565b6200031a6004803603602081101562000aa857600080fd5b50356001600160a01b031662001fc5565b6200031a6004803603602081101562000ad157600080fd5b503562001ff8565b620006696004803603602081101562000af157600080fd5b50356001600160a01b03166200202b565b6200031a6004803603608081101562000b1a57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111562000b5557600080fd5b82018360208201111562000b6857600080fd5b803590602001918460018302840111600160201b8311171562000b8a57600080fd5b50909250905062002081565b60408051600481526024810182526020810180516001600160e01b03166337ef410160e11b1781529151815160009384936060933093919290918291908083835b6020831062000bf85780518252601f19909201916020918201910162000bd7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811462000c5c576040519150601f19603f3d011682016040523d82523d6000602084013e62000c61565b606091505b509150915081158062000ca057508051602014801562000ca0575080806020019051602081101562000c9257600080fd5b50516001600160a01b031633145b8062000cab57503330145b62000cb557600080fd5b62000cbf62001098565b1562000cca57600080fd5b62000cd58a620020b7565b62000ce08962002136565b62000ced600089620021a0565b62000cfa60008862002238565b62000d0586620022d9565b62000d10856200233d565b62000d1b8462002408565b62000d2562002487565b62000d2f62001098565b9a9950505050505050505050565b62000d47620024de565b62000d5281620013a2565b1562000d5d57600080fd5b600062000d6a8262002539565b9050600062000d798362002592565b9050600062000d8884620025ef565b905062000d95846200263e565b62000da38484848462002697565b604080516001600160a01b03808616825284166020820152808201839052905185917f07b5483b8e4bd8ea240a474d5117738350e7d431e3668c48a97910b0b397796a919081900360600190a250505050565b62000e00620015e4565b6001600160a01b0316336001600160a01b03161462000e1e57600080fd5b62000e2981620020b7565b50565b62000e36620015e4565b6001600160a01b0316336001600160a01b03161462000e5457600080fd5b62000e5f816200276a565b62000e6957600080fd5b62000e748162000f65565b1562000e7f57600080fd5b600062000e8c8362001032565b6001600160a01b03161462000ea057600080fd5b62000eac8282620027a7565b62000eb781620028a2565b5050565b600062000ec7620028d0565b62000f1b5762000f1b338662000f148887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620028f592505050565b8762002920565b506001600160e01b03196000351695945050505050565b62000f3c620015e4565b6001600160a01b0316336001600160a01b03161462000f5a57600080fd5b62000e298162002408565b600062000f728262001a66565b8062000f925750600062000f86836200142d565b6001600160a01b031614155b92915050565b62000fa2620015e4565b6001600160a01b0316336001600160a01b03161462000fc057600080fd5b6001600160a01b038216158062000fdd575062000fdd8262000f65565b62000fe757600080fd5b62000eb78282620021a0565b60008062001002600062001338565b11801562000f92575062001020826200101a6200132f565b62001f5c565b6200102b8362001338565b1192915050565b604080516f686f6d65546f6b656e4164647265737360801b60208083019190915260609390931b6001600160601b03191660308201528151808203602401815260449091018252805190830120600090815260029092529020546001600160a01b031690565b7f0a6f646cd611241d8073675e00d1a1ff700fbf1b53fcf473de56d1e6e4b714ba60005260046020527f078d888f9b66f3f8bfa10909e31f1e16240db73449f0500afdbbe3a70da457cc5460ff1690565b620010f3620024de565b6000620011008a62001032565b90506001600160a01b0381166200130657606089898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815293945060609392508b91508a90819084018382808284376000920191909152505084519293505050620011a55760008151116200119c57600080fd5b809150620011af565b8051620011af5750805b620011b962001a0f565b620011c48362002f36565b8230604051620011d49062003d5f565b80856001600160a01b031681526020018060200180602001846001600160a01b03168152602001838103835286818151815260200191508051906020019080838360005b838110156200123257818101518382015260200162001218565b50505050905090810190601f168015620012605780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015620012955781810151838201526020016200127b565b50505050905090810190601f168015620012c35780820380516001836020036101000a031916815260200191505b509650505050505050604051809103906000f080158015620012e9573d6000803e3d6000fd5b509250620012f88c84620027a7565b6200130383620028a2565b50505b62001315816000878762002fbc565b620013238185858562003045565b50505050505050505050565b62015180420490565b6040805172195e1958dd5d1a5bdb91185a5b1e531a5b5a5d606a1b60208083019190915260609390931b6001600160601b0319166033820152815180820360270181526047909101825280519083012060009081529182905290205490565b63329ff0f760e21b90565b604080516b1b595cdcd859d9519a5e195960a21b602080830191909152602c80830185905283518084039091018152604c909201835281519181019190912060009081526004909152205460ff16919050565b6000806200140460006200202b565b11801562000f92575062001422826200141c6200132f565b6200194e565b6200102b836200202b565b6040805172666f726569676e546f6b656e4164647265737360681b60208083019190915260609390931b6001600160601b03191660338201528151808203602701815260479091018252805190830120600090815260029092529020546001600160a01b031690565b620014a0620015e4565b6001600160a01b0316336001600160a01b031614620014be57600080fd5b62000e298162002136565b620014d3620015e4565b6001600160a01b0316336001600160a01b031614620014f157600080fd5b6001600160a01b03821615806200150e57506200150e8262000f65565b6200151857600080fd5b62000eb7828262002238565b604080517f746f6b656e526567697374726174696f6e4d657373616765496400000000000060208083019190915260609390931b6001600160601b031916603a8201528151808203602e018152604e909101825280519083012060009081529182905290205490565b7f98aa806e31e94a687a31c65769cb99670064dd7f5a87526da075c5fb4eab988060005260026020527f0c1206883be66049a02d4937078367c00b3d71dd1a9465df969363c6ddeac96d546001600160a01b031690565b7f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060005260026020527fb7802e97e87ef2842a6cce7da7ffaeaedaa2f61a6a7870b23d9d01fc9b73712e546001600160a01b031690565b6200164562001adc565b6001600160a01b031663cb08a10c826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156200168957600080fd5b505afa1580156200169e573d6000803e3d6000fd5b505050506040513d6020811015620016b557600080fd5b505115620016c257600080fd5b30620016cd62001adc565b6001600160a01b0316633f9a8e7e836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156200171157600080fd5b505afa15801562001726573d6000803e3d6000fd5b505050506040513d60208110156200173d57600080fd5b50516001600160a01b0316146200175357600080fd5b6200175d6200158d565b6001600160a01b03166200177062001adc565b6001600160a01b0316634a610b04836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015620017b457600080fd5b505afa158015620017c9573d6000803e3d6000fd5b505050506040513d6020811015620017e057600080fd5b50516001600160a01b031614620017f657600080fd5b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b0316630950d51560e01b908117909152906200183c62001adc565b6001600160a01b031663dc8601b3620018546200158d565b836200185f620019c1565b6040518463ffffffff1660e01b815260040180846001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015620018c2578181015183820152602001620018a8565b50505050905090810190601f168015620018f05780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b1580156200191257600080fd5b505af115801562001927573d6000803e3d6000fd5b505050506040513d60208110156200193e57600080fd5b5050505050565b60016000809192565b604080516f746f74616c5370656e7450657244617960801b60208083019190915260609490941b6001600160601b031916603082015260448082019390935281518082039093018352606401815281519183019190912060009081529182905290205490565b62000eb7823383620030e2565b7f2dfd6c9f781bb6bbb5369c114e949b69ebb440ef3d4dd6b2836225eb1dc3a2be60009081526020527f2de0d2cdc19d356cb53b5984f91bfd3b31fe0c678a0d190a6db39274bb34753f5490565b7f20b8ca26cc94f39fab299954184cf3a9bd04f69543e4f454fab299f015b8130f60005260026020527f0c25bd6cb8545e46227bc56e841bd085538c74351fb22e98acdfbe596b353cfb546001600160a01b031690565b60008062001a748362001524565b141592915050565b604080516b6d65646961746f724f776e7360a01b602080830191909152606094851b6001600160601b031916602c830152818301939093528151808203830181529301815282519282019290922060009081526004909152205460ff1690565b7f811bbb11e8899da471f0e69a3ed55090fc90215227fc5fb1cb0d6e962ea7b74f60005260026020527fb4ed64697d3ef8518241966f7c6f28b0d72f20f51198717d198d2d55076c593d546001600160a01b031690565b62001b40838383620030e2565b505050565b62001b4f620015e4565b6001600160a01b0316336001600160a01b03161462001b6d57600080fd5b6040805169637573746f6d4e616d6560b01b6020808301919091526001600160601b0319606089901b16602a8301528251601e818403018152603e9092018352815191810191909120600090815260019091522062001bce90858562003d6d565b50604080516b18dd5cdd1bdb54de5b589bdb60a21b6020808301919091526001600160601b0319606089901b16602c8301528251808303820181529183018352815191810191909120600090815260019091522062001c2f90838362003d6d565b505050505050565b62001c41620024de565b62001c4c8362001a66565b62001c5657600080fd5b62001b40836001848462002fbc565b306001600160a01b0316636fde82026040518163ffffffff1660e01b815260040160206040518083038186803b15801562001c9f57600080fd5b505afa15801562001cb4573d6000803e3d6000fd5b505050506040513d602081101562001ccb57600080fd5b50516001600160a01b0316331462001ce257600080fd5b6001600160a01b0382161580159062001d16575062001d006200158d565b6001600160a01b0316826001600160a01b031614155b62001d2057600080fd5b62001d2b8362001a66565b62001d3557600080fd5b62001d41838262001a7c565b1562001d4c57600080fd5b306001600160a01b0316836001600160a01b0316636352211e836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562001d9b57600080fd5b505afa15801562001db0573d6000803e3d6000fd5b505050506040513d602081101562001dc757600080fd5b50516001600160a01b03161462001ddd57600080fd5b62001deb838260016200318b565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b0316637de2a3e760e11b179052600062001e4662001adc565b6001600160a01b031663dc8601b362001e5e6200158d565b8462001e69620019c1565b6040518463ffffffff1660e01b815260040180846001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101562001ecc57818101518382015260200162001eb2565b50505050905090810190601f16801562001efa5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801562001f1c57600080fd5b505af115801562001f31573d6000803e3d6000fd5b505050506040513d602081101562001f4857600080fd5b505190506200193e600082878787620031f7565b6040805172746f74616c457865637574656450657244617960681b60208083019190915260609490941b6001600160601b031916603382015260478082019390935281518082039093018352606701815281519183019190912060009081529182905290205490565b62001fcf620015e4565b6001600160a01b0316336001600160a01b03161462001fed57600080fd5b62000e29816200233d565b62002002620015e4565b6001600160a01b0316336001600160a01b0316146200202057600080fd5b62000e2981620022d9565b604080516919185a5b1e531a5b5a5d60b21b60208083019190915260609390931b6001600160601b031916602a8201528151808203601e018152603e909101825280519083012060009081529182905290205490565b6200208b620024de565b6000620020988662001032565b9050620020a9816000878762002fbc565b62001c2f8185858562003045565b620020c2816200276a565b620020cc57600080fd5b7f811bbb11e8899da471f0e69a3ed55090fc90215227fc5fb1cb0d6e962ea7b74f60005260026020527fb4ed64697d3ef8518241966f7c6f28b0d72f20f51198717d198d2d55076c593d80546001600160a01b0319166001600160a01b0392909216919091179055565b7f98aa806e31e94a687a31c65769cb99670064dd7f5a87526da075c5fb4eab988060005260026020527f0c1206883be66049a02d4937078367c00b3d71dd1a9465df969363c6ddeac96d80546001600160a01b0319166001600160a01b0392909216919091179055565b604080516919185a5b1e531a5b5a5d60b21b6020808301919091526001600160601b0319606086901b16602a8301528251601e818403018152603e83018085528151918301919091206000908152918290529083902084905583905290516001600160a01b038416917fca0b3dabefdbd8c72c0a9cf4a6e9d107da897abf036ef3f3f3b010cdd25941599190819003605e0190a25050565b6040805172195e1958dd5d1a5bdb91185a5b1e531a5b5a5d606a1b6020808301919091526001600160601b0319606086901b16603383015282516027818403018152604783018085528151918301919091206000908152918290529083902084905583905290516001600160a01b038416917f4c177b42dbe934b3abbc0208c11a42e46589983431616f1710ab19969c5ed62e919081900360670190a25050565b620022e3620032a1565b811115620022f057600080fd5b7f2dfd6c9f781bb6bbb5369c114e949b69ebb440ef3d4dd6b2836225eb1dc3a2be60009081526020527f2de0d2cdc19d356cb53b5984f91bfd3b31fe0c678a0d190a6db39274bb34753f55565b6001600160a01b0381166200235157600080fd5b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06200237c620015e4565b604080516001600160a01b03928316815291841660208301528051918290030190a17f02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c060005260026020527fb7802e97e87ef2842a6cce7da7ffaeaedaa2f61a6a7870b23d9d01fc9b73712e80546001600160a01b0319166001600160a01b0392909216919091179055565b62002413816200276a565b6200241d57600080fd5b7f20b8ca26cc94f39fab299954184cf3a9bd04f69543e4f454fab299f015b8130f60005260026020527f0c25bd6cb8545e46227bc56e841bd085538c74351fb22e98acdfbe596b353cfb80546001600160a01b0319166001600160a01b0392909216919091179055565b7f0a6f646cd611241d8073675e00d1a1ff700fbf1b53fcf473de56d1e6e4b714ba60005260046020527f078d888f9b66f3f8bfa10909e31f1e16240db73449f0500afdbbe3a70da457cc805460ff19166001179055565b620024e862001adc565b6001600160a01b0316336001600160a01b0316146200250657600080fd5b620025106200158d565b6001600160a01b03166200252362003319565b6001600160a01b0316146200253757600080fd5b565b604080516b36b2b9b9b0b3b2aa37b5b2b760a11b602080830191909152602c80830185905283518084039091018152604c90920183528151918101919091206000908152600290915220546001600160a01b0316919050565b604080516f1b595cdcd859d9549958da5c1a595b9d60821b602080830191909152603080830185905283518084039091018152605090920183528151918101919091206000908152600290915220546001600160a01b0316919050565b604080516b6d65737361676556616c756560a01b602080830191909152602c80830185905283518084039091018152604c90920183528151918101919091206000908152908190522054919050565b604080516b1b595cdcd859d9519a5e195960a21b602080830191909152602c8083019490945282518083039094018452604c9091018252825192810192909220600090815260049092529020805460ff19166001179055565b6000620026a48462001524565b9050808514156200275a57604080516919185a5b1e531a5b5a5d60b21b6020808301919091526001600160601b0319606088901b16602a83018190528351601e818503018152603e84018552805190830120600090815280835284812081905572195e1958dd5d1a5bdb91185a5b1e531a5b5a5d606a1b605e8501526071840191909152835160658185030181526085909301845282519282019290922082528190529081208190556200275a9085906200335e565b6200193e848215158585620033c7565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906200279f57508115155b949350505050565b604080516f686f6d65546f6b656e4164647265737360801b6020808301919091526001600160601b0319606086811b82166030850152845160248186030181526044850186528051908401206000908152600280855286822080546001600160a01b03808b166001600160a01b0319928316811790935572666f726569676e546f6b656e4164647265737360681b60648a0152948a901b90951660778801528751606b818903018152608b909701808952875197870197909720835294529485208054909216908716908117909155909290917f78d063210f4fb6b4cc932390bb8045fa2465e51349590182dab8b9e84c57a6ee9190a35050565b620028b981620028b360006200202b565b620021a0565b62000e2981620028ca600062001338565b62002238565b7f6168652c307c1e813ca11cfb3a601f1cf3b22452021a5052d8b05f1f1f8a3e925490565b805182901562000f925781516014146200290e57600080fd5b6200291982620034ac565b9392505050565b6001600160a01b038216158015906200295457506200293e6200158d565b6001600160a01b0316826001600160a01b031614155b6200295e57600080fd5b60006200296b8562000f65565b90506000811580620029835750620029838662001a66565b905060608262002c2d57306001600160a01b0316876001600160a01b0316636352211e866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015620029dc57600080fd5b505afa158015620029f1573d6000803e3d6000fd5b505050506040513d602081101562002a0857600080fd5b50516001600160a01b03161462002a1e57600080fd5b606062002a2b88620034b3565b9050606062002a3a8962003749565b9050606062002a4a8a88620038ee565b905060008351118062002a5e575060008251115b62002a6857600080fd5b62002a738a620028a2565b633c91b10560e01b8a84848b8b8660405160240180876001600160a01b031681526020018060200180602001866001600160a01b0316815260200185815260200180602001848103845289818151815260200191508051906020019080838360005b8381101562002aef57818101518382015260200162002ad5565b50505050905090810190601f16801562002b1d5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b8381101562002b5257818101518382015260200162002b38565b50505050905090810190601f16801562002b805780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b8381101562002bb557818101518382015260200162002b9b565b50505050905090810190601f16801562002be35780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909d169c909c17909b5250989c5062002df59b505050505050505050505050565b811562002d2857606062002c428886620038ee565b905063fbc547ce60e01b8887878460405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562002cb657818101518382015260200162002c9c565b50505050905090810190601f16801562002ce45780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909916989098179097525094965062002df595505050505050565b866001600160a01b03166342966c68856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801562002d6f57600080fd5b505af115801562002d84573d6000803e3d6000fd5b5050505063e3ae398460e01b62002d9b886200142d565b604080516001600160a01b0392831660248201529188166044830152606480830188905281518084039091018152608490920190526020810180516001600160e01b03166001600160e01b03199093169290921790915290505b811562002e0a5762002e0a878560016200318b565b600062002e1662001adc565b6001600160a01b031663dc8601b362002e2e6200158d565b8462002e39620019c1565b6040518463ffffffff1660e01b815260040180846001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101562002e9c57818101518382015260200162002e82565b50505050905090810190601f16801562002eca5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801562002eec57600080fd5b505af115801562002f01573d6000803e3d6000fd5b505050506040513d602081101562002f1857600080fd5b5051905062002f2c8415828a8a89620031f7565b5050505050505050565b6060816040516020018082805190602001908083835b6020831062002f6d5780518252601f19909201916020918201910162002f4c565b5181516020939093036101000a60001901801990911692169190911790526a081bdb8813585a5b9b995d60aa1b92019182525060408051808303601419018152600b9092019052949350505050565b62002fc78462000ff3565b62002fd157600080fd5b62002fdc8462003ac4565b62002fea84848484620033c7565b62002ff462003b49565b826001600160a01b0316856001600160a01b03167f9afd47907e25028cdaca89d193518c302bbb128617d5a992c5abd45815526593846040518082815260200191505060405180910390a450505050565b8015620030dc5760408051630588253160e21b81526004810185815260248201928352604482018490526001600160a01b0387169263162094c492879287928792606401848480828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b158015620030c757600080fd5b505af115801562002f2c573d6000803e3d6000fd5b50505050565b620030ec620028d0565b15620030f757600080fd5b62003103600162003b8e565b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038516916323b872dd91606480830192600092919082900301818387803b1580156200315857600080fd5b505af11580156200316d573d6000803e3d6000fd5b505050506200317d600062003b8e565b62001b408333848462002920565b604080516b6d65646961746f724f776e7360a01b602080830191909152606095861b6001600160601b031916602c830152818301949094528151808203830181529401815283519383019390932060009081526004909252919020805460ff1916911515919091179055565b6200320283620013f5565b6200320c57600080fd5b620032178362003bb2565b62003223848462003c34565b6200322f848362003ca0565b6200323b848262003d10565b84156200324e576200324e83856200335e565b83826001600160a01b0316846001600160a01b03167f59a9a8027b9c87b961e254899821c9a276b5efc35d1f7409ea4f291470f1629a846040518082815260200191505060405180910390a45050505050565b6000620032ad62001adc565b6001600160a01b031663e5789d036040518163ffffffff1660e01b815260040160206040518083038186803b158015620032e657600080fd5b505afa158015620032fb573d6000803e3d6000fd5b505050506040513d60208110156200331257600080fd5b5051905090565b60006200332562001adc565b6001600160a01b031663d67bdd256040518163ffffffff1660e01b815260040160206040518083038186803b158015620032e657600080fd5b604080517f746f6b656e526567697374726174696f6e4d657373616765496400000000000060208083019190915260609490941b6001600160601b031916603a8201528151808203602e018152604e909101825280519084012060009081529283905290912055565b82156200345457620033dc848260006200318b565b604080516323b872dd60e01b81523060048201526001600160a01b038481166024830152604482018490529151918616916323b872dd9160648082019260009290919082900301818387803b1580156200343557600080fd5b505af11580156200344a573d6000803e3d6000fd5b50505050620030dc565b836001600160a01b03166340c10f1983836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015620030c757600080fd5b6014015190565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b1781529151815160609360009385936001600160a01b03881693919290918291908083835b602083106200351e5780518252601f199092019160209182019101620034fd565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811462003580576040519150601f19603f3d011682016040523d82523d6000602084013e62003585565b606091505b50915091508162003676576040805169637573746f6d4e616d6560b01b602080830191909152606087901b6001600160601b031916602a8301528251808303601e018152603e83018085528151918301919091206000908152600180845290859020805460029281161561010002600019011691909104601f81018490049093028401605e9081019095528282529093909201828280156200366b5780601f106200363f576101008083540402835291602001916200366b565b820191906000526020600020905b8154815290600101906020018083116200364d57829003601f168201915b50505050506200279f565b8080602001905160208110156200368c57600080fd5b8101908080516040519392919084600160201b821115620036ac57600080fd5b908301906020820185811115620036c257600080fd5b8251600160201b811182820188101715620036dc57600080fd5b82525081516020918201929091019080838360005b838110156200370b578181015183820152602001620036f1565b50505050905090810190601f168015620037395780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b1781529151815160609360009385936001600160a01b03881693919290918291908083835b60208310620037b45780518252601f19909201916020918201910162003793565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811462003816576040519150601f19603f3d011682016040523d82523d6000602084013e6200381b565b606091505b5091509150816200367657600160008560405160200180806b18dd5cdd1bdb54de5b589bdb60a21b815250600c01826001600160a01b031660601b81526014019150506040516020818303038152906040528051906020012081526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200366b5780601f106200363f576101008083540402835291602001916200366b565b60408051602480820184905282518083039091018152604490910182526020810180516001600160e01b031663c87b56dd60e01b1781529151815160609360009385936001600160a01b03891693919290918291908083835b60208310620039685780518252601f19909201916020918201910162003947565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114620039ca576040519150601f19603f3d011682016040523d82523d6000602084013e620039cf565b606091505b509150915081620039f0576040518060200160405280600081525062003abb565b80806020019051602081101562003a0657600080fd5b8101908080516040519392919084600160201b82111562003a2657600080fd5b90830190602082018581111562003a3c57600080fd5b8251600160201b81118282018810171562003a5657600080fd5b82525081516020918201929091019080838360005b8381101562003a8557818101518382015260200162003a6b565b50505050905090810190601f16801562003ab35780820380516001836020036101000a031916815260200191505b506040525050505b95945050505050565b60016000808362003ad46200132f565b604051602001808072746f74616c457865637574656450657244617960681b815250601301836001600160a01b031660601b8152601401828152602001925050506040516020818303038152906040528051906020012081526020019081526020016000206000828254019250508190555050565b600062003b5562001adc565b6001600160a01b031663669f618b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620032e657600080fd5b7f6168652c307c1e813ca11cfb3a601f1cf3b22452021a5052d8b05f1f1f8a3e9255565b60016000808362003bc26200132f565b60405160200180806f746f74616c5370656e7450657244617960801b815250601001836001600160a01b031660601b8152601401828152602001925050506040516020818303038152906040528051906020012081526020019081526020016000206000828254019250508190555050565b604080516b36b2b9b9b0b3b2aa37b5b2b760a11b602080830191909152602c8083019590955282518083039095018552604c90910182528351938101939093206000908152600290935290912080546001600160a01b0319166001600160a01b03909216919091179055565b604080516f1b595cdcd859d9549958da5c1a595b9d60821b60208083019190915260308083019590955282518083039095018552605090910182528351938101939093206000908152600290935290912080546001600160a01b0319166001600160a01b03909216919091179055565b604080516b6d65737361676556616c756560a01b602080830191909152602c8083019590955282518083039095018552604c909101825283519381019390932060009081529283905290912055565b61051b8062003e1a83390190565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262003da5576000855562003df0565b82601f1062003dc05782800160ff1982351617855562003df0565b8280016001018555821562003df0579182015b8281111562003df057823582559160200191906001019062003dd3565b5062003dfe92915062003e02565b5090565b5b8082111562003dfe576000815560010162003e0356fe608060405234801561001057600080fd5b5060405161051b38038061051b8339818101604052608081101561003357600080fd5b81516020830180516040519294929383019291908464010000000082111561005a57600080fd5b90830190602082018581111561006f57600080fd5b825164010000000081118282018810171561008957600080fd5b82525081516020918201929091019080838360005b838110156100b657818101518382015260200161009e565b50505050905090810190601f1680156100e35780820380516001836020036101000a031916815260200191505b506040526020018051604051939291908464010000000082111561010657600080fd5b90830190602082018581111561011b57600080fd5b825164010000000081118282018810171561013557600080fd5b82525081516020918201929091019080838360005b8381101561016257818101518382015260200161014a565b50505050905090810190601f16801561018f5780820380516001836020036101000a031916815260200191505b506040526020908101517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc87905585519093506101d29250600691860190610210565b5081516101e6906007906020850190610210565b50600a80546001600160a01b0319166001600160a01b0392909216919091179055506102b1915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282610246576000855561028c565b82601f1061025f57805160ff191683800117855561028c565b8280016001018555821561028c579182015b8281111561028c578251825591602001919060010190610271565b5061029892915061029c565b5090565b5b80821115610298576000815560010161029d565b61025b806102c06000396000f3fe6080604052600436106100295760003560e01c80635c60da1b14610072578063d784d426146100a3575b60006100336100d8565b90506001600160a01b03811661004857600080fd5b60405136600082376000803683855af43d82016040523d6000833e80801561006e573d83f35b3d83fd5b34801561007e57600080fd5b506100876100d8565b604080516001600160a01b039092168252519081900360200190f35b3480156100af57600080fd5b506100d6600480360360208110156100c657600080fd5b50356001600160a01b03166100fd565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b600a546001600160a01b03163314806101975750600a60009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561015f57600080fd5b505afa158015610173573d6000803e3d6000fd5b505050506040513d602081101561018957600080fd5b50516001600160a01b031633145b6101a057600080fd5b6001600160a01b0381166101b357600080fd5b6101bc816101e9565b6101c557600080fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061021d57508115155b94935050505056fea264697066735822122051559610f0951a88edb2ea3e834b6119d44222168140ba4b23503d2174f84c7b64736f6c63430007050033a2646970667358221220c197a5753f97429eeaf2f7e1ee92c73882b644ba69377f5278d66bc39fe5719664736f6c63430007050033