diff --git a/abi-bindings/go/Teleporter/TeleporterMessenger/TeleporterMessenger.go b/abi-bindings/go/Teleporter/TeleporterMessenger/TeleporterMessenger.go index a540cc2a9..a54a45b23 100644 --- a/abi-bindings/go/Teleporter/TeleporterMessenger/TeleporterMessenger.go +++ b/abi-bindings/go/Teleporter/TeleporterMessenger/TeleporterMessenger.go @@ -66,7 +66,7 @@ type TeleporterMessageReceipt struct { // TeleporterMessengerMetaData contains all meta data concerning the TeleporterMessenger contract. var TeleporterMessengerMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"updatedFeeInfo\",\"type\":\"tuple\"}],\"name\":\"AddFeeAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"originBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"MessageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"originBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageExecutionFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"originBlockchainID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deliverer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardRedeemer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"ReceiveCrossChainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RelayerRewardsRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"name\":\"SendCrossChainMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"additionalFeeAmount\",\"type\":\"uint256\"}],\"name\":\"addFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"calculateMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"checkRelayerRewardAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getNextMessageID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getReceiptAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"getReceiptQueueSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"getRelayerRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initializeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"messageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"receiptQueues\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"first\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"receivedFailedMessageHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeAsset\",\"type\":\"address\"}],\"name\":\"redeemRelayerRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originBlockchainID\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retryMessageExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"receivedMessageNonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"relayerRewardAddress\",\"type\":\"address\"}],\"internalType\":\"structTeleporterMessageReceipt[]\",\"name\":\"receipts\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"retrySendCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destinationBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"requiredGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structTeleporterMessageInput\",\"name\":\"messageInput\",\"type\":\"tuple\"}],\"name\":\"sendCrossChainMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"originBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"messageIDs\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"allowedRelayerAddresses\",\"type\":\"address[]\"}],\"name\":\"sendSpecifiedReceipts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageID\",\"type\":\"bytes32\"}],\"name\":\"sentMessageInfo\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"feeTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structTeleporterFeeInfo\",\"name\":\"feeInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x6080604052600160035534801561001557600080fd5b506001600081905580556132448061002e6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a8898181116100c3578063df20e8bc1161007c578063df20e8bc1461033b578063e69d606a1461034e578063e6e67bd5146103b6578063ebc3b1ba146103f2578063ecc7042814610415578063fc2d61971461041e57600080fd5b8063a8898181146102b2578063a9a85614146102c5578063b771b3bc146102d8578063c473eef8146102e6578063ccb5f8091461031f578063d127dc9b1461033257600080fd5b8063399b77da11610115578063399b77da1461021957806362448850146102395780638245a1b01461024c578063860a3b061461025f578063892bf4121461027f5780638ac0fd041461029f57600080fd5b80630af5b4ff1461015257806322296c3a1461016d5780632bc8b0bf146101825780632ca40f55146101955780632e27c223146101ee575b600080fd5b61015a610431565b6040519081526020015b60405180910390f35b61018061017b366004612227565b6104b2565b005b61015a610190366004612244565b6105ac565b6101e06101a3366004612244565b6005602090815260009182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b60405161016492919061225d565b6102016101fc366004612244565b6105c9565b6040516001600160a01b039091168152602001610164565b61015a610227366004612244565b60009081526005602052604090205490565b61015a610247366004612284565b610652565b61018061025a3660046122d7565b6106b0565b61015a61026d366004612244565b60066020526000908152604090205481565b61029261028d36600461230b565b61085b565b604051610164919061232d565b6101806102ad36600461234d565b61088e565b61015a6102c0366004612385565b610aa4565b61015a6102d33660046123fc565b610ae7565b6102016005600160991b0181565b61015a6102f4366004612494565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61018061032d3660046124cd565b610d8c565b61015a60025481565b61015a610349366004612244565b6111cb565b61039761035c366004612244565b600090815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b039093168352602083019190915201610164565b6103dd6103c4366004612244565b6004602052600090815260409020805460019091015482565b60408051928352602083019190915201610164565b610405610400366004612244565b61123b565b6040519015158152602001610164565b61015a60035481565b61018061042c3660046124f4565b611251565b600254600090806104ad576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a5919061253a565b600281905590505b919050565b3360009081526009602090815260408083206001600160a01b0385168452909152902054806105395760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084015b60405180910390fd5b3360008181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105a86001600160a01b03831633836114ac565b5050565b60008181526004602052604081206105c390611514565b92915050565b6000818152600760205260408120546106365760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b6064820152608401610530565b506000908152600860205260409020546001600160a01b031690565b60006001600054146106765760405162461bcd60e51b815260040161053090612553565b60026000556106a561068783612793565b833560009081526004602052604090206106a090611527565b611636565b600160005592915050565b6001600054146106d25760405162461bcd60e51b815260040161053090612553565b6002600081815590546106eb9060408401358435610aa4565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b0316845260029091015483830152908101919091528051919250906107535760405162461bcd60e51b815260040161053090612836565b6000836040516020016107669190612ad1565b60408051601f198184030181529190528251815160208301209192501461079f5760405162461bcd60e51b815260040161053090612ae4565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df88685602001516040516107da929190612b2d565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061080c908490600401612bb2565b6020604051808303816000875af115801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f919061253a565b50506001600055505050565b604080518082019091526000808252602082015260008381526004602052604090206108879083611876565b9392505050565b6001600054146108b05760405162461bcd60e51b815260040161053090612553565b60026000558061091a5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b6064820152608401610530565b6001600160a01b0382166109405760405162461bcd60e51b815260040161053090612bc5565b60008381526005602052604090205461096b5760405162461bcd60e51b815260040161053090612836565b6000838152600560205260409020600101546001600160a01b038381169116146109fd5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e747261637420616464726573730000000000000000006064820152608401610530565b6000610a09838361193b565b600085815260056020526040812060020180549293508392909190610a2f908490612c2f565b909155505060008481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610a91916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060016000555050565b60408051306020820152908101849052606081018390526080810182905260009060a0016040516020818303038152906040528051906020012090509392505050565b6000600160005414610b0b5760405162461bcd60e51b815260040161053090612553565b60026000818155905490866001600160401b03811115610b2d57610b2d612596565b604051908082528060200260200182016040528015610b7257816020015b6040805180820190915260008082526020820152815260200190600190039081610b4b5790505b50905060005b87811015610cf6576000898983818110610b9457610b94612c42565b90506020020135905060006007600083815260200190815260200160002054905080600003610c145760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b6064820152608401610530565b610c1f8c8683610aa4565b8214610c935760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d206f726967696e20626c6f636b636861696e0000000000006064820152608401610530565b6000828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528551909190869086908110610cd757610cd7612c42565b602002602001018190525050505080610cef90612c58565b9050610b78565b506040805160c0810182528a815260006020820152610d7a918101610d20368a90038a018a612c71565b81526020016000815260200187878080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509385525050604080519283526020808401909152909201525082611636565b60016000559998505050505050505050565b6001805414610dad5760405162461bcd60e51b815260040161053090612c8d565b60026001556040516306f8253560e41b815263ffffffff8316600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e279190810190612d32565b9150915080610e8a5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b6064820152608401610530565b60208201516001600160a01b03163014610f015760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b6064820152608401610530565b60008260400151806020019051810190610f1b9190612ecf565b90506000610f27610431565b905080826040015114610f965760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b6064820152608401610530565b83518251600091610fa8918490610aa4565b6000818152600760205260409020549091501561101d5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b6064820152608401610530565b61102b338460a00151611aa3565b6110895760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b6064820152608401610530565b611097818460000151611b18565b6001600160a01b038616156110ce57600081815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60e083015151156110e8576110e881866000015185611b8a565b60c08301515160005b81811015611135576111258488600001518760c00151848151811061111857611118612c42565b6020026020010151611cbd565b61112e81612c58565b90506110f1565b5085516000908152600460209081526040918290208251808401909352865183526001600160a01b038a169183019190915290611173908290611d98565b336001600160a01b03168760000151847f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348b896040516111b49291906130df565b60405180910390a450506001805550505050505050565b6002546000908061122e5760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636044820152661a185a5b88125160ca1b6064820152608401610530565b6108878184600354610aa4565b60008181526007602052604081205415156105c3565b60018054146112725760405162461bcd60e51b815260040161053090612c8d565b600260018190555460009061128a9084908435610aa4565b600081815260066020526040902054909150806112b95760405162461bcd60e51b815260040161053090612836565b80836040516020016112cb9190612ad1565b60405160208183030381529060405280519060200120146112fe5760405162461bcd60e51b815260040161053090612ae4565b60006113106080850160608601612227565b6001600160a01b03163b116113845760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b6064820152608401610530565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a3600082815260066020908152604080832083905586916113d5918701908701612227565b6113e260e0870187613103565b6040516024016113f59493929190613149565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b1790529050600061143d6114366080870160608801612227565b5a84611df4565b9050806114a05760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b6064820152608401610530565b50506001805550505050565b6040516001600160a01b03831660248201526044810182905261150f90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611e0e565b505050565b805460018201546000916105c391613174565b6060600061153e600561153985611514565b611ee0565b90508060000361158d576040805160008082526020820190925290611585565b604080518082019091526000808252602082015281526020019060019003908161155e5790505b509392505050565b806001600160401b038111156115a5576115a5612596565b6040519080825280602002602001820160405280156115ea57816020015b60408051808201909152600080825260208201528152602001906001900390816115c35790505b50915060005b8181101561162f5761160184611ef6565b83828151811061161357611613612c42565b60200260200101819052508061162890612c58565b90506115f0565b5050919050565b600080611641610431565b905060006003549050600061165b83876000015184610aa4565b90506000604051806101000160405280848152602001336001600160a01b031681526020018860000151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090506000816040516020016116d49190613187565b60405160208183030381529060405290506003600081546116f490612c58565b909155506040880151602001516000901561174e576040890151516001600160a01b03166117345760405162461bcd60e51b815260040161053090612bc5565b6040890151805160209091015161174b919061193b565b90505b6040805180820182528a820151516001600160a01b039081168252602080830185905283518085018552865187830120815280820184815260008a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906117f2908890869061319a565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb90611824908690600401612bb2565b6020604051808303816000875af1158015611843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611867919061253a565b50939998505050505050505050565b604080518082019091526000808252602082015261189383611514565b82106118eb5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b6064820152608401610530565b8260020160008385600001546119019190612c2f565b81526020808201929092526040908101600020815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015611984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a8919061253a565b90506119bf6001600160a01b038516333086611fc1565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2a919061253a565b9050818111611a905760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610530565b611a9a8282613174565b95945050505050565b60008151600003611ab6575060016105c3565b60005b8251811015611b0e57836001600160a01b0316838281518110611ade57611ade612c42565b60200260200101516001600160a01b031603611afe5760019150506105c3565b611b0781612c58565b9050611ab9565b5060009392505050565b80600003611b785760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b6064820152608401610530565b60009182526007602052604090912055565b80608001515a1015611bec5760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b6064820152608401610530565b80606001516001600160a01b03163b600003611c0d5761150f838383611fff565b602081015160e0820151604051600092611c2b9286926024016131ad565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905260608301516080840151919250600091611c70919084611df4565b905080611c8957611c82858585611fff565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a35050505050565b6000611cce84848460000151610aa4565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611d25575050505050565b60008281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611d8c908490612c2f565b90915550505050505050565b6001820180548291600285019160009182611db283612c58565b90915550815260208082019290925260400160002082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b60008060008084516020860160008989f195945050505050565b6000611e63826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166120749092919063ffffffff16565b80519091501561150f5780806020019051810190611e8191906131d7565b61150f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610530565b6000818310611eef5781610887565b5090919050565b604080518082019091526000808252602082015281546001830154819003611f605760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d707479207175657565000000000000006044820152606401610530565b60008181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b031990921690559250611fb9908290612c2f565b909255919050565b6040516001600160a01b0380851660248301528316604482015260648101829052611ff99085906323b872dd60e01b906084016114d8565b50505050565b806040516020016120109190613187565b60408051601f1981840301815282825280516020918201206000878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c98590612067908590613187565b60405180910390a3505050565b6060612083848460008561208b565b949350505050565b6060824710156120ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610530565b600080866001600160a01b0316858760405161210891906131f2565b60006040518083038185875af1925050503d8060008114612145576040519150601f19603f3d011682016040523d82523d6000602084013e61214a565b606091505b509150915061215b87838387612166565b979650505050505050565b606083156121d55782516000036121ce576001600160a01b0385163b6121ce5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610530565b5081612083565b61208383838151156121ea5781518083602001fd5b8060405162461bcd60e51b81526004016105309190612bb2565b6001600160a01b038116811461221957600080fd5b50565b80356104ad81612204565b60006020828403121561223957600080fd5b813561088781612204565b60006020828403121561225657600080fd5b5035919050565b82815260608101610887602083018480516001600160a01b03168252602090810151910152565b60006020828403121561229657600080fd5b81356001600160401b038111156122ac57600080fd5b820160e0818503121561088757600080fd5b600061010082840312156122d157600080fd5b50919050565b6000602082840312156122e957600080fd5b81356001600160401b038111156122ff57600080fd5b612083848285016122be565b6000806040838503121561231e57600080fd5b50508035926020909101359150565b815181526020808301516001600160a01b031690820152604081016105c3565b60008060006060848603121561236257600080fd5b83359250602084013561237481612204565b929592945050506040919091013590565b60008060006060848603121561239a57600080fd5b505081359360208301359350604090920135919050565b60008083601f8401126123c357600080fd5b5081356001600160401b038111156123da57600080fd5b6020830191508360208260051b85010111156123f557600080fd5b9250929050565b60008060008060008086880360a081121561241657600080fd5b8735965060208801356001600160401b038082111561243457600080fd5b6124408b838c016123b1565b90985096508691506040603f198401121561245a57600080fd5b60408a01955060808a013592508083111561247457600080fd5b505061248289828a016123b1565b979a9699509497509295939492505050565b600080604083850312156124a757600080fd5b82356124b281612204565b915060208301356124c281612204565b809150509250929050565b600080604083850312156124e057600080fd5b823563ffffffff811681146124b257600080fd5b6000806040838503121561250757600080fd5b8235915060208301356001600160401b0381111561252457600080fd5b612530858286016122be565b9150509250929050565b60006020828403121561254c57600080fd5b5051919050565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156125ce576125ce612596565b60405290565b60405160c081016001600160401b03811182821017156125ce576125ce612596565b60405161010081016001600160401b03811182821017156125ce576125ce612596565b604051601f8201601f191681016001600160401b038111828210171561264157612641612596565b604052919050565b60006040828403121561265b57600080fd5b6126636125ac565b9050813561267081612204565b808252506020820135602082015292915050565b60006001600160401b0382111561269d5761269d612596565b5060051b60200190565b600082601f8301126126b857600080fd5b813560206126cd6126c883612684565b612619565b82815260059290921b840181019181810190868411156126ec57600080fd5b8286015b8481101561271057803561270381612204565b83529183019183016126f0565b509695505050505050565b60006001600160401b0382111561273457612734612596565b50601f01601f191660200190565b600082601f83011261275357600080fd5b81356127616126c88261271b565b81815284602083860101111561277657600080fd5b816020850160208301376000918101602001919091529392505050565b600060e082360312156127a557600080fd5b6127ad6125d4565b823581526127bd6020840161221c565b60208201526127cf3660408501612649565b60408201526080830135606082015260a08301356001600160401b03808211156127f857600080fd5b612804368387016126a7565b608084015260c085013591508082111561281d57600080fd5b5061282a36828601612742565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b6000808335601e1984360301811261289357600080fd5b83016020810192503590506001600160401b038111156128b257600080fd5b8060051b36038213156123f557600080fd5b8183526000602080850194508260005b858110156129025781356128e781612204565b6001600160a01b0316875295820195908201906001016128d4565b509495945050505050565b6000808335601e1984360301811261292457600080fd5b83016020810192503590506001600160401b0381111561294357600080fd5b8060061b36038213156123f557600080fd5b8183526000602080850194508260005b8581101561290257813587528282013561297e81612204565b6001600160a01b0316878401526040968701969190910190600101612965565b6000808335601e198436030181126129b557600080fd5b83016020810192503590506001600160401b038111156129d457600080fd5b8036038213156123f557600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000610100823584526020830135612a2381612204565b6001600160a01b0316602085015260408381013590850152612a476060840161221c565b6001600160a01b0316606085015260808381013590850152612a6c60a084018461287c565b8260a0870152612a7f83870182846128c4565b92505050612a9060c084018461290d565b85830360c0870152612aa3838284612955565b92505050612ab460e084018461299e565b85830360e0870152612ac78382846129e3565b9695505050505050565b6020815260006108876020830184612a0c565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081526000612b406060830185612a0c565b9050610887602083018480516001600160a01b03168252602090810151910152565b60005b83811015612b7d578181015183820152602001612b65565b50506000910152565b60008151808452612b9e816020860160208601612b62565b601f01601f19169290920160200192915050565b6020815260006108876020830184612b86565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156105c3576105c3612c19565b634e487b7160e01b600052603260045260246000fd5b600060018201612c6a57612c6a612c19565b5060010190565b600060408284031215612c8357600080fd5b6108878383612649565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b80516104ad81612204565b600082601f830112612cee57600080fd5b8151612cfc6126c88261271b565b818152846020838601011115612d1157600080fd5b612083826020830160208701612b62565b805180151581146104ad57600080fd5b60008060408385031215612d4557600080fd5b82516001600160401b0380821115612d5c57600080fd5b9084019060608287031215612d7057600080fd5b604051606081018181108382111715612d8b57612d8b612596565b604052825181526020830151612da081612204565b6020820152604083015182811115612db757600080fd5b612dc388828601612cdd565b6040830152509350612dda91505060208401612d22565b90509250929050565b600082601f830112612df457600080fd5b81516020612e046126c883612684565b82815260059290921b84018101918181019086841115612e2357600080fd5b8286015b84811015612710578051612e3a81612204565b8352918301918301612e27565b600082601f830112612e5857600080fd5b81516020612e686126c883612684565b82815260069290921b84018101918181019086841115612e8757600080fd5b8286015b848110156127105760408189031215612ea45760008081fd5b612eac6125ac565b8151815284820151612ebd81612204565b81860152835291830191604001612e8b565b600060208284031215612ee157600080fd5b81516001600160401b0380821115612ef857600080fd5b908301906101008286031215612f0d57600080fd5b612f156125f6565b82518152612f2560208401612cd2565b602082015260408301516040820152612f4060608401612cd2565b60608201526080830151608082015260a083015182811115612f6157600080fd5b612f6d87828601612de3565b60a08301525060c083015182811115612f8557600080fd5b612f9187828601612e47565b60c08301525060e083015182811115612fa957600080fd5b612fb587828601612cdd565b60e08301525095945050505050565b600081518084526020808501945080840160005b838110156129025781516001600160a01b031687529582019590820190600101612fd8565b600081518084526020808501945080840160005b8381101561290257613037878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101613011565b60006101008251845260018060a01b03602084015116602085015260408301516040850152606083015161308960608601826001600160a01b03169052565b506080830151608085015260a08301518160a08601526130ab82860182612fc4565b91505060c083015184820360c08601526130c58282612ffd565b91505060e083015184820360e0860152611a9a8282612b86565b6001600160a01b03831681526040602082018190526000906120839083018461304a565b6000808335601e1984360301811261311a57600080fd5b8301803591506001600160401b0382111561313457600080fd5b6020019150368190038213156123f557600080fd5b8481526001600160a01b0384166020820152606060408201819052600090612ac790830184866129e3565b818103818111156105c3576105c3612c19565b602081526000610887602083018461304a565b606081526000612b40606083018561304a565b8381526001600160a01b0383166020820152606060408201819052600090611a9a90830184612b86565b6000602082840312156131e957600080fd5b61088782612d22565b60008251613204818460208701612b62565b919091019291505056fea264697066735822122028395903ff6b4af7baa0a24fa3c2821072105b3f8476e27a8c142cca4514b3f964736f6c63430008120033", + Bin: "0x6080604052600160035534801561001557600080fd5b506001600081905580556132448061002e6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a8898181116100c3578063df20e8bc1161007c578063df20e8bc1461033b578063e69d606a1461034e578063e6e67bd5146103b6578063ebc3b1ba146103f2578063ecc7042814610415578063fc2d61971461041e57600080fd5b8063a8898181146102b2578063a9a85614146102c5578063b771b3bc146102d8578063c473eef8146102e6578063ccb5f8091461031f578063d127dc9b1461033257600080fd5b8063399b77da11610115578063399b77da1461021957806362448850146102395780638245a1b01461024c578063860a3b061461025f578063892bf4121461027f5780638ac0fd041461029f57600080fd5b80630af5b4ff1461015257806322296c3a1461016d5780632bc8b0bf146101825780632ca40f55146101955780632e27c223146101ee575b600080fd5b61015a610431565b6040519081526020015b60405180910390f35b61018061017b366004612227565b6104b2565b005b61015a610190366004612244565b6105ac565b6101e06101a3366004612244565b6005602090815260009182526040918290208054835180850190945260018201546001600160a01b03168452600290910154918301919091529082565b60405161016492919061225d565b6102016101fc366004612244565b6105c9565b6040516001600160a01b039091168152602001610164565b61015a610227366004612244565b60009081526005602052604090205490565b61015a610247366004612284565b610652565b61018061025a3660046122d7565b6106b0565b61015a61026d366004612244565b60066020526000908152604090205481565b61029261028d36600461230b565b61085b565b604051610164919061232d565b6101806102ad36600461234d565b61088e565b61015a6102c0366004612385565b610aa4565b61015a6102d33660046123fc565b610ae7565b6102016005600160991b0181565b61015a6102f4366004612494565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b61018061032d3660046124cd565b610d8c565b61015a60025481565b61015a610349366004612244565b6111cb565b61039761035c366004612244565b600090815260056020908152604091829020825180840190935260018101546001600160a01b03168084526002909101549290910182905291565b604080516001600160a01b039093168352602083019190915201610164565b6103dd6103c4366004612244565b6004602052600090815260409020805460019091015482565b60408051928352602083019190915201610164565b610405610400366004612244565b61123b565b6040519015158152602001610164565b61015a60035481565b61018061042c3660046124f4565b611251565b600254600090806104ad576005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a5919061253a565b600281905590505b919050565b3360009081526009602090815260408083206001600160a01b0385168452909152902054806105395760405162461bcd60e51b815260206004820152602860248201527f54656c65706f727465724d657373656e6765723a206e6f2072657761726420746044820152676f2072656465656d60c01b60648201526084015b60405180910390fd5b3360008181526009602090815260408083206001600160a01b03871680855290835281842093909355518481529192917f3294c84e5b0f29d9803655319087207bc94f4db29f7927846944822773780b88910160405180910390a36105a86001600160a01b03831633836114ac565b5050565b60008181526004602052604081206105c390611514565b92915050565b6000818152600760205260408120546106365760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f74604482015268081c9958d95a5d995960ba1b6064820152608401610530565b506000908152600860205260409020546001600160a01b031690565b60006001600054146106765760405162461bcd60e51b815260040161053090612553565b60026000556106a561068783612793565b833560009081526004602052604090206106a090611527565b611636565b600160005592915050565b6001600054146106d25760405162461bcd60e51b815260040161053090612553565b6002600081815590546106eb9060408401358435610aa4565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b0316845260029091015483830152908101919091528051919250906107535760405162461bcd60e51b815260040161053090612836565b6000836040516020016107669190612ad1565b60408051601f198184030181529190528251815160208301209192501461079f5760405162461bcd60e51b815260040161053090612ae4565b8360400135837f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df88685602001516040516107da929190612b2d565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb9061080c908490600401612bb2565b6020604051808303816000875af115801561082b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084f919061253a565b50506001600055505050565b604080518082019091526000808252602082015260008381526004602052604090206108879083611876565b9392505050565b6001600054146108b05760405162461bcd60e51b815260040161053090612553565b60026000558061091a5760405162461bcd60e51b815260206004820152602f60248201527f54656c65706f727465724d657373656e6765723a207a65726f2061646469746960448201526e1bdb985b0819995948185b5bdd5b9d608a1b6064820152608401610530565b6001600160a01b0382166109405760405162461bcd60e51b815260040161053090612bc5565b60008381526005602052604090205461096b5760405162461bcd60e51b815260040161053090612836565b6000838152600560205260409020600101546001600160a01b038381169116146109fd5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642066656560448201527f20617373657420636f6e747261637420616464726573730000000000000000006064820152608401610530565b6000610a09838361193b565b600085815260056020526040812060020180549293508392909190610a2f908490612c2f565b909155505060008481526005602052604090819020905185917fc1bfd1f1208927dfbd414041dcb5256e6c9ad90dd61aec3249facbd34ff7b3e191610a91916001019081546001600160a01b0316815260019190910154602082015260400190565b60405180910390a2505060016000555050565b60408051306020820152908101849052606081018390526080810182905260009060a0016040516020818303038152906040528051906020012090509392505050565b6000600160005414610b0b5760405162461bcd60e51b815260040161053090612553565b60026000818155905490866001600160401b03811115610b2d57610b2d612596565b604051908082528060200260200182016040528015610b7257816020015b6040805180820190915260008082526020820152815260200190600190039081610b4b5790505b50905060005b87811015610cf6576000898983818110610b9457610b94612c42565b90506020020135905060006007600083815260200190815260200160002054905080600003610c145760405162461bcd60e51b815260206004820152602660248201527f54656c65706f727465724d657373656e6765723a2072656365697074206e6f7460448201526508199bdd5b9960d21b6064820152608401610530565b610c1f8c8683610aa4565b8214610c935760405162461bcd60e51b815260206004820152603a60248201527f54656c65706f727465724d657373656e6765723a206d6573736167652049442060448201527f6e6f742066726f6d206f726967696e20626c6f636b636861696e0000000000006064820152608401610530565b6000828152600860209081526040918290205482518084019093528383526001600160a01b03169082018190528551909190869086908110610cd757610cd7612c42565b602002602001018190525050505080610cef90612c58565b9050610b78565b506040805160c0810182528a815260006020820152610d7a918101610d20368a90038a018a612c71565b81526020016000815260200187878080602002602001604051908101604052809392919081815260200183836020028082843760009201829052509385525050604080519283526020808401909152909201525082611636565b60016000559998505050505050505050565b6001805414610dad5760405162461bcd60e51b815260040161053090612c8d565b60026001556040516306f8253560e41b815263ffffffff8316600482015260009081906005600160991b0190636f82535090602401600060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e279190810190612d32565b9150915080610e8a5760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20696e76616c69642077617260448201526870206d65737361676560b81b6064820152608401610530565b60208201516001600160a01b03163014610f015760405162461bcd60e51b815260206004820152603260248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b6064820152608401610530565b60008260400151806020019051810190610f1b9190612ecf565b90506000610f27610431565b905080826040015114610f965760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206465736044820152701d1a5b985d1a5bdb8818da185a5b881251607a1b6064820152608401610530565b83518251600091610fa8918490610aa4565b6000818152600760205260409020549091501561101d5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465724d657373656e6765723a206d65737361676520616c7260448201526c1958591e481c9958d95a5d9959609a1b6064820152608401610530565b61102b338460a00151611aa3565b6110895760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465724d657373656e6765723a20756e617574686f72697a6560448201526832103932b630bcb2b960b91b6064820152608401610530565b611097818460000151611b18565b6001600160a01b038616156110ce57600081815260086020526040902080546001600160a01b0319166001600160a01b0388161790555b60c08301515160005b8181101561111b5761110b8488600001518760c0015184815181106110fe576110fe612c42565b6020026020010151611b8a565b61111481612c58565b90506110d7565b5085516000908152600460209081526040918290208251808401909352865183526001600160a01b038a169183019190915290611159908290611c65565b336001600160a01b03168760000151847f292ee90bbaf70b5d4936025e09d56ba08f3e421156b6a568cf3c2840d9343e348b8960405161119a9291906130df565b60405180910390a460e085015151156111bc576111bc83886000015187611cc1565b50506001805550505050505050565b6002546000908061122e5760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f20626c6f636b636044820152661a185a5b88125160ca1b6064820152608401610530565b6108878184600354610aa4565b60008181526007602052604081205415156105c3565b60018054146112725760405162461bcd60e51b815260040161053090612c8d565b600260018190555460009061128a9084908435610aa4565b600081815260066020526040902054909150806112b95760405162461bcd60e51b815260040161053090612836565b80836040516020016112cb9190612ad1565b60405160208183030381529060405280519060200120146112fe5760405162461bcd60e51b815260040161053090612ae4565b60006113106080850160608601612227565b6001600160a01b03163b116113845760405162461bcd60e51b815260206004820152603460248201527f54656c65706f727465724d657373656e6765723a2064657374696e6174696f6e604482015273206164647265737320686173206e6f20636f646560601b6064820152608401610530565b604051849083907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a3600082815260066020908152604080832083905586916113d5918701908701612227565b6113e260e0870187613103565b6040516024016113f59493929190613149565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b1790529050600061143d6114366080870160608801612227565b5a84611df4565b9050806114a05760405162461bcd60e51b815260206004820152602b60248201527f54656c65706f727465724d657373656e6765723a20726574727920657865637560448201526a1d1a5bdb8819985a5b195960aa1b6064820152608401610530565b50506001805550505050565b6040516001600160a01b03831660248201526044810182905261150f90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611e0e565b505050565b805460018201546000916105c391613174565b6060600061153e600561153985611514565b611ee0565b90508060000361158d576040805160008082526020820190925290611585565b604080518082019091526000808252602082015281526020019060019003908161155e5790505b509392505050565b806001600160401b038111156115a5576115a5612596565b6040519080825280602002602001820160405280156115ea57816020015b60408051808201909152600080825260208201528152602001906001900390816115c35790505b50915060005b8181101561162f5761160184611ef6565b83828151811061161357611613612c42565b60200260200101819052508061162890612c58565b90506115f0565b5050919050565b600080611641610431565b905060006003549050600061165b83876000015184610aa4565b90506000604051806101000160405280848152602001336001600160a01b031681526020018860000151815260200188602001516001600160a01b0316815260200188606001518152602001886080015181526020018781526020018860a0015181525090506000816040516020016116d49190613187565b60405160208183030381529060405290506003600081546116f490612c58565b909155506040880151602001516000901561174e576040890151516001600160a01b03166117345760405162461bcd60e51b815260040161053090612bc5565b6040890151805160209091015161174b919061193b565b90505b6040805180820182528a820151516001600160a01b039081168252602080830185905283518085018552865187830120815280820184815260008a815260058452869020915182555180516001830180546001600160a01b03191691909516179093559101516002909101558a51915190919086907f2a211ad4a59ab9d003852404f9c57c690704ee755f3c79d2c2812ad32da99df8906117f2908890869061319a565b60405180910390a360405163ee5b48eb60e01b81526005600160991b019063ee5b48eb90611824908690600401612bb2565b6020604051808303816000875af1158015611843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611867919061253a565b50939998505050505050505050565b604080518082019091526000808252602082015261189383611514565b82106118eb5760405162461bcd60e51b815260206004820152602160248201527f5265636569707451756575653a20696e646578206f7574206f6620626f756e646044820152607360f81b6064820152608401610530565b8260020160008385600001546119019190612c2f565b81526020808201929092526040908101600020815180830190925280548252600101546001600160a01b0316918101919091529392505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038516906370a0823190602401602060405180830381865afa158015611984573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a8919061253a565b90506119bf6001600160a01b038516333086611fc1565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2a919061253a565b9050818111611a905760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610530565b611a9a8282613174565b95945050505050565b60008151600003611ab6575060016105c3565b60005b8251811015611b0e57836001600160a01b0316838281518110611ade57611ade612c42565b60200260200101516001600160a01b031603611afe5760019150506105c3565b611b0781612c58565b9050611ab9565b5060009392505050565b80600003611b785760405162461bcd60e51b815260206004820152602760248201527f54656c65706f727465724d657373656e6765723a207a65726f206d657373616760448201526665206e6f6e636560c81b6064820152608401610530565b60009182526007602052604090912055565b6000611b9b84848460000151610aa4565b6000818152600560209081526040918290208251808401845281548152835180850190945260018201546001600160a01b031684526002909101548383015290810191909152805191925090611bf2575050505050565b60008281526005602090815260408083208381556001810180546001600160a01b03191690556002018390558382018051830151878401516001600160a01b0390811686526009855283862092515116855292528220805491929091611c59908490612c2f565b90915550505050505050565b6001820180548291600285019160009182611c7f83612c58565b90915550815260208082019290925260400160002082518155910151600190910180546001600160a01b0319166001600160a01b039092169190911790555050565b80608001515a1015611d235760405162461bcd60e51b815260206004820152602560248201527f54656c65706f727465724d657373656e6765723a20696e73756666696369656e604482015264742067617360d81b6064820152608401610530565b80606001516001600160a01b03163b600003611d445761150f838383611fff565b602081015160e0820151604051600092611d629286926024016131ad565b60408051601f198184030181529190526020810180516001600160e01b031663643477d560e11b17905260608301516080840151919250600091611da7919084611df4565b905080611dc057611db9858585611fff565b5050505050565b604051849086907f34795cc6b122b9a0ae684946319f1e14a577b4e8f9b3dda9ac94c21a54d3188c90600090a35050505050565b60008060008084516020860160008989f195945050505050565b6000611e63826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166120749092919063ffffffff16565b80519091501561150f5780806020019051810190611e8191906131d7565b61150f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610530565b6000818310611eef5781610887565b5090919050565b604080518082019091526000808252602082015281546001830154819003611f605760405162461bcd60e51b815260206004820152601960248201527f5265636569707451756575653a20656d707479207175657565000000000000006044820152606401610530565b60008181526002840160208181526040808420815180830190925280548252600180820180546001600160a01b03811685870152888852959094529490556001600160a01b031990921690559250611fb9908290612c2f565b909255919050565b6040516001600160a01b0380851660248301528316604482015260648101829052611ff99085906323b872dd60e01b906084016114d8565b50505050565b806040516020016120109190613187565b60408051601f1981840301815282825280516020918201206000878152600690925291902055829084907f4619adc1017b82e02eaefac01a43d50d6d8de4460774bc370c3ff0210d40c98590612067908590613187565b60405180910390a3505050565b6060612083848460008561208b565b949350505050565b6060824710156120ec5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610530565b600080866001600160a01b0316858760405161210891906131f2565b60006040518083038185875af1925050503d8060008114612145576040519150601f19603f3d011682016040523d82523d6000602084013e61214a565b606091505b509150915061215b87838387612166565b979650505050505050565b606083156121d55782516000036121ce576001600160a01b0385163b6121ce5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610530565b5081612083565b61208383838151156121ea5781518083602001fd5b8060405162461bcd60e51b81526004016105309190612bb2565b6001600160a01b038116811461221957600080fd5b50565b80356104ad81612204565b60006020828403121561223957600080fd5b813561088781612204565b60006020828403121561225657600080fd5b5035919050565b82815260608101610887602083018480516001600160a01b03168252602090810151910152565b60006020828403121561229657600080fd5b81356001600160401b038111156122ac57600080fd5b820160e0818503121561088757600080fd5b600061010082840312156122d157600080fd5b50919050565b6000602082840312156122e957600080fd5b81356001600160401b038111156122ff57600080fd5b612083848285016122be565b6000806040838503121561231e57600080fd5b50508035926020909101359150565b815181526020808301516001600160a01b031690820152604081016105c3565b60008060006060848603121561236257600080fd5b83359250602084013561237481612204565b929592945050506040919091013590565b60008060006060848603121561239a57600080fd5b505081359360208301359350604090920135919050565b60008083601f8401126123c357600080fd5b5081356001600160401b038111156123da57600080fd5b6020830191508360208260051b85010111156123f557600080fd5b9250929050565b60008060008060008086880360a081121561241657600080fd5b8735965060208801356001600160401b038082111561243457600080fd5b6124408b838c016123b1565b90985096508691506040603f198401121561245a57600080fd5b60408a01955060808a013592508083111561247457600080fd5b505061248289828a016123b1565b979a9699509497509295939492505050565b600080604083850312156124a757600080fd5b82356124b281612204565b915060208301356124c281612204565b809150509250929050565b600080604083850312156124e057600080fd5b823563ffffffff811681146124b257600080fd5b6000806040838503121561250757600080fd5b8235915060208301356001600160401b0381111561252457600080fd5b612530858286016122be565b9150509250929050565b60006020828403121561254c57600080fd5b5051919050565b60208082526023908201527f5265656e7472616e63794775617264733a2073656e646572207265656e7472616040820152626e637960e81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156125ce576125ce612596565b60405290565b60405160c081016001600160401b03811182821017156125ce576125ce612596565b60405161010081016001600160401b03811182821017156125ce576125ce612596565b604051601f8201601f191681016001600160401b038111828210171561264157612641612596565b604052919050565b60006040828403121561265b57600080fd5b6126636125ac565b9050813561267081612204565b808252506020820135602082015292915050565b60006001600160401b0382111561269d5761269d612596565b5060051b60200190565b600082601f8301126126b857600080fd5b813560206126cd6126c883612684565b612619565b82815260059290921b840181019181810190868411156126ec57600080fd5b8286015b8481101561271057803561270381612204565b83529183019183016126f0565b509695505050505050565b60006001600160401b0382111561273457612734612596565b50601f01601f191660200190565b600082601f83011261275357600080fd5b81356127616126c88261271b565b81815284602083860101111561277657600080fd5b816020850160208301376000918101602001919091529392505050565b600060e082360312156127a557600080fd5b6127ad6125d4565b823581526127bd6020840161221c565b60208201526127cf3660408501612649565b60408201526080830135606082015260a08301356001600160401b03808211156127f857600080fd5b612804368387016126a7565b608084015260c085013591508082111561281d57600080fd5b5061282a36828601612742565b60a08301525092915050565b60208082526026908201527f54656c65706f727465724d657373656e6765723a206d657373616765206e6f7460408201526508199bdd5b9960d21b606082015260800190565b6000808335601e1984360301811261289357600080fd5b83016020810192503590506001600160401b038111156128b257600080fd5b8060051b36038213156123f557600080fd5b8183526000602080850194508260005b858110156129025781356128e781612204565b6001600160a01b0316875295820195908201906001016128d4565b509495945050505050565b6000808335601e1984360301811261292457600080fd5b83016020810192503590506001600160401b0381111561294357600080fd5b8060061b36038213156123f557600080fd5b8183526000602080850194508260005b8581101561290257813587528282013561297e81612204565b6001600160a01b0316878401526040968701969190910190600101612965565b6000808335601e198436030181126129b557600080fd5b83016020810192503590506001600160401b038111156129d457600080fd5b8036038213156123f557600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000610100823584526020830135612a2381612204565b6001600160a01b0316602085015260408381013590850152612a476060840161221c565b6001600160a01b0316606085015260808381013590850152612a6c60a084018461287c565b8260a0870152612a7f83870182846128c4565b92505050612a9060c084018461290d565b85830360c0870152612aa3838284612955565b92505050612ab460e084018461299e565b85830360e0870152612ac78382846129e3565b9695505050505050565b6020815260006108876020830184612a0c565b60208082526029908201527f54656c65706f727465724d657373656e6765723a20696e76616c6964206d65736040820152680e6c2ceca40d0c2e6d60bb1b606082015260800190565b606081526000612b406060830185612a0c565b9050610887602083018480516001600160a01b03168252602090810151910152565b60005b83811015612b7d578181015183820152602001612b65565b50506000910152565b60008151808452612b9e816020860160208601612b62565b601f01601f19169290920160200192915050565b6020815260006108876020830184612b86565b60208082526034908201527f54656c65706f727465724d657373656e6765723a207a65726f2066656520617360408201527373657420636f6e7472616374206164647265737360601b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156105c3576105c3612c19565b634e487b7160e01b600052603260045260246000fd5b600060018201612c6a57612c6a612c19565b5060010190565b600060408284031215612c8357600080fd5b6108878383612649565b60208082526025908201527f5265656e7472616e63794775617264733a207265636569766572207265656e7460408201526472616e637960d81b606082015260800190565b80516104ad81612204565b600082601f830112612cee57600080fd5b8151612cfc6126c88261271b565b818152846020838601011115612d1157600080fd5b612083826020830160208701612b62565b805180151581146104ad57600080fd5b60008060408385031215612d4557600080fd5b82516001600160401b0380821115612d5c57600080fd5b9084019060608287031215612d7057600080fd5b604051606081018181108382111715612d8b57612d8b612596565b604052825181526020830151612da081612204565b6020820152604083015182811115612db757600080fd5b612dc388828601612cdd565b6040830152509350612dda91505060208401612d22565b90509250929050565b600082601f830112612df457600080fd5b81516020612e046126c883612684565b82815260059290921b84018101918181019086841115612e2357600080fd5b8286015b84811015612710578051612e3a81612204565b8352918301918301612e27565b600082601f830112612e5857600080fd5b81516020612e686126c883612684565b82815260069290921b84018101918181019086841115612e8757600080fd5b8286015b848110156127105760408189031215612ea45760008081fd5b612eac6125ac565b8151815284820151612ebd81612204565b81860152835291830191604001612e8b565b600060208284031215612ee157600080fd5b81516001600160401b0380821115612ef857600080fd5b908301906101008286031215612f0d57600080fd5b612f156125f6565b82518152612f2560208401612cd2565b602082015260408301516040820152612f4060608401612cd2565b60608201526080830151608082015260a083015182811115612f6157600080fd5b612f6d87828601612de3565b60a08301525060c083015182811115612f8557600080fd5b612f9187828601612e47565b60c08301525060e083015182811115612fa957600080fd5b612fb587828601612cdd565b60e08301525095945050505050565b600081518084526020808501945080840160005b838110156129025781516001600160a01b031687529582019590820190600101612fd8565b600081518084526020808501945080840160005b8381101561290257613037878351805182526020908101516001600160a01b0316910152565b6040969096019590820190600101613011565b60006101008251845260018060a01b03602084015116602085015260408301516040850152606083015161308960608601826001600160a01b03169052565b506080830151608085015260a08301518160a08601526130ab82860182612fc4565b91505060c083015184820360c08601526130c58282612ffd565b91505060e083015184820360e0860152611a9a8282612b86565b6001600160a01b03831681526040602082018190526000906120839083018461304a565b6000808335601e1984360301811261311a57600080fd5b8301803591506001600160401b0382111561313457600080fd5b6020019150368190038213156123f557600080fd5b8481526001600160a01b0384166020820152606060408201819052600090612ac790830184866129e3565b818103818111156105c3576105c3612c19565b602081526000610887602083018461304a565b606081526000612b40606083018561304a565b8381526001600160a01b0383166020820152606060408201819052600090611a9a90830184612b86565b6000602082840312156131e957600080fd5b61088782612d22565b60008251613204818460208701612b62565b919091019291505056fea26469706673582212203a8712caa6f3833eafca3464b9e8c36a045a41bc7877836448f7921540a1cf0b64736f6c63430008120033", } // TeleporterMessengerABI is the input ABI used to generate the binding from. diff --git a/contracts/src/Teleporter/TeleporterMessenger.sol b/contracts/src/Teleporter/TeleporterMessenger.sol index 9937e3cff..8a75f629f 100644 --- a/contracts/src/Teleporter/TeleporterMessenger.sol +++ b/contracts/src/Teleporter/TeleporterMessenger.sol @@ -271,11 +271,6 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { _relayerRewardAddresses[messageID] = relayerRewardAddress; } - // Execute the message. - if (teleporterMessage.message.length > 0) { - _handleInitialMessageExecution(messageID, warpMessage.sourceChainID, teleporterMessage); - } - // Process the receipts that were included in the teleporter message by paying the // fee for the messages are reward to the given relayers. uint256 length = teleporterMessage.receipts.length; @@ -301,6 +296,11 @@ contract TeleporterMessenger is ITeleporterMessenger, ReentrancyGuards { relayerRewardAddress, teleporterMessage ); + + // Execute the message. + if (teleporterMessage.message.length > 0) { + _handleInitialMessageExecution(messageID, warpMessage.sourceChainID, teleporterMessage); + } } /** diff --git a/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol b/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol index 50a8d86fe..0204d7783 100644 --- a/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol +++ b/contracts/src/Teleporter/tests/FallbackReceiveTests.t.sol @@ -97,8 +97,6 @@ contract FallbackReceiveTest is TeleporterMessengerTest { // Receive the message and check that message execution was successful. vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecuted(receivedMessageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID); - vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit ReceiveCrossChainMessage( receivedMessageID, warpMessage.sourceChainID, @@ -106,6 +104,8 @@ contract FallbackReceiveTest is TeleporterMessengerTest { DEFAULT_RELAYER_REWARD_ADDRESS, messageToReceive ); + vm.expectEmit(true, true, true, true, address(teleporterMessenger)); + emit MessageExecuted(receivedMessageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); // Check that the nonce was incremented. @@ -137,11 +137,7 @@ contract FallbackReceiveTest is TeleporterMessengerTest { // Mock the call to the warp precompile to get the message. _setUpSuccessGetVerifiedWarpMessageMock(0, warpMessage); - // Receive the message and check that message execution was successful. - vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecutionFailed( - receivedMessageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive - ); + // Receive the message and check that message execution failed. vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit ReceiveCrossChainMessage( receivedMessageID, @@ -150,6 +146,10 @@ contract FallbackReceiveTest is TeleporterMessengerTest { DEFAULT_RELAYER_REWARD_ADDRESS, messageToReceive ); + vm.expectEmit(true, true, true, true, address(teleporterMessenger)); + emit MessageExecutionFailed( + receivedMessageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive + ); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); // Check that the nonce was not changed. diff --git a/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol b/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol index 1372d14ca..e6fddacb7 100644 --- a/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol +++ b/contracts/src/Teleporter/tests/HandleInitialMessageExecutionTests.t.sol @@ -117,8 +117,6 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { messageToReceive.messageNonce ); vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecuted(expectedMessageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID); - vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit ReceiveCrossChainMessage( expectedMessageID, warpMessage.sourceChainID, @@ -126,6 +124,8 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { DEFAULT_RELAYER_REWARD_ADDRESS, messageToReceive ); + vm.expectEmit(true, true, true, true, address(teleporterMessenger)); + emit MessageExecuted(expectedMessageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); // Check that the message had the proper affect on the destination contract. @@ -192,8 +192,6 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { // is considered a failed message execution, but the message itself is // still successfully delivered. vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecutionFailed(messageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); - vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit ReceiveCrossChainMessage( messageID, warpMessage.sourceChainID, @@ -201,6 +199,8 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { DEFAULT_RELAYER_REWARD_ADDRESS, messageToReceive ); + vm.expectEmit(true, true, true, true, address(teleporterMessenger)); + emit MessageExecutionFailed(messageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); // Check that the message hash was stored in state and the message did not have any affect on the destination. @@ -240,8 +240,6 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { // Receive the message. vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecutionFailed(messageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); - vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit ReceiveCrossChainMessage( messageID, warpMessage.sourceChainID, @@ -249,6 +247,8 @@ contract HandleInitialMessageExecutionTest is TeleporterMessengerTest { DEFAULT_RELAYER_REWARD_ADDRESS, messageToReceive ); + vm.expectEmit(true, true, true, true, address(teleporterMessenger)); + emit MessageExecutionFailed(messageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); // Check that the message hash was stored in state and the message did not have any affect on the destination. diff --git a/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol b/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol index e7b244c20..9a4374886 100644 --- a/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol +++ b/contracts/src/Teleporter/tests/RetryMessageExecutionTests.t.sol @@ -215,8 +215,6 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { // The message should be successfully received, but its execution should fail. vm.roll(12); vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecutionFailed(messageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); - vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit ReceiveCrossChainMessage( messageID, warpMessage.sourceChainID, @@ -224,6 +222,8 @@ contract RetryMessageExecutionTest is TeleporterMessengerTest { DEFAULT_RELAYER_REWARD_ADDRESS, messageToReceive ); + vm.expectEmit(true, true, true, true, address(teleporterMessenger)); + emit MessageExecutionFailed(messageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); // Check that the message execution didn't have any effect, but diff --git a/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol b/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol index 7210621a1..bea561d1c 100644 --- a/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol +++ b/contracts/src/Teleporter/tests/TeleporterMessengerTest.t.sol @@ -212,8 +212,6 @@ contract TeleporterMessengerTest is Test { // Receive the message - which should fail execution. vm.expectEmit(true, true, true, true, address(teleporterMessenger)); - emit MessageExecutionFailed(messageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); - vm.expectEmit(true, true, true, true, address(teleporterMessenger)); emit ReceiveCrossChainMessage( messageID, warpMessage.sourceChainID, @@ -221,6 +219,8 @@ contract TeleporterMessengerTest is Test { DEFAULT_RELAYER_REWARD_ADDRESS, messageToReceive ); + vm.expectEmit(true, true, true, true, address(teleporterMessenger)); + emit MessageExecutionFailed(messageID, DEFAULT_ORIGIN_BLOCKCHAIN_ID, messageToReceive); teleporterMessenger.receiveCrossChainMessage(0, DEFAULT_RELAYER_REWARD_ADDRESS); return (DEFAULT_ORIGIN_BLOCKCHAIN_ID, DEFAULT_DESTINATION_ADDRESS, messageToReceive);