@eco-foundation/routes-ts
Version:
The Eco Routes Protocol is a decentralized intent based system that allows users to submit their intent to the network and have it fulfilled by a solver on the destination rollup of their choise.
1,108 lines • 63.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.InboxDeployedBytecode = exports.InboxBytecode = exports.InboxAbi = void 0;
exports.InboxAbi = [
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "bool",
"name": "_isSolvingPublic",
"type": "bool"
},
{
"internalType": "address[]",
"name": "_solvers",
"type": "address[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "AddressInsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "_EOA",
"type": "address"
}
],
"name": "CallToEOA",
"type": "error"
},
{
"inputs": [],
"name": "CallToMailbox",
"type": "error"
},
{
"inputs": [],
"name": "FailedInnerCall",
"type": "error"
},
{
"inputs": [],
"name": "FillDeadlinePassed",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_requiredFee",
"type": "uint256"
}
],
"name": "InsufficientFee",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
}
],
"name": "IntentAlreadyFulfilled",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "_addr",
"type": "address"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_returnData",
"type": "bytes"
}
],
"name": "IntentCallFailed",
"type": "error"
},
{
"inputs": [],
"name": "IntentExpired",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
}
],
"name": "IntentNotFulfilled",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_expectedHash",
"type": "bytes32"
}
],
"name": "InvalidHash",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "_inbox",
"type": "address"
}
],
"name": "InvalidInbox",
"type": "error"
},
{
"inputs": [],
"name": "NativeTransferFailed",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "_solver",
"type": "address"
}
],
"name": "UnauthorizedSolveAttempt",
"type": "error"
},
{
"inputs": [],
"name": "UnauthorizedTransferNative",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_chainID",
"type": "uint256"
}
],
"name": "WrongChain",
"type": "error"
},
{
"inputs": [],
"name": "ZeroClaimant",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "uint256",
"name": "_sourceChainID",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "_claimant",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "_prover",
"type": "address"
}
],
"name": "AddToBatch",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32[]",
"name": "_hashes",
"type": "bytes32[]"
},
{
"indexed": true,
"internalType": "uint256",
"name": "_sourceChainID",
"type": "uint256"
}
],
"name": "BatchSent",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "uint256",
"name": "_sourceChainID",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "_claimant",
"type": "address"
}
],
"name": "Fulfillment",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "uint256",
"name": "_sourceChainID",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "_claimant",
"type": "address"
}
],
"name": "HyperInstantFulfillment",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_mailbox",
"type": "address"
}
],
"name": "MailboxSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "_orderId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "_solver",
"type": "address"
}
],
"name": "OrderFilled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_solver",
"type": "address"
},
{
"indexed": true,
"internalType": "bool",
"name": "_canSolve",
"type": "bool"
}
],
"name": "SolverWhitelistChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [],
"name": "SolvingIsPublic",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_hash",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "uint256",
"name": "_sourceChainID",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "_claimant",
"type": "address"
}
],
"name": "ToBeProven",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_solver",
"type": "address"
},
{
"internalType": "bool",
"name": "_canSolve",
"type": "bool"
}
],
"name": "changeSolverWhitelist",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_sourceChainID",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "_prover",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "_messageBody",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_metadata",
"type": "bytes"
},
{
"internalType": "address",
"name": "_postDispatchHook",
"type": "address"
}
],
"name": "fetchFee",
"outputs": [
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_orderId",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "_originData",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_fillerData",
"type": "bytes"
}
],
"name": "fill",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "source",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "destination",
"type": "uint256"
},
{
"internalType": "address",
"name": "inbox",
"type": "address"
},
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"internalType": "struct TokenAmount[]",
"name": "tokens",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Call[]",
"name": "calls",
"type": "tuple[]"
}
],
"internalType": "struct Route",
"name": "_route",
"type": "tuple"
},
{
"internalType": "bytes32",
"name": "_rewardHash",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_claimant",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_expectedHash",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_prover",
"type": "address"
}
],
"name": "fulfillHyperBatched",
"outputs": [
{
"internalType": "bytes[]",
"name": "",
"type": "bytes[]"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "source",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "destination",
"type": "uint256"
},
{
"internalType": "address",
"name": "inbox",
"type": "address"
},
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"internalType": "struct TokenAmount[]",
"name": "tokens",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Call[]",
"name": "calls",
"type": "tuple[]"
}
],
"internalType": "struct Route",
"name": "_route",
"type": "tuple"
},
{
"internalType": "bytes32",
"name": "_rewardHash",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_claimant",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_expectedHash",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_prover",
"type": "address"
}
],
"name": "fulfillHyperInstant",
"outputs": [
{
"internalType": "bytes[]",
"name": "",
"type": "bytes[]"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "source",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "destination",
"type": "uint256"
},
{
"internalType": "address",
"name": "inbox",
"type": "address"
},
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"internalType": "struct TokenAmount[]",
"name": "tokens",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Call[]",
"name": "calls",
"type": "tuple[]"
}
],
"internalType": "struct Route",
"name": "_route",
"type": "tuple"
},
{
"internalType": "bytes32",
"name": "_rewardHash",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_claimant",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_expectedHash",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_prover",
"type": "address"
},
{
"internalType": "bytes",
"name": "_metadata",
"type": "bytes"
},
{
"internalType": "address",
"name": "_postDispatchHook",
"type": "address"
}
],
"name": "fulfillHyperInstantWithRelayer",
"outputs": [
{
"internalType": "bytes[]",
"name": "",
"type": "bytes[]"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "source",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "destination",
"type": "uint256"
},
{
"internalType": "address",
"name": "inbox",
"type": "address"
},
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"internalType": "struct TokenAmount[]",
"name": "tokens",
"type": "tuple[]"
},
{
"components": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Call[]",
"name": "calls",
"type": "tuple[]"
}
],
"internalType": "struct Route",
"name": "_route",
"type": "tuple"
},
{
"internalType": "bytes32",
"name": "_rewardHash",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_claimant",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_expectedHash",
"type": "bytes32"
}
],
"name": "fulfillStorage",
"outputs": [
{
"internalType": "bytes[]",
"name": "",
"type": "bytes[]"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "fulfilled",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isSolvingPublic",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mailbox",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "makeSolvingPublic",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_sourceChainID",
"type": "uint256"
},
{
"internalType": "address",
"name": "_prover",
"type": "address"
},
{
"internalType": "bytes32[]",
"name": "_intentHashes",
"type": "bytes32[]"
}
],
"name": "sendBatch",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_sourceChainID",
"type": "uint256"
},
{
"internalType": "address",
"name": "_prover",
"type": "address"
},
{
"internalType": "bytes32[]",
"name": "_intentHashes",
"type": "bytes32[]"
},
{
"internalType": "bytes",
"name": "_metadata",
"type": "bytes"
},
{
"internalType": "address",
"name": "_postDispatchHook",
"type": "address"
}
],
"name": "sendBatchWithRelayer",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_mailbox",
"type": "address"
}
],
"name": "setMailbox",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "solverWhitelist",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
];
exports.InboxBytecode = "0x6080604052346101c85761217480380380610019816101e3565b9283398101906060818303126101c85761003281610208565b6020820151918215158093036101c8576040810151906001600160401b0382116101c857019280601f850112156101c8578351936001600160401b0385116101cd578460051b906020806100878185016101e3565b8098815201928201019283116101c857602001905b8282106101b0575050506001600160a01b0316801561019a57600080546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36003805460ff60a01b191660a09290921b60ff60a01b1691909117905560005b815181101561018b576001906001600160a01b03610134828561021c565b5116600052600260205260406000208260ff1982541617905581808060a01b0361015e838661021c565b51167f3f3a0c23a11da402767747df1ed29891ffc0a54d42f3e8c767548cd45b7dd678600080a301610116565b604051611f2d90816102478239f35b631e4fbdf760e01b600052600060045260246000fd5b602080916101bd84610208565b81520191019061009c565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040519190601f01601f191682016001600160401b038111838210176101cd57604052565b51906001600160a01b03821682036101c857565b80518210156102305760209160051b010190565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806327048b0f14610dd05780632aa91bfd14610d9c5780632c16840214610d2b57806340f3a5a814610d055780634a0e9d3a14610c6757806350b8452614610c0657806354fd4d5014610bb657806362b3a77c14610b77578063715018a614610b1e5780637e0bdf8c14610ad857806382e2c43f146107ff5780638da5cb5b146107d6578063a0de4bbb14610572578063b15e2e9c146104df578063caae303c14610466578063d5438eae1461043d578063e1312bb7146101f7578063f2fde38b1461016e5763f3c61d6b0361000e57346101695760203660031901126101695761010a61109d565b610112611e6d565b600354906001600160a01b0382161561012757005b6001600160a01b03166001600160a01b03199190911681176003557f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd7600080a2005b600080fd5b346101695760203660031901126101695761018761109d565b61018f611e6d565b6001600160a01b031680156101e157600080546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b600052600060045260246000fd5b60603660031901126101695760043561020e6110b3565b906044356001600160401b0381116101695761022e903690600401611414565b6040516020939290916102418584611050565b6000835261024e81611686565b9160005b8281106103df5750604051966001600160fb1b038311610169576102f0836102e288966103029660051b9b8c878237808d8101039020926040519a8b947fd6383b4658ff90fe5c7fb8d1fe7a0b6cc87b7ecaf49d2305c1fed682f3954832600080a360408c850152606084015260808c60009d8e988387013784018481038201601f1901604086015201906116ff565b03601f198101885287611050565b6001600160a01b0316938585856114c4565b8034106103cd5790818593923411610392575b63ffffffff9060018060a01b0360035416926103486040519788968795869463fa31de0160e01b8652166004850161149f565b03925af180156103875761035a578280f35b8161037992903d10610380575b6103718183611050565b810190611444565b5081808280f35b503d610367565b6040513d85823e3d90fd5b90919250858080806103a4853461173c565b335af16103af61175f565b50156103be5790849291610315565b633d2cec6f60e21b8652600486fd5b63131398d760e21b8652600452602485fd5b6103ea8184846116b8565b3560009081526001885260409020546001600160a01b0316801561041d579060019161041682876116eb565b5201610252565b5082610428926116b8565b35636d5ba68f60e11b60005260045260246000fd5b34610169576000366003190112610169576003546040516001600160a01b039091168152602090f35b346101695760403660031901126101695761047f61109d565b6024359081151580920361016957610495611e6d565b6001600160a01b03166000818152600260205260408120805460ff191660ff85161790557f3f3a0c23a11da402767747df1ed29891ffc0a54d42f3e8c767548cd45b7dd6789080a3005b60e0366003190112610169576004356001600160401b0381116101695761050a9036906004016111dd565b610512611071565b61051a611087565b60a4356001600160401b03811161016957610539903690600401611196565b60c435916001600160a01b03831683036101695761056e9461056294606435916024359061178f565b60405191829182611387565b0390f35b60a0366003190112610169576004356105896110b3565b906044356001600160401b038111610169576105a9903690600401611414565b6064929192356001600160401b038111610169576105cb903690600401611196565b6105d3611087565b946105dd83611686565b60005b84811061078c5750604051936001600160fb1b0381116101695761066c61067a92608088978460051b90818c823780828101039020946040519a8b967fd6383b4658ff90fe5c7fb8d1fe7a0b6cc87b7ecaf49d2305c1fed682f3954832600080a36040602087015260608601528060009b8387013784018481038201601f1901604086015201906116ff565b03601f198101865285611050565b6001600160a01b03169161069186838686856114c4565b8034106103cd5780341161075f575b949593946020946001600160a01b031680610727575060035460405163fa31de0160e01b81529687956001600160a01b039092169450859384926106ee929163ffffffff166004850161149f565b03925af1801561071c57610700575080f35b6107189060203d602011610380576103718183611050565b5080f35b6040513d84823e3d90fd5b6003546040516242e0f760e61b81529788966001600160a01b0390921695879586946106ee9490939163ffffffff1660048701611453565b8580808061076d853461173c565b335af161077861175f565b506106a057633d2cec6f60e21b8652600486fd5b6107978186896116b8565b356000908152600160205260409020546001600160a01b031680156107cb57906001916107c482856116eb565b52016105e0565b61042882878a6116b8565b34610169576000366003190112610169576000546040516001600160a01b039091168152602090f35b6060366003190112610169576004356024356001600160401b0381116101695761082d9036906004016113e7565b91906044356001600160401b0381116101695761084e9036906004016113e7565b9093820191602081840312610169578035906001600160401b038211610169570191604083820312610169576040519261088784611035565b80356001600160401b03811161016957826108a39183016111dd565b84526020810135906001600160401b03821161016957019060a082820312610169576040519160a083018381106001600160401b03821117610ac2576040526108eb816110c9565b83526108f9602082016110c9565b60208401526040830191604082013583526060820135606085015260808201356001600160401b0381116101695761093192016110f4565b608083015260208401918252514211610ab1577f0555709e59fb225fcf12cc582a9e5f7fd8eea54c91f3dc500ab9d8c37c50777060408051868152336020820152a180516040516109df816109d1608060208301956020875260018060a01b03815116604085015260018060a01b036020820151166060850152604081015182850152606081015160a0850152015160a060c084015260e083019061163d565b03601f198101835282611050565b51902091850185810390602082126101695786359260028410156101695760009380610a34575050506040136101695761016957610019936001600160a01b0390610a2c906020016110c9565b1691516115f5565b6001919794989392985014610a4557005b60801361016957600092610a5b602083016110c9565b93610a68604084016110c9565b926060810135916001600160401b038311610aae575097610a8d916100199901611196565b94519551602001516001600160a01b0392831696908316949092169161178f565b80fd5b6302857b7560e01b60005260046000fd5b634e487b7160e01b600052604160045260246000fd5b6080366003190112610169576004356001600160401b03811161016957610562610b0961056e9236906004016111dd565b610b11611071565b60643591602435906115f5565b3461016957600036600319011261016957610b37611e6d565b600080546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610169576020366003190112610169576001600160a01b03610b9861109d565b166000526002602052602060ff604060002054166040519015158152f35b346101695760003660031901126101695761056e6040805190610bd98183611050565b600e82526d0625c626e5c6c5ac8c86e6eca60760931b602083015251918291602083526020830190611346565b3461016957600036600319011261016957610c1f611e6d565b60035460ff8160a01c1615610c3057005b60ff60a01b1916600160a01b176003557f547ced8bfaeeb516dd99a65ffc844c3eacbdc19ce3857d1bd0fc8108207c6808600080a1005b60a0366003190112610169576004356001600160401b0381116101695760c060031982360301126101695761056261056e91610ca1611071565b60643591610cad611087565b6040516001600160a01b0391821681529083169060248301359085907f14beba1e8723c2a6b7a4cc9576347da53f1b79e39366f0d4f8b7a6af344eb71f90602090a4610d006024359136906004016111dd565b6119c0565b3461016957600036600319011261016957602060ff60035460a01c166040519015158152f35b346101695760a0366003190112610169576044356001600160401b03811161016957610d5b903690600401611196565b6064356001600160401b03811161016957602091610d80610d94923690600401611196565b610d88611087565b916024356004356114c4565b604051908152f35b34610169576020366003190112610169576004356000526001602052602060018060a01b0360406000205416604051908152f35b60a0366003190112610169576004356001600160401b03811161016957610dfb9036906004016111dd565b610e03611071565b9060643591610e10611087565b916020908160405194610e238287611050565b6000865260009660409588875193610e3b8986611050565b60018552601f19890194868101863682378a5196610e598c89611050565b60018852368989013785610e6c836116de565b52610e76876116de565b6001600160a01b038616908190528b519889018c90529151606089018190529196889260808401928d91878e5b82821061100e575050505092610ed2610f1d9593610ee093610f279a999896601f1985840301908501526116ff565b03601f1981018a5289611050565b60018060a01b03169a878c8b8b019889519081897f15299a9532f9e616b46fb1fff3ff56426e75c2cab158a32a4cae83547bfa3f748880a46114c4565b95602435906119c0565b9547848110610ffa57908882868896959411610fbb575b5050610f739463ffffffff60018060a01b036003541693511688519687958694859363fa31de0160e01b85526004850161149f565b03925af18015610fb15761056e9550610f93575b50505191829182611387565b81610fa992903d10610380576103718183611050565b508380610f87565b83513d87823e3d90fd5b8693955081610fce81949698829361173c565b335af1610fd961175f565b5015610feb579290918492888a610f3e565b633d2cec6f60e21b8852600488fd5b63131398d760e21b89526004859052602489fd5b9280989950839296919597506001945051815201950191018993918f9695938e928e610ea3565b604081019081106001600160401b03821117610ac257604052565b90601f801991011681019081106001600160401b03821117610ac257604052565b604435906001600160a01b038216820361016957565b608435906001600160a01b038216820361016957565b600435906001600160a01b038216820361016957565b602435906001600160a01b038216820361016957565b35906001600160a01b038216820361016957565b6001600160401b038111610ac25760051b60200190565b81601f820112156101695780359061110b826110dd565b926111196040519485611050565b82845260208085019360061b8301019181831161016957602001925b828410611143575050505090565b604084830312610169576020604091825161115d81611035565b611166876110c9565b81528287013583820152815201930192611135565b6001600160401b038111610ac257601f01601f191660200190565b81601f82011215610169578035906111ad8261117b565b926111bb6040519485611050565b8284526020838301011161016957816000926020809301838601378301015290565b919060c0838203126101695760405160c081018181106001600160401b03821117610ac257604052809380358252602081013560208301526040810135604083015261122b606082016110c9565b606083015260808101356001600160401b038111610169578361124f9183016110f4565b608083015260a0810135906001600160401b038211610169570182601f8201121561016957803590611280826110dd565b9361128e6040519586611050565b82855260208086019360051b830101918183116101695760208101935b8385106112bd57505050505060a00152565b84356001600160401b0381116101695782016060818503601f1901126101695760405191606083018381106001600160401b03821117610ac257604052611306602083016110c9565b83526040820135926001600160401b03841161016957606083611330886020809881980101611196565b85840152013560408201528152019401936112ab565b919082519283825260005b848110611372575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201611351565b602081016020825282518091526040820191602060408360051b8301019401926000915b8383106113ba57505050505090565b90919293946020806113d8600193603f198682030187528951611346565b970193019301919392906113ab565b9181601f84011215610169578235916001600160401b038311610169576020838186019501011161016957565b9181601f84011215610169578235916001600160401b038311610169576020808501948460051b01011161016957565b90816020910312610169575190565b939060809361148f9363ffffffff61148193999899168752602087015260a0604087015260a0860190611346565b908482036060860152611346565b6001600160a01b03909416910152565b6114c1939263ffffffff60609316825260208201528160408201520190611346565b90565b600094929391929091906001600160a01b031680611566575050602092935063ffffffff60018060a01b0360035416916115156040519687958694859463138857a360e31b8652166004850161149f565b03915afa90811561155a5760009161152b575090565b90506020813d602011611552575b8161154660209383611050565b81010312610169575190565b3d9150611539565b6040513d6000823e3d90fd5b6003546040516381d2ea9560e01b81529560209587956001600160a01b0390931694869485946115a29491939063ffffffff1660048701611453565b03915afa9182156115e95780926115b857505090565b9091506020823d6020116115e1575b816115d460209383611050565b81010312610aae57505190565b3d91506115c7565b604051903d90823e3d90fd5b9291906116068383602093876119c0565b9301516001600160a01b03909116917f160fbf39d03c171cfc82812374f495fff22339e6f2482ce8366139b1710d003b600080a490565b906020808351928381520192019060005b81811061165b5750505090565b825180516001600160a01b03168552602090810151818601526040909401939092019160010161164e565b90611690826110dd565b61169d6040519182611050565b82815280926116ae601f19916110dd565b0190602036910137565b91908110156116c85760051b0190565b634e487b7160e01b600052603260045260246000fd5b8051156116c85760200190565b80518210156116c85760209160051b010190565b906020808351928381520192019060005b81811061171d5750505090565b82516001600160a01b0316845260209384019390920191600101611710565b9190820391821161174957565b634e487b7160e01b600052601160045260246000fd5b3d1561178a573d906117708261117b565b9161177e6040519384611050565b82523d6000602084013e565b606090565b90919293946040948551946117a48787611050565b600186526020860197601f1988019687368b378851976117c48a8a611050565b600189523660208a0137836117d8826116de565b526117e2886116de565b6001600160a01b038416908190528951602081018b9052915160608301819052909a91988992608084019260005b8181106119a75750505091610ed261183a92611884979695948d601f1985840301908501526116ff565b60018060a01b03169561187e8b868a8a60208b019e8f5190818a7f15299a9532f9e616b46fb1fff3ff56426e75c2cab158a32a4cae83547bfa3f74600080a46114c4565b956119c0565b96478381106119925783808211611959575b50506001600160a01b03168061191a57505093602092916118e09563ffffffff60018060a01b036003541693511686519788958694859363fa31de0160e01b85526004850161149f565b03925af190811561191057506118f4575090565b61190c9060203d602011610380576103718183611050565b5090565b513d6000823e3d90fd5b600354965186516242e0f760e61b81529760209689966001600160a01b03909216958795909486946118e0949193919063ffffffff1660048701611453565b600080611969819493829461173c565b335af161197461175f565b5015611981573883611896565b633d2cec6f60e21b60005260046000fd5b8363131398d760e21b60005260045260246000fd5b825185528c955060209485019490920191600101611810565b92604084018051468103611e59575060ff60035460a01c161580611e40575b611e2b576040519360208501936020855286516040870152602087019283516060880152516080870152606087019460018060a01b0386511660a0880152608088019660a0611a3a895160c08085015261010084019061163d565b990198818a51603f198284030160e0830152805180845260208401936020808360051b8301019301946000915b838310611dd65750505050611a85925003601f198101835282611050565b519020906040519060208201928352604082015260408152611aa8606082611050565b51902093516001600160a01b0316308103611dc25750828403611dad576000848152600160205260409020546001600160a01b0316611d98576001600160a01b0316928315611d875760005260016020526040600020836bffffffffffffffffffffffff60a01b82541617905551907f306cd1d43c9d25bf2e05db32b00e823b089fe9679696922daaba4c7093df9693600080a48051519060005b828110611ccb5750505080515191611b5a836110dd565b92611b686040519485611050565b808452611b77601f19916110dd565b0160005b818110611cba57505060005b82518051821015611cb35781611b9c916116eb565b5180516001600160a01b0316803b1580611ca5575b611c91575080516003546001600160a01b03908116911614611c805760018060a01b03815116604082019060008083516020860193845191602083519301915af192611bfb61175f565b9315611c245750505090600191611c1282876116eb565b52611c1d81866116eb565b5001611b87565b5190519151604051630978ad9160e11b81526001600160a01b0390921660048301526080602483015290918291611c7c918590611c65906084860190611346565b916044850152600319848303016064850152611346565b0390fd5b631564d33760e31b60005260046000fd5b632db5928960e01b60005260045260246000fd5b506020820151511515611bb1565b5090915050565b806060602080938801015201611b7b565b611cd68183516116eb565b51611d33600080602060018060a01b0385511694015160405160208101916323b872dd60e01b8352336024830152306044830152606482015260648152611d1e608482611050565b519082865af1611d2c61175f565b9083611e96565b8051908115159182611d63575b5050611d4f5750600101611b43565b635274afe760e01b60005260045260246000fd5b81925090602091810103126101695760200151801590811503610169573880611d40565b6334d9914d60e11b60005260046000fd5b8363373d207960e01b60005260045260246000fd5b826344d659bf60e01b60005260045260246000fd5b631c26f26d60e01b60005260045260246000fd5b919360019193955060208091601f19858203018652885190848060a01b038251168152604080611e13858501516060878601526060850190611346565b93015191015297019301930190928694929593611a67565b63c37cea4760e01b6000523360045260246000fd5b5033600052600260205260ff60406000205416156119df565b635ea03eed60e11b60005260045260246000fd5b6000546001600160a01b03163303611e8157565b63118cdaa760e01b6000523360045260246000fd5b90611ebc5750805115611eab57805190602001fd5b630a12f52160e11b60005260046000fd5b81511580611eee575b611ecd575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b15611ec556fea26469706673582212204a2aef9bfdc49f862676bfc9fe64f550ba0edc7228fc92f3d64175e79e0cbebe64736f6c634300081a0033";
exports.InboxDeployedBytecode = "0x6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806327048b0f14610dd05780632aa91bfd14610d9c5780632c16840214610d2b57806340f3a5a814610d055780634a0e9d3a14610c6757806350b8452614610c0657806354fd4d5014610bb657806362b3a77c14610b77578063715018a614610b1e5780637e0bdf8c14610ad857806382e2c43f146107ff5780638da5cb5b146107d6578063a0de4bbb14610572578063b15e2e9c146104df578063caae303c14610466578063d5438eae1461043d578063e1312bb7146101f7578063f2fde38b1461016e5763f3c61d6b0361000e57346101695760203660031901126101695761010a61109d565b610112611e6d565b600354906001600160a01b0382161561012757005b6001600160a01b03166001600160a01b03199190911681176003557f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd7600080a2005b600080fd5b346101695760203660031901126101695761018761109d565b61018f611e6d565b6001600160a01b031680156101e157600080546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b600052600060045260246000fd5b60603660031901126101695760043561020e6110b3565b906044356001600160401b0381116101695761022e903690600401611414565b6040516020939290916102418584611050565b6000835261024e81611686565b9160005b8281106103df5750604051966001600160fb1b038311610169576102f0836102e288966103029660051b9b8c878237808d8101039020926040519a8b947fd6383b4658ff90fe5c7fb8d1fe7a0b6cc87b7ecaf49d2305c1fed682f3954832600080a360408c850152606084015260808c60009d8e988387013784018481038201601f1901604086015201906116ff565b03601f198101885287611050565b6001600160a01b0316938585856114c4565b8034106103cd5790818593923411610392575b63ffffffff9060018060a01b0360035416926103486040519788968795869463fa31de0160e01b8652166004850161149f565b03925af180156103875761035a578280f35b8161037992903d10610380575b6103718183611050565b810190611444565b5081808280f35b503d610367565b6040513d85823e3d90fd5b90919250858080806103a4853461173c565b335af16103af61175f565b50156103be5790849291610315565b633d2cec6f60e21b8652600486fd5b63131398d760e21b8652600452602485fd5b6103ea8184846116b8565b3560009081526001885260