{ "abi": [{ "type": "constructor", "inputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "MESSAGE_VERSION", "inputs": [], "outputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }], "stateMutability": "view" }, { "type": "function", "name": "MIN_GAS_CALLDATA_OVERHEAD", "inputs": [], "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }], "stateMutability": "view" }, { "type": "function", "name": "MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR", "inputs": [], "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }], "stateMutability": "view" }, { "type": "function", "name": "MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR", "inputs": [], "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }], "stateMutability": "view" }, { "type": "function", "name": "OTHER_MESSENGER", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract CrossDomainMessenger" }], "stateMutability": "view" }, { "type": "function", "name": "PORTAL", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract OptimismPortal" }], "stateMutability": "view" }, { "type": "function", "name": "RELAY_CALL_OVERHEAD", "inputs": [], "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }], "stateMutability": "view" }, { "type": "function", "name": "RELAY_CONSTANT_OVERHEAD", "inputs": [], "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }], "stateMutability": "view" }, { "type": "function", "name": "RELAY_GAS_CHECK_BUFFER", "inputs": [], "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }], "stateMutability": "view" }, { "type": "function", "name": "RELAY_RESERVED_GAS", "inputs": [], "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }], "stateMutability": "view" }, { "type": "function", "name": "baseGas", "inputs": [{ "name": "_message", "type": "bytes", "internalType": "bytes" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }], "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }], "stateMutability": "pure" }, { "type": "function", "name": "failedMessages", "inputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "initialize", "inputs": [{ "name": "_superchainConfig", "type": "address", "internalType": "contract SuperchainConfig" }, { "name": "_portal", "type": "address", "internalType": "contract OptimismPortal" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "messageNonce", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "otherMessenger", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract CrossDomainMessenger" }], "stateMutability": "view" }, { "type": "function", "name": "paused", "inputs": [], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "portal", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract OptimismPortal" }], "stateMutability": "view" }, { "type": "function", "name": "relayMessage", "inputs": [{ "name": "_nonce", "type": "uint256", "internalType": "uint256" }, { "name": "_sender", "type": "address", "internalType": "address" }, { "name": "_target", "type": "address", "internalType": "address" }, { "name": "_value", "type": "uint256", "internalType": "uint256" }, { "name": "_minGasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "_message", "type": "bytes", "internalType": "bytes" }], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "sendMessage", "inputs": [{ "name": "_target", "type": "address", "internalType": "address" }, { "name": "_message", "type": "bytes", "internalType": "bytes" }, { "name": "_minGasLimit", "type": "uint32", "internalType": "uint32" }], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "successfulMessages", "inputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "superchainConfig", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract SuperchainConfig" }], "stateMutability": "view" }, { "type": "function", "name": "version", "inputs": [], "outputs": [{ "name": "", "type": "string", "internalType": "string" }], "stateMutability": "view" }, { "type": "function", "name": "xDomainMessageSender", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "event", "name": "FailedRelayedMessage", "inputs": [{ "name": "msgHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }], "anonymous": false }, { "type": "event", "name": "Initialized", "inputs": [{ "name": "version", "type": "uint8", "indexed": false, "internalType": "uint8" }], "anonymous": false }, { "type": "event", "name": "RelayedMessage", "inputs": [{ "name": "msgHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }], "anonymous": false }, { "type": "event", "name": "SentMessage", "inputs": [{ "name": "target", "type": "address", "indexed": true, "internalType": "address" }, { "name": "sender", "type": "address", "indexed": false, "internalType": "address" }, { "name": "message", "type": "bytes", "indexed": false, "internalType": "bytes" }, { "name": "messageNonce", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "gasLimit", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "SentMessageExtension1", "inputs": [{ "name": "sender", "type": "address", "indexed": true, "internalType": "address" }, { "name": "value", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }], "bytecode": { "object": "0x60806040523480156200001157600080fd5b506200001f60008062000025565b6200027f565b600054600160a81b900460ff16158080156200004e57506000546001600160a01b90910460ff16105b806200008557506200006b30620001b960201b620014d61760201c565b158015620000855750600054600160a01b900460ff166001145b620000ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff60a01b1916600160a01b17905580156200011c576000805460ff60a81b1916600160a81b1790555b60fb80546001600160a01b038086166001600160a01b03199283161790925560fc8054928516929091169190911790556200016b734200000000000000000000000000000000000007620001c8565b8015620001b4576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054600160a81b900460ff16620002375760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000e5565b60cc546001600160a01b03166200025d5760cc80546001600160a01b03191661dead1790555b60cf80546001600160a01b0319166001600160a01b0392909216919091179055565b611f94806200028f6000396000f3fe6080604052600436106101805760003560e01c80635c975abb116100d6578063a4e7f8bd1161007f578063d764ad0b11610059578063d764ad0b14610463578063db505d8014610476578063ecc70428146104a357600080fd5b8063a4e7f8bd146103e3578063b1b1b20914610413578063b28ade251461044357600080fd5b806383a74074116100b057806383a74074146103a15780638cbeeef2146102b85780639fce812c146103b857600080fd5b80635c975abb1461033a5780636425666b1461035f5780636e296e451461038c57600080fd5b80633dbb202b116101385780634c1d6a69116101125780634c1d6a69146102b857806354fd4d50146102ce5780635644cfdf1461032457600080fd5b80633dbb202b1461025b5780633f827a5a14610270578063485cc9551461029857600080fd5b80630ff754ea116101695780630ff754ea146101cd5780632828d7e81461021957806335e80ab31461022e57600080fd5b8063028f85f7146101855780630c568498146101b8575b600080fd5b34801561019157600080fd5b5061019a601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b3480156101c457600080fd5b5061019a603f81565b3480156101d957600080fd5b5060fc5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101af565b34801561022557600080fd5b5061019a604081565b34801561023a57600080fd5b5060fb546101f49073ffffffffffffffffffffffffffffffffffffffff1681565b61026e610269366004611a22565b610508565b005b34801561027c57600080fd5b50610285600181565b60405161ffff90911681526020016101af565b3480156102a457600080fd5b5061026e6102b3366004611a89565b610765565b3480156102c457600080fd5b5061019a619c4081565b3480156102da57600080fd5b506103176040518060400160405280600581526020017f322e332e3000000000000000000000000000000000000000000000000000000081525081565b6040516101af9190611b2d565b34801561033057600080fd5b5061019a61138881565b34801561034657600080fd5b5061034f6109d3565b60405190151581526020016101af565b34801561036b57600080fd5b5060fc546101f49073ffffffffffffffffffffffffffffffffffffffff1681565b34801561039857600080fd5b506101f4610a6c565b3480156103ad57600080fd5b5061019a62030d4081565b3480156103c457600080fd5b5060cf5473ffffffffffffffffffffffffffffffffffffffff166101f4565b3480156103ef57600080fd5b5061034f6103fe366004611b47565b60ce6020526000908152604090205460ff1681565b34801561041f57600080fd5b5061034f61042e366004611b47565b60cb6020526000908152604090205460ff1681565b34801561044f57600080fd5b5061019a61045e366004611b60565b610b53565b61026e610471366004611bb4565b610bc1565b34801561048257600080fd5b5060cf546101f49073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104af57600080fd5b506104fa60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b6040519081526020016101af565b60cf5461063a9073ffffffffffffffffffffffffffffffffffffffff16610530858585610b53565b347fd764ad0b0000000000000000000000000000000000000000000000000000000061059c60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b338a34898c8c6040516024016105b89796959493929190611c83565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526114f2565b8373ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a3385856106bf60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b866040516106d1959493929190611ce2565b60405180910390a260405134815233907f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d5469060200160405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b6000547501000000000000000000000000000000000000000000900460ff16158080156107b0575060005460017401000000000000000000000000000000000000000090910460ff16105b806107e25750303b1580156107e2575060005474010000000000000000000000000000000000000000900460ff166001145b610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905580156108f957600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b60fb805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560fc80549285169290911691909117905561096b73420000000000000000000000000000000000000761158b565b80156109ce57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60fb54604080517f5c975abb000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635c975abb9160048083019260209291908290030181865afa158015610a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a679190611d30565b905090565b60cc5460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff215301610b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f74207365740000000000000000000000606482015260840161086a565b5060cc5473ffffffffffffffffffffffffffffffffffffffff1690565b6000611388619c4080603f610b6f604063ffffffff8816611d81565b610b799190611db1565b610b84601088611d81565b610b919062030d40611dff565b610b9b9190611dff565b610ba59190611dff565b610baf9190611dff565b610bb99190611dff565b949350505050565b610bc96109d3565b15610c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43726f7373446f6d61696e4d657373656e6765723a2070617573656400000000604482015260640161086a565b60f087901c60028110610ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206f722031206d657373616765732061726520737570706f7274656460648201527f20617420746869732074696d6500000000000000000000000000000000000000608482015260a40161086a565b8061ffff16600003610de0576000610d3c878986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f92506116c7915050565b600081815260cb602052604090205490915060ff1615610dde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f43726f7373446f6d61696e4d657373656e6765723a206c65676163792077697460448201527f6864726177616c20616c72656164792072656c61796564000000000000000000606482015260840161086a565b505b6000610e26898989898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116e692505050565b9050610e30611709565b15610e6857853414610e4457610e44611e2b565b600081815260ce602052604090205460ff1615610e6357610e63611e2b565b610fba565b3415610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a40161086a565b600081815260ce602052604090205460ff16610fba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c6179656400000000000000000000000000000000606482015260840161086a565b610fc3876117e5565b15611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a40161086a565b600081815260cb602052604090205460ff1615611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c6179656400000000000000000000606482015260840161086a565b61113685611127611388619c40611dff565b67ffffffffffffffff1661182b565b158061115c575060cc5473ffffffffffffffffffffffffffffffffffffffff1661dead14155b1561127557600081815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff320161126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d65737361676500000000000000000000000000000000000000606482015260840161086a565b50506114cd565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055600061130688619c405a6112c99190611e5a565b8988888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061184992505050565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055905080156113bc57600082815260cb602052604090205460ff161561135957611359611e2b565b600082815260cb602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a26114c9565b600082815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016114c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d65737361676500000000000000000000000000000000000000606482015260840161086a565b5050505b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60fc546040517fe9e05c4200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e9e05c42908490611553908890839089906000908990600401611e71565b6000604051808303818588803b15801561156c57600080fd5b505af1158015611580573d6000803e3d6000fd5b505050505050505050565b6000547501000000000000000000000000000000000000000000900460ff16611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161086a565b60cc5473ffffffffffffffffffffffffffffffffffffffff166116805760cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b60cf80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006116d585858585611863565b805190602001209050949350505050565b60006116f68787878787876118fc565b8051906020012090509695505050505050565b60fc5460009073ffffffffffffffffffffffffffffffffffffffff1633148015610a67575060cf5460fc54604080517f9bf62d82000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9384169390921691639bf62d82916004808201926020929091908290030181865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190611ec9565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600073ffffffffffffffffffffffffffffffffffffffff8216301480611825575060fc5473ffffffffffffffffffffffffffffffffffffffff8381169116145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b60608484848460405160240161187c9493929190611ee6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b606086868686868660405160240161191996959493929190611f30565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146119bd57600080fd5b50565b60008083601f8401126119d257600080fd5b50813567ffffffffffffffff8111156119ea57600080fd5b602083019150836020828501011115611a0257600080fd5b9250929050565b803563ffffffff81168114611a1d57600080fd5b919050565b60008060008060608587031215611a3857600080fd5b8435611a438161199b565b9350602085013567ffffffffffffffff811115611a5f57600080fd5b611a6b878288016119c0565b9094509250611a7e905060408601611a09565b905092959194509250565b60008060408385031215611a9c57600080fd5b8235611aa78161199b565b91506020830135611ab78161199b565b809150509250929050565b6000815180845260005b81811015611ae857602081850181015186830182015201611acc565b81811115611afa576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611b406020830184611ac2565b9392505050565b600060208284031215611b5957600080fd5b5035919050565b600080600060408486031215611b7557600080fd5b833567ffffffffffffffff811115611b8c57600080fd5b611b98868287016119c0565b9094509250611bab905060208501611a09565b90509250925092565b600080600080600080600060c0888a031215611bcf57600080fd5b873596506020880135611be18161199b565b95506040880135611bf18161199b565b9450606088013593506080880135925060a088013567ffffffffffffffff811115611c1b57600080fd5b611c278a828b016119c0565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a0830152611cd560c083018486611c3a565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86168152608060208201526000611d12608083018688611c3a565b905083604083015263ffffffff831660608301529695505050505050565b600060208284031215611d4257600080fd5b81518015158114611b4057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615611da857611da8611d52565b02949350505050565b600067ffffffffffffffff80841680611df3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff808316818516808303821115611e2257611e22611d52565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082821015611e6c57611e6c611d52565b500390565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015267ffffffffffffffff84166040820152821515606082015260a060808201526000611ebe60a0830184611ac2565b979650505050505050565b600060208284031215611edb57600080fd5b8151611b408161199b565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152611f1f6080830185611ac2565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152611f7b60c0830184611ac2565b9897505050505050505056fea164736f6c634300080f000a", "sourceMap": "701:2432:130:-:0;;;1159:163;;;;;;;;;-1:-1:-1;1206:109:130::1;1263:1;::::0;1206:10:::1;:109::i;:::-;701:2432:::0;;1542:296;3111:19:27;3134:13;-1:-1:-1;;;3134:13:27;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:27;;3212:1;-1:-1:-1;;;3197:12:27;;;;;:16;3179:34;3178:108;;;;3220:44;3258:4;3220:29;;;;;:44;;:::i;:::-;3219:45;:66;;;;-1:-1:-1;3268:12:27;;-1:-1:-1;;;3268:12:27;;;;3284:1;3268:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:27;;216:2:357;3157:201:27;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:357;;;338:44;399:19;;3157:201:27;;;;;;;;;3368:12;:16;;-1:-1:-1;;;;3368:16:27;-1:-1:-1;;;3368:16:27;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;;;3428:20:27;-1:-1:-1;;;3428:20:27;;;3394:65;1651:16:130::1;:36:::0;;-1:-1:-1;;;;;1651:36:130;;::::1;-1:-1:-1::0;;;;;;1651:36:130;;::::1;;::::0;;;1697:6:::1;:16:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;1723:108:::1;480:42:199;1723:27:130;:108::i;:::-;3483:14:27::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;;;3513:21:27;;;3553:14;;-1:-1:-1;581:36:357;;3553:14:27;;569:2:357;554:18;3553:14:27;;;;;;;3479:99;3101:483;1542:296:130;;:::o;1186:320:33:-;-1:-1:-1;;;;;1476:19:33;;:23;;;1186:320::o;18503:636:223:-;4910:13:27;;-1:-1:-1;;;4910:13:27;;;;4902:69;;;;-1:-1:-1;;;4902:69:27;;830:2:357;4902:69:27;;;812:21:357;869:2;849:18;;;842:30;908:34;888:18;;;881:62;-1:-1:-1;;;959:18:357;;;952:41;1010:19;;4902:69:27;628:407:357;4902:69:27;18988:16:223::1;::::0;-1:-1:-1;;;;;18988:16:223::1;18984:107;;19034:16;:46:::0;;-1:-1:-1;;;;;;19034:46:223::1;1338:42:192;19034:46:223;::::0;;18984:107:::1;19100:14;:32:::0;;-1:-1:-1;;;;;;19100:32:223::1;-1:-1:-1::0;;;;;19100:32:223;;;::::1;::::0;;;::::1;::::0;;18503:636::o;628:407:357:-;701:2432:130;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x6080604052600436106101805760003560e01c80635c975abb116100d6578063a4e7f8bd1161007f578063d764ad0b11610059578063d764ad0b14610463578063db505d8014610476578063ecc70428146104a357600080fd5b8063a4e7f8bd146103e3578063b1b1b20914610413578063b28ade251461044357600080fd5b806383a74074116100b057806383a74074146103a15780638cbeeef2146102b85780639fce812c146103b857600080fd5b80635c975abb1461033a5780636425666b1461035f5780636e296e451461038c57600080fd5b80633dbb202b116101385780634c1d6a69116101125780634c1d6a69146102b857806354fd4d50146102ce5780635644cfdf1461032457600080fd5b80633dbb202b1461025b5780633f827a5a14610270578063485cc9551461029857600080fd5b80630ff754ea116101695780630ff754ea146101cd5780632828d7e81461021957806335e80ab31461022e57600080fd5b8063028f85f7146101855780630c568498146101b8575b600080fd5b34801561019157600080fd5b5061019a601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b3480156101c457600080fd5b5061019a603f81565b3480156101d957600080fd5b5060fc5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101af565b34801561022557600080fd5b5061019a604081565b34801561023a57600080fd5b5060fb546101f49073ffffffffffffffffffffffffffffffffffffffff1681565b61026e610269366004611a22565b610508565b005b34801561027c57600080fd5b50610285600181565b60405161ffff90911681526020016101af565b3480156102a457600080fd5b5061026e6102b3366004611a89565b610765565b3480156102c457600080fd5b5061019a619c4081565b3480156102da57600080fd5b506103176040518060400160405280600581526020017f322e332e3000000000000000000000000000000000000000000000000000000081525081565b6040516101af9190611b2d565b34801561033057600080fd5b5061019a61138881565b34801561034657600080fd5b5061034f6109d3565b60405190151581526020016101af565b34801561036b57600080fd5b5060fc546101f49073ffffffffffffffffffffffffffffffffffffffff1681565b34801561039857600080fd5b506101f4610a6c565b3480156103ad57600080fd5b5061019a62030d4081565b3480156103c457600080fd5b5060cf5473ffffffffffffffffffffffffffffffffffffffff166101f4565b3480156103ef57600080fd5b5061034f6103fe366004611b47565b60ce6020526000908152604090205460ff1681565b34801561041f57600080fd5b5061034f61042e366004611b47565b60cb6020526000908152604090205460ff1681565b34801561044f57600080fd5b5061019a61045e366004611b60565b610b53565b61026e610471366004611bb4565b610bc1565b34801561048257600080fd5b5060cf546101f49073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104af57600080fd5b506104fa60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b6040519081526020016101af565b60cf5461063a9073ffffffffffffffffffffffffffffffffffffffff16610530858585610b53565b347fd764ad0b0000000000000000000000000000000000000000000000000000000061059c60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b338a34898c8c6040516024016105b89796959493929190611c83565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526114f2565b8373ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a3385856106bf60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b866040516106d1959493929190611ce2565b60405180910390a260405134815233907f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d5469060200160405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b6000547501000000000000000000000000000000000000000000900460ff16158080156107b0575060005460017401000000000000000000000000000000000000000090910460ff16105b806107e25750303b1580156107e2575060005474010000000000000000000000000000000000000000900460ff166001145b610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905580156108f957600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b60fb805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560fc80549285169290911691909117905561096b73420000000000000000000000000000000000000761158b565b80156109ce57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60fb54604080517f5c975abb000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691635c975abb9160048083019260209291908290030181865afa158015610a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a679190611d30565b905090565b60cc5460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff215301610b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f74207365740000000000000000000000606482015260840161086a565b5060cc5473ffffffffffffffffffffffffffffffffffffffff1690565b6000611388619c4080603f610b6f604063ffffffff8816611d81565b610b799190611db1565b610b84601088611d81565b610b919062030d40611dff565b610b9b9190611dff565b610ba59190611dff565b610baf9190611dff565b610bb99190611dff565b949350505050565b610bc96109d3565b15610c30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f43726f7373446f6d61696e4d657373656e6765723a2070617573656400000000604482015260640161086a565b60f087901c60028110610ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206f722031206d657373616765732061726520737570706f7274656460648201527f20617420746869732074696d6500000000000000000000000000000000000000608482015260a40161086a565b8061ffff16600003610de0576000610d3c878986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f92506116c7915050565b600081815260cb602052604090205490915060ff1615610dde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f43726f7373446f6d61696e4d657373656e6765723a206c65676163792077697460448201527f6864726177616c20616c72656164792072656c61796564000000000000000000606482015260840161086a565b505b6000610e26898989898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506116e692505050565b9050610e30611709565b15610e6857853414610e4457610e44611e2b565b600081815260ce602052604090205460ff1615610e6357610e63611e2b565b610fba565b3415610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a40161086a565b600081815260ce602052604090205460ff16610fba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c6179656400000000000000000000000000000000606482015260840161086a565b610fc3876117e5565b15611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a40161086a565b600081815260cb602052604090205460ff1615611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c6179656400000000000000000000606482015260840161086a565b61113685611127611388619c40611dff565b67ffffffffffffffff1661182b565b158061115c575060cc5473ffffffffffffffffffffffffffffffffffffffff1661dead14155b1561127557600081815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff320161126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d65737361676500000000000000000000000000000000000000606482015260840161086a565b50506114cd565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055600061130688619c405a6112c99190611e5a565b8988888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061184992505050565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055905080156113bc57600082815260cb602052604090205460ff161561135957611359611e2b565b600082815260cb602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a26114c9565b600082815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016114c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d65737361676500000000000000000000000000000000000000606482015260840161086a565b5050505b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60fc546040517fe9e05c4200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e9e05c42908490611553908890839089906000908990600401611e71565b6000604051808303818588803b15801561156c57600080fd5b505af1158015611580573d6000803e3d6000fd5b505050505050505050565b6000547501000000000000000000000000000000000000000000900460ff16611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161086a565b60cc5473ffffffffffffffffffffffffffffffffffffffff166116805760cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b60cf80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006116d585858585611863565b805190602001209050949350505050565b60006116f68787878787876118fc565b8051906020012090509695505050505050565b60fc5460009073ffffffffffffffffffffffffffffffffffffffff1633148015610a67575060cf5460fc54604080517f9bf62d82000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9384169390921691639bf62d82916004808201926020929091908290030181865afa1580156117a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c99190611ec9565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b600073ffffffffffffffffffffffffffffffffffffffff8216301480611825575060fc5473ffffffffffffffffffffffffffffffffffffffff8381169116145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b60608484848460405160240161187c9493929190611ee6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b606086868686868660405160240161191996959493929190611f30565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146119bd57600080fd5b50565b60008083601f8401126119d257600080fd5b50813567ffffffffffffffff8111156119ea57600080fd5b602083019150836020828501011115611a0257600080fd5b9250929050565b803563ffffffff81168114611a1d57600080fd5b919050565b60008060008060608587031215611a3857600080fd5b8435611a438161199b565b9350602085013567ffffffffffffffff811115611a5f57600080fd5b611a6b878288016119c0565b9094509250611a7e905060408601611a09565b905092959194509250565b60008060408385031215611a9c57600080fd5b8235611aa78161199b565b91506020830135611ab78161199b565b809150509250929050565b6000815180845260005b81811015611ae857602081850181015186830182015201611acc565b81811115611afa576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611b406020830184611ac2565b9392505050565b600060208284031215611b5957600080fd5b5035919050565b600080600060408486031215611b7557600080fd5b833567ffffffffffffffff811115611b8c57600080fd5b611b98868287016119c0565b9094509250611bab905060208501611a09565b90509250925092565b600080600080600080600060c0888a031215611bcf57600080fd5b873596506020880135611be18161199b565b95506040880135611bf18161199b565b9450606088013593506080880135925060a088013567ffffffffffffffff811115611c1b57600080fd5b611c278a828b016119c0565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a0830152611cd560c083018486611c3a565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86168152608060208201526000611d12608083018688611c3a565b905083604083015263ffffffff831660608301529695505050505050565b600060208284031215611d4257600080fd5b81518015158114611b4057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615611da857611da8611d52565b02949350505050565b600067ffffffffffffffff80841680611df3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff808316818516808303821115611e2257611e22611d52565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082821015611e6c57611e6c611d52565b500390565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015267ffffffffffffffff84166040820152821515606082015260a060808201526000611ebe60a0830184611ac2565b979650505050505050565b600060208284031215611edb57600080fd5b8151611b408161199b565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152611f1f6080830185611ac2565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152611f7b60c0830184611ac2565b9897505050505050505056fea164736f6c634300080f000a", "sourceMap": "701:2432:130:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4456:53:223;;;;;;;;;;;;4507:2;4456:53;;;;;188:18:357;176:31;;;158:50;;146:2;131:18;4456:53:223;;;;;;;;4301:64;;;;;;;;;;;;4363:2;4301:64;;2107:87:130;;;;;;;;;;-1:-1:-1;2181:6:130;;;;2107:87;;;427:42:357;415:55;;;397:74;;385:2;370:18;2107:87:130;219:258:357;4146:62:223;;;;;;;;;;;;4206:2;4146:62;;822:40:130;;;;;;;;;;-1:-1:-1;822:40:130;;;;;;;;8628:995:223;;;;;;:::i;:::-;;:::i;:::-;;3879:42;;;;;;;;;;;;3920:1;3879:42;;;;;2213:6:357;2201:19;;;2183:38;;2171:2;2156:18;3879:42:223;2039:188:357;1542:296:130;;;;;;;;;;-1:-1:-1;1542:296:130;;;;;:::i;:::-;;:::i;4597:51:223:-;;;;;;;;;;;;4642:6;4597:51;;1048:40:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4943:53:223:-;;;;;;;;;;;;4991:5;4943:53;;3028:103:130;;;;;;;;;;;;;:::i;:::-;;;3601:14:357;;3594:22;3576:41;;3564:2;3549:18;3028:103:130;3436:187:357;950:28:130;;;;;;;;;;-1:-1:-1;950:28:130;;;;;;;;15764:250:223;;;;;;;;;;;;;:::i;3999:56::-;;;;;;;;;;;;4048:7;3999:56;;16317:108;;;;;;;;;;-1:-1:-1;16404:14:223;;;;16317:108;;6234:46;;;;;;;;;;-1:-1:-1;6234:46:223;;;;;:::i;:::-;;;;;;;;;;;;;;;;5252:50;;;;;;;;;;-1:-1:-1;5252:50:223;;;;;:::i;:::-;;;;;;;;;;;;;;;;17493:894;;;;;;;;;;-1:-1:-1;17493:894:223;;;;;:::i;:::-;;:::i;10311:5066::-;;;;;;:::i;:::-;;:::i;6386:42::-;;;;;;;;;;-1:-1:-1;6386:42:223;;;;;;;;16746:134;;;;;;;;;;;;16847:8;;;;4855:18:195;4852:30;;3028:103:130;16746:134:223;;;5835:25:357;;;5823:2;5808:18;16746:134:223;5689:177:357;8628:995:223;9128:14;;9088:326;;9128:14;;9168:31;9176:8;;9186:12;9168:7;:31::i;:::-;9221:9;9291:26;9319:14;16847:8;;;;4855:18:195;4852:30;;3028:103:130;9319:14:223;9335:10;9347:7;9356:9;9367:12;9381:8;;9251:152;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9088:12;:326::i;:::-;9442:7;9430:72;;;9451:10;9463:8;;9473:14;16847:8;;;;4855:18:195;4852:30;;3028:103:130;9473:14:223;9489:12;9430:72;;;;;;;;;;:::i;:::-;;;;;;;;9517:44;;9551:9;5835:25:357;;9539:10:223;;9517:44;;5823:2:357;5808:18;9517:44:223;;;;;;;-1:-1:-1;;9598:8:223;9596:10;;;;;;;;;;;;;;;;-1:-1:-1;;8628:995:223:o;1542:296:130:-;3111:19:27;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:27;;3212:1;3197:12;;;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:27;1476:19:33;:23;;;3219:66:27;;-1:-1:-1;3268:12:27;;;;;;;3284:1;3268:17;3219:66;3157:201;;;;;;;7634:2:357;3157:201:27;;;7616:21:357;7673:2;7653:18;;;7646:30;7712:34;7692:18;;;7685:62;7783:16;7763:18;;;7756:44;7817:19;;3157:201:27;;;;;;;;;3368:12;:16;;;;;;;;3394:65;;;;3428:13;:20;;;;;;;;3394:65;1651:16:130::1;:36:::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;;;1697:6:::1;:16:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;1723:108:::1;480:42:199;1723:27:130;:108::i;:::-;3483:14:27::0;3479:99;;;3529:5;3513:21;;;;;;3553:14;;-1:-1:-1;7999:36:357;;3553:14:27;;7987:2:357;7972:18;3553:14:27;;;;;;;3479:99;3101:483;1542:296:130;;:::o;3028:103::-;3099:16;;:25;;;;;;;;3076:4;;3099:16;;;:23;;:25;;;;;;;;;;;;;;:16;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3092:32;;3028:103;:::o;15764:250:223:-;15859:16;;15819:7;;15859:47;:16;:47;;15838:135;;;;;;;8530:2:357;15838:135:223;;;8512:21:357;8569:2;8549:18;;;8542:30;8608:34;8588:18;;;8581:62;8679:23;8659:18;;;8652:51;8720:19;;15838:135:223;8328:417:357;15838:135:223;-1:-1:-1;15991:16:223;;;;;15764:250::o;17493:894::-;17577:6;4991:5;4796:6;;4363:2;17806:49;4206:2;17806:49;;;;:::i;:::-;17805:90;;;;:::i;:::-;17703:51;4507:2;17710:8;17703:51;:::i;:::-;17639:116;;4048:7;17639:116;:::i;:::-;:257;;;;:::i;:::-;:412;;;;:::i;:::-;:587;;;;:::i;:::-;:741;;;;:::i;:::-;17595:785;17493:894;-1:-1:-1;;;;17493:894:223:o;10311:5066::-;10722:8;:6;:8::i;:::-;:17;10714:58;;;;;;;10015:2:357;10714:58:223;;;9997:21:357;10054:2;10034:18;;;10027:30;10093;10073:18;;;10066:58;10141:18;;10714:58:223;9813:352:357;10714:58:223;5444:3:195;5440:16;;;10869:1:223;10859:11;;10851:101;;;;;;;10372:2:357;10851:101:223;;;10354:21:357;10411:2;10391:18;;;10384:30;10450:34;10430:18;;;10423:62;10521:34;10501:18;;;10494:62;10593:15;10572:19;;;10565:44;10626:19;;10851:101:223;10170:481:357;10851:101:223;11154:7;:12;;11165:1;11154:12;11150:247;;11182:15;11200:68;11233:7;11242;11251:8;;11200:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11261:6:223;;-1:-1:-1;11200:32:223;;-1:-1:-1;;11200:68:223:i;:::-;11290:27;;;;:18;:27;;;;;;11182:86;;-1:-1:-1;11290:27:223;;:36;11282:104;;;;;;;10858:2:357;11282:104:223;;;10840:21:357;10897:2;10877:18;;;10870:30;10936:34;10916:18;;;10909:62;11007:25;10987:18;;;10980:53;11050:19;;11282:104:223;10656:419:357;11282:104:223;11168:229;11150:247;11567:21;11603:90;11636:6;11644:7;11653;11662:6;11670:12;11684:8;;11603:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11603:32:223;;-1:-1:-1;;;11603:90:223:i;:::-;11567:126;;11708:19;:17;:19::i;:::-;11704:506;;;11897:6;11884:9;:19;11877:27;;;;:::i;:::-;11926:29;;;;:14;:29;;;;;;;;11925:30;11918:38;;;;:::i;:::-;11704:506;;;11995:9;:14;11987:107;;;;;;;11471:2:357;11987:107:223;;;11453:21:357;11510:2;11490:18;;;11483:30;11549:34;11529:18;;;11522:62;11620:34;11600:18;;;11593:62;11692:18;11671:19;;;11664:47;11728:19;;11987:107:223;11269:484:357;11987:107:223;12117:29;;;;:14;:29;;;;;;;;12109:90;;;;;;;11960:2:357;12109:90:223;;;11942:21:357;11999:2;11979:18;;;11972:30;12038:34;12018:18;;;12011:62;12109:18;12089;;;12082:46;12145:19;;12109:90:223;11758:412:357;12109:90:223;12241:24;12257:7;12241:15;:24::i;:::-;:33;12220:135;;;;;;;12377:2:357;12220:135:223;;;12359:21:357;12416:2;12396:18;;;12389:30;12455:34;12435:18;;;12428:62;12526:34;12506:18;;;12499:62;12598:5;12577:19;;;12570:34;12621:19;;12220:135:223;12175:471:357;12220:135:223;12374:33;;;;:18;:33;;;;;;;;:42;12366:109;;;;;;;12853:2:357;12366:109:223;;;12835:21:357;12892:2;12872:18;;;12865:30;12931:34;12911:18;;;12904:62;13002:24;12982:18;;;12975:52;13044:19;;12366:109:223;12651:418:357;12366:109:223;13169:77;13188:12;13202:43;4991:5;4796:6;13202:43;:::i;:::-;13169:77;;:18;:77::i;:::-;13168:78;:145;;;-1:-1:-1;13266:16:223;;:47;:16;1338:42:192;13266:47:223;;13168:145;13151:919;;;13338:29;;;;:14;:29;;;;;;:36;;;;13370:4;13338:36;;;13393:35;13353:13;;13393:35;;;13908:41;:9;:41;13904:135;;13969:55;;;;;13276:2:357;13969:55:223;;;13258:21:357;13315:2;13295:18;;;13288:30;13354:34;13334:18;;;13327:62;13425:15;13405:18;;;13398:43;13458:19;;13969:55:223;13074:409:357;13904:135:223;14053:7;;;;13151:919;14080:16;:26;;;;;;;;;;-1:-1:-1;14131:72:223;14145:7;4796:6;14154:9;:30;;;;:::i;:::-;14186:6;14194:8;;14131:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14131:13:223;;-1:-1:-1;;;14131:72:223:i;:::-;14213:16;:46;;;;1338:42:192;14213:46:223;;;14116:87;-1:-1:-1;14270:1101:223;;;;14484:33;;;;:18;:33;;;;;;;;:42;14477:50;;;;:::i;:::-;14541:33;;;;:18;:33;;;;;;:40;;;;14577:4;14541:40;;;14600:29;14560:13;;14600:29;;;14270:1101;;;14660:29;;;;:14;:29;;;;;;:36;;;;14692:4;14660:36;;;14715:35;14675:13;;14715:35;;;15230:41;:9;:41;15226:135;;15291:55;;;;;13276:2:357;15291:55:223;;;13258:21:357;13315:2;13295:18;;;13288:30;13354:34;13334:18;;;13327:62;13425:15;13405:18;;;13398:43;13458:19;;15291:55:223;13074:409:357;15226:135:223;10537:4840;;;10311:5066;;;;;;;;:::o;1186:320:33:-;1476:19;;;:23;;;1186:320::o;2241::130:-;2358:6;;:196;;;;;:6;;;;;:25;;2392:6;;2358:196;;2420:3;;2392:6;;2476:9;;2358:6;;2538:5;;2358:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2241:320;;;;:::o;18503:636:223:-;4910:13:27;;;;;;;4902:69;;;;;;;14412:2:357;4902:69:27;;;14394:21:357;14451:2;14431:18;;;14424:30;14490:34;14470:18;;;14463:62;14561:13;14541:18;;;14534:41;14592:19;;4902:69:27;14210:407:357;4902:69:27;18988:16:223::1;::::0;:30:::1;:16;18984:107;;19034:16;:46:::0;;;::::1;1338:42:192;19034:46:223;::::0;;18984:107:::1;19100:14;:32:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18503:636::o;3100:305:196:-;3289:7;3329:68;3365:7;3374;3383:5;3390:6;3329:35;:68::i;:::-;3319:79;;;;;;3312:86;;3100:305;;;;;;:::o;3877:375::-;4117:7;4157:87;4193:6;4201:7;4210;4219:6;4227:9;4238:5;4157:35;:87::i;:::-;4147:98;;;;;;4140:105;;3877:375;;;;;;;;:::o;2608:168:130:-;2714:6;;2669:4;;2714:6;;2692:10;:29;:77;;;;-1:-1:-1;2754:14:130;;2725:6;;:17;;;;;;;;2754:14;;;;;2725:6;;;;:15;;:17;;;;;;;;;;;;;;;:6;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;2685:84;;2608:168;:::o;2823:158::-;2897:4;2920:24;;;2939:4;2920:24;;:54;;-1:-1:-1;2967:6:130;;;2948:26;;;2967:6;;2948:26;2920:54;2913:61;2823:158;-1:-1:-1;;2823:158:130:o;3615:365:200:-;3696:4;3712:15;3931:2;3916:12;3909:5;3905:24;3901:33;3896:2;3887:7;3883:16;3879:56;3874:2;3867:5;3863:14;3860:76;3853:84;;3615:365;-1:-1:-1;;;;3615:365:200:o;1202:536::-;1305:4;1321:13;1668:1;1635;1594:9;1588:16;1554:2;1543:9;1539:18;1496:6;1454:7;1421:4;1395:302;1367:330;1202:536;-1:-1:-1;;;;;;1202:536:200:o;3073:336:195:-;3264:12;3370:7;3379;3388:5;3395:6;3299:103;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3073:336:195;;;;;;:::o;3883:516::-;4125:12;4272:6;4292:7;4313;4334:6;4354:9;4377:5;4160:232;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3883:516:195;;;;;;;;:::o;739:154:357:-;825:42;818:5;814:54;807:5;804:65;794:93;;883:1;880;873:12;794:93;739:154;:::o;898:347::-;949:8;959:6;1013:3;1006:4;998:6;994:17;990:27;980:55;;1031:1;1028;1021:12;980:55;-1:-1:-1;1054:20:357;;1097:18;1086:30;;1083:50;;;1129:1;1126;1119:12;1083:50;1166:4;1158:6;1154:17;1142:29;;1218:3;1211:4;1202:6;1194;1190:19;1186:30;1183:39;1180:59;;;1235:1;1232;1225:12;1180:59;898:347;;;;;:::o;1250:163::-;1317:20;;1377:10;1366:22;;1356:33;;1346:61;;1403:1;1400;1393:12;1346:61;1250:163;;;:::o;1418:616::-;1505:6;1513;1521;1529;1582:2;1570:9;1561:7;1557:23;1553:32;1550:52;;;1598:1;1595;1588:12;1550:52;1637:9;1624:23;1656:31;1681:5;1656:31;:::i;:::-;1706:5;-1:-1:-1;1762:2:357;1747:18;;1734:32;1789:18;1778:30;;1775:50;;;1821:1;1818;1811:12;1775:50;1860:58;1910:7;1901:6;1890:9;1886:22;1860:58;:::i;:::-;1937:8;;-1:-1:-1;1834:84:357;-1:-1:-1;1991:37:357;;-1:-1:-1;2024:2:357;2009:18;;1991:37;:::i;:::-;1981:47;;1418:616;;;;;;;:::o;2232:438::-;2350:6;2358;2411:2;2399:9;2390:7;2386:23;2382:32;2379:52;;;2427:1;2424;2417:12;2379:52;2466:9;2453:23;2485:31;2510:5;2485:31;:::i;:::-;2535:5;-1:-1:-1;2592:2:357;2577:18;;2564:32;2605:33;2564:32;2605:33;:::i;:::-;2657:7;2647:17;;;2232:438;;;;;:::o;2675:531::-;2717:3;2755:5;2749:12;2782:6;2777:3;2770:19;2807:1;2817:162;2831:6;2828:1;2825:13;2817:162;;;2893:4;2949:13;;;2945:22;;2939:29;2921:11;;;2917:20;;2910:59;2846:12;2817:162;;;2997:6;2994:1;2991:13;2988:87;;;3063:1;3056:4;3047:6;3042:3;3038:16;3034:27;3027:38;2988:87;-1:-1:-1;3120:2:357;3108:15;3125:66;3104:88;3095:98;;;;3195:4;3091:109;;2675:531;-1:-1:-1;;2675:531:357:o;3211:220::-;3360:2;3349:9;3342:21;3323:4;3380:45;3421:2;3410:9;3406:18;3398:6;3380:45;:::i;:::-;3372:53;3211:220;-1:-1:-1;;;3211:220:357:o;4121:180::-;4180:6;4233:2;4221:9;4212:7;4208:23;4204:32;4201:52;;;4249:1;4246;4239:12;4201:52;-1:-1:-1;4272:23:357;;4121:180;-1:-1:-1;4121:180:357:o;4306:481::-;4384:6;4392;4400;4453:2;4441:9;4432:7;4428:23;4424:32;4421:52;;;4469:1;4466;4459:12;4421:52;4509:9;4496:23;4542:18;4534:6;4531:30;4528:50;;;4574:1;4571;4564:12;4528:50;4613:58;4663:7;4654:6;4643:9;4639:22;4613:58;:::i;:::-;4690:8;;-1:-1:-1;4587:84:357;-1:-1:-1;4744:37:357;;-1:-1:-1;4777:2:357;4762:18;;4744:37;:::i;:::-;4734:47;;4306:481;;;;;:::o;4792:892::-;4907:6;4915;4923;4931;4939;4947;4955;5008:3;4996:9;4987:7;4983:23;4979:33;4976:53;;;5025:1;5022;5015:12;4976:53;5061:9;5048:23;5038:33;;5121:2;5110:9;5106:18;5093:32;5134:31;5159:5;5134:31;:::i;:::-;5184:5;-1:-1:-1;5241:2:357;5226:18;;5213:32;5254:33;5213:32;5254:33;:::i;:::-;5306:7;-1:-1:-1;5360:2:357;5345:18;;5332:32;;-1:-1:-1;5411:3:357;5396:19;;5383:33;;-1:-1:-1;5467:3:357;5452:19;;5439:33;5495:18;5484:30;;5481:50;;;5527:1;5524;5517:12;5481:50;5566:58;5616:7;5607:6;5596:9;5592:22;5566:58;:::i;:::-;4792:892;;;;-1:-1:-1;4792:892:357;;-1:-1:-1;4792:892:357;;;;5540:84;;-1:-1:-1;;;4792:892:357:o;5871:325::-;5959:6;5954:3;5947:19;6011:6;6004:5;5997:4;5992:3;5988:14;5975:43;;6063:1;6056:4;6047:6;6042:3;6038:16;6034:27;6027:38;5929:3;6185:4;6115:66;6110:2;6102:6;6098:15;6094:88;6089:3;6085:98;6081:109;6074:116;;5871:325;;;;:::o;6201:697::-;6496:6;6485:9;6478:25;6459:4;6522:42;6612:2;6604:6;6600:15;6595:2;6584:9;6580:18;6573:43;6664:2;6656:6;6652:15;6647:2;6636:9;6632:18;6625:43;;6704:6;6699:2;6688:9;6684:18;6677:34;6760:10;6752:6;6748:23;6742:3;6731:9;6727:19;6720:52;6809:3;6803;6792:9;6788:19;6781:32;6830:62;6887:3;6876:9;6872:19;6864:6;6856;6830:62;:::i;:::-;6822:70;6201:697;-1:-1:-1;;;;;;;;;6201:697:357:o;6903:524::-;7155:42;7147:6;7143:55;7132:9;7125:74;7235:3;7230:2;7219:9;7215:18;7208:31;7106:4;7256:62;7313:3;7302:9;7298:19;7290:6;7282;7256:62;:::i;:::-;7248:70;;7354:6;7349:2;7338:9;7334:18;7327:34;7409:10;7401:6;7397:23;7392:2;7381:9;7377:18;7370:51;6903:524;;;;;;;;:::o;8046:277::-;8113:6;8166:2;8154:9;8145:7;8141:23;8137:32;8134:52;;;8182:1;8179;8172:12;8134:52;8214:9;8208:16;8267:5;8260:13;8253:21;8246:5;8243:32;8233:60;;8289:1;8286;8279:12;8750:184;8802:77;8799:1;8792:88;8899:4;8896:1;8889:15;8923:4;8920:1;8913:15;8939:270;8978:7;9010:18;9055:2;9052:1;9048:10;9085:2;9082:1;9078:10;9141:3;9137:2;9133:12;9128:3;9125:21;9118:3;9111:11;9104:19;9100:47;9097:73;;;9150:18;;:::i;:::-;9190:13;;8939:270;-1:-1:-1;;;;8939:270:357:o;9214:353::-;9253:1;9279:18;9324:2;9321:1;9317:10;9346:3;9336:191;;9383:77;9380:1;9373:88;9484:4;9481:1;9474:15;9512:4;9509:1;9502:15;9336:191;9545:10;;9541:20;;;;;9214:353;-1:-1:-1;;9214:353:357:o;9572:236::-;9611:3;9639:18;9684:2;9681:1;9677:10;9714:2;9711:1;9707:10;9745:3;9741:2;9737:12;9732:3;9729:21;9726:47;;;9753:18;;:::i;:::-;9789:13;;9572:236;-1:-1:-1;;;;9572:236:357:o;11080:184::-;11132:77;11129:1;11122:88;11229:4;11226:1;11219:15;11253:4;11250:1;11243:15;13488:125;13528:4;13556:1;13553;13550:8;13547:34;;;13561:18;;:::i;:::-;-1:-1:-1;13598:9:357;;13488:125::o;13618:587::-;13881:42;13873:6;13869:55;13858:9;13851:74;13961:6;13956:2;13945:9;13941:18;13934:34;14016:18;14008:6;14004:31;13999:2;13988:9;13984:18;13977:59;14086:6;14079:14;14072:22;14067:2;14056:9;14052:18;14045:50;14132:3;14126;14115:9;14111:19;14104:32;13832:4;14153:46;14194:3;14183:9;14179:19;14171:6;14153:46;:::i;:::-;14145:54;13618:587;-1:-1:-1;;;;;;;13618:587:357:o;14622:251::-;14692:6;14745:2;14733:9;14724:7;14720:23;14716:32;14713:52;;;14761:1;14758;14751:12;14713:52;14793:9;14787:16;14812:31;14837:5;14812:31;:::i;14878:512::-;15072:4;15101:42;15182:2;15174:6;15170:15;15159:9;15152:34;15234:2;15226:6;15222:15;15217:2;15206:9;15202:18;15195:43;;15274:3;15269:2;15258:9;15254:18;15247:31;15295:46;15336:3;15325:9;15321:19;15313:6;15295:46;:::i;:::-;15287:54;;15377:6;15372:2;15361:9;15357:18;15350:34;14878:512;;;;;;;:::o;15395:656::-;15682:6;15671:9;15664:25;15645:4;15708:42;15798:2;15790:6;15786:15;15781:2;15770:9;15766:18;15759:43;15850:2;15842:6;15838:15;15833:2;15822:9;15818:18;15811:43;;15890:6;15885:2;15874:9;15870:18;15863:34;15934:6;15928:3;15917:9;15913:19;15906:35;15978:3;15972;15961:9;15957:19;15950:32;15999:46;16040:3;16029:9;16025:19;16017:6;15999:46;:::i;:::-;15991:54;15395:656;-1:-1:-1;;;;;;;;15395:656:357:o", "linkReferences": {} }, "methodIdentifiers": { "MESSAGE_VERSION()": "3f827a5a", "MIN_GAS_CALLDATA_OVERHEAD()": "028f85f7", "MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR()": "0c568498", "MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR()": "2828d7e8", "OTHER_MESSENGER()": "9fce812c", "PORTAL()": "0ff754ea", "RELAY_CALL_OVERHEAD()": "4c1d6a69", "RELAY_CONSTANT_OVERHEAD()": "83a74074", "RELAY_GAS_CHECK_BUFFER()": "5644cfdf", "RELAY_RESERVED_GAS()": "8cbeeef2", "baseGas(bytes,uint32)": "b28ade25", "failedMessages(bytes32)": "a4e7f8bd", "initialize(address,address)": "485cc955", "messageNonce()": "ecc70428", "otherMessenger()": "db505d80", "paused()": "5c975abb", "portal()": "6425666b", "relayMessage(uint256,address,address,uint256,uint256,bytes)": "d764ad0b", "sendMessage(address,bytes,uint32)": "3dbb202b", "successfulMessages(bytes32)": "b1b1b209", "superchainConfig()": "35e80ab3", "version()": "54fd4d50", "xDomainMessageSender()": "6e296e45" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"FailedRelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"RelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SentMessageExtension1\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MESSAGE_VERSION\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_GAS_CALLDATA_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_MESSENGER\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PORTAL\",\"outputs\":[{\"internalType\":\"contract OptimismPortal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_CALL_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_CONSTANT_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_GAS_CHECK_BUFFER\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_RESERVED_GAS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"}],\"name\":\"baseGas\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"failedMessages\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract SuperchainConfig\",\"name\":\"_superchainConfig\",\"type\":\"address\"},{\"internalType\":\"contract OptimismPortal\",\"name\":\"_portal\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"otherMessenger\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"portal\",\"outputs\":[{\"internalType\":\"contract OptimismPortal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"}],\"name\":\"sendMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"successfulMessages\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"superchainConfig\",\"outputs\":[{\"internalType\":\"contract SuperchainConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"xDomainMessageSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:proxied\":\"@title L1CrossDomainMessenger\",\"kind\":\"dev\",\"methods\":{\"OTHER_MESSENGER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"CrossDomainMessenger contract on the other chain.\"}},\"PORTAL()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the OptimismPortal on this chain.\"}},\"baseGas(bytes,uint32)\":{\"params\":{\"_message\":\"Message to compute the amount of required gas for.\",\"_minGasLimit\":\"Minimum desired gas limit when message goes to target.\"},\"returns\":{\"_0\":\"Amount of gas required to guarantee message receipt.\"}},\"initialize(address,address)\":{\"params\":{\"_portal\":\"Contract of the OptimismPortal contract on this network.\",\"_superchainConfig\":\"Contract of the SuperchainConfig contract on this network.\"}},\"messageNonce()\":{\"returns\":{\"_0\":\"Nonce of the next message to be sent, with added message version.\"}},\"paused()\":{\"returns\":{\"_0\":\"Whether or not the contract is paused.\"}},\"relayMessage(uint256,address,address,uint256,uint256,bytes)\":{\"params\":{\"_message\":\"Message to send to the target.\",\"_minGasLimit\":\"Minimum amount of gas that the message can be executed with.\",\"_nonce\":\"Nonce of the message being relayed.\",\"_sender\":\"Address of the user who sent the message.\",\"_target\":\"Address that the message is targeted at.\",\"_value\":\"ETH value to send with the message.\"}},\"sendMessage(address,bytes,uint32)\":{\"params\":{\"_message\":\"Message to trigger the target address with.\",\"_minGasLimit\":\"Minimum gas limit that the message can be executed with.\",\"_target\":\"Target contract or wallet address.\"}},\"xDomainMessageSender()\":{\"returns\":{\"_0\":\"Address of the sender of the currently executing message on the other chain.\"}}},\"stateVariables\":{\"portal\":{\"custom:network-specific\":\"\"},\"version\":{\"custom:semver\":\"2.3.0\"}},\"version\":1},\"userdoc\":{\"events\":{\"FailedRelayedMessage(bytes32)\":{\"notice\":\"Emitted whenever a message fails to be relayed on this chain.\"},\"RelayedMessage(bytes32)\":{\"notice\":\"Emitted whenever a message is successfully relayed on this chain.\"},\"SentMessage(address,address,bytes,uint256,uint256)\":{\"notice\":\"Emitted whenever a message is sent to the other chain.\"},\"SentMessageExtension1(address,uint256)\":{\"notice\":\"Additional event data to emit, required as of Bedrock. Cannot be merged with the         SentMessage event without breaking the ABI of this contract, this is good enough.\"}},\"kind\":\"user\",\"methods\":{\"MESSAGE_VERSION()\":{\"notice\":\"Current message version identifier.\"},\"MIN_GAS_CALLDATA_OVERHEAD()\":{\"notice\":\"Extra gas added to base gas for each byte of calldata in a message.\"},\"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR()\":{\"notice\":\"Denominator for dynamic overhead added to the base gas for a message.\"},\"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR()\":{\"notice\":\"Numerator for dynamic overhead added to the base gas for a message.\"},\"OTHER_MESSENGER()\":{\"notice\":\"Retrieves the address of the paired CrossDomainMessenger contract on the other chain         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead.\"},\"PORTAL()\":{\"notice\":\"Getter function for the OptimismPortal contract on this chain.         Public getter is legacy and will be removed in the future. Use `portal()` instead.\"},\"RELAY_CALL_OVERHEAD()\":{\"notice\":\"Gas reserved for performing the external call in `relayMessage`.\"},\"RELAY_CONSTANT_OVERHEAD()\":{\"notice\":\"Constant overhead added to the base gas for a message.\"},\"RELAY_GAS_CHECK_BUFFER()\":{\"notice\":\"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage`.\"},\"RELAY_RESERVED_GAS()\":{\"notice\":\"Gas reserved for finalizing the execution of `relayMessage` after the safe call.\"},\"baseGas(bytes,uint32)\":{\"notice\":\"Computes the amount of gas required to guarantee that a given message will be         received on the other chain without running out of gas. Guaranteeing that a message         will not run out of gas is important because this ensures that a message can always         be replayed on the other chain if it fails to execute completely.\"},\"constructor\":{\"notice\":\"Constructs the L1CrossDomainMessenger contract.\"},\"failedMessages(bytes32)\":{\"notice\":\"Mapping of message hashes to a boolean if and only if the message has failed to be         executed at least once. A message will not be present in this mapping if it         successfully executed on the first attempt.\"},\"initialize(address,address)\":{\"notice\":\"Initializes the contract.\"},\"messageNonce()\":{\"notice\":\"Retrieves the next message nonce. Message version will be added to the upper two         bytes of the message nonce. Message version allows us to treat messages as having         different structures.\"},\"otherMessenger()\":{\"notice\":\"CrossDomainMessenger contract on the other chain.\"},\"paused()\":{\"notice\":\"This function should return true if the contract is paused.         On L1 this function will check the SuperchainConfig for its paused status.         On L2 this function should be a no-op.\"},\"portal()\":{\"notice\":\"Contract of the OptimismPortal.\"},\"relayMessage(uint256,address,address,uint256,uint256,bytes)\":{\"notice\":\"Relays a message that was sent by the other CrossDomainMessenger contract. Can only         be executed via cross-chain call from the other messenger OR if the message was         already received once and is currently being replayed.\"},\"sendMessage(address,bytes,uint32)\":{\"notice\":\"Sends a message to some target address on the other chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function).\"},\"successfulMessages(bytes32)\":{\"notice\":\"Mapping of message hashes to boolean receipt values. Note that a message will only         be present in this mapping if it has successfully been relayed on this chain, and         can therefore not be relayed again.\"},\"superchainConfig()\":{\"notice\":\"Contract of the SuperchainConfig.\"},\"version()\":{\"notice\":\"Semantic version.\"},\"xDomainMessageSender()\":{\"notice\":\"Retrieves the address of the contract or wallet that initiated the currently         executing message on the other chain. Will throw an error if there is no message         currently being executed. Allows the recipient of a call to see who triggered it.\"}},\"notice\":\"The L1CrossDomainMessenger is a message passing interface between L1 and L2 responsible         for sending and receiving data on the L1 side. Users are encouraged to use this         interface instead of interacting with lower-level contracts directly.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L1/L1CrossDomainMessenger.sol\":\"L1CrossDomainMessenger\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689\",\"dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]},\"src/L1/L1CrossDomainMessenger.sol\":{\"keccak256\":\"0x1a93450f3f9e2262b32e7831709b01d4491befb79a90cc24509b569103674e06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2896f906f07fb6ceb7fea3cb31a10b8289db628142cb0612d9890d62bce265b1\",\"dweb:/ipfs/QmYGAMecafbcT4LRBbDCYFj6mPCa3u5hNGUq2tfjWU3s18\"]},\"src/L1/L2OutputOracle.sol\":{\"keccak256\":\"0x342c5084f3c640c90530122bd78372c011d6162e698dd8c8daec9496fef01d42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8700a3d486bd62cbb861ff80175b8040336940515791073af6a036db7c2df303\",\"dweb:/ipfs/QmSGKTH84rVHWgMg4d6GQZCmCJ16KuUuTsMwPMDdJxCsww\"]},\"src/L1/OptimismPortal.sol\":{\"keccak256\":\"0xf46a1158e86edcbb157d0b06a32db37867c0bc9d2aeeed6a8110547c7537201a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0aeb33d425db200953063e3576403b78c50e3a5e7b4f56ef4bead28919406ee2\",\"dweb:/ipfs/QmUFb1rEQnCFrGRZQPHgFFWJQ48SR7wodiSFLgQKu8Jx6k\"]},\"src/L1/ResourceMetering.sol\":{\"keccak256\":\"0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409\",\"dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM\"]},\"src/L1/SuperchainConfig.sol\":{\"keccak256\":\"0x5fab874f980fe3e52c3398ddd25b655c56af0c98c15588b2ad9ebf30671d859d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0aa613d38eceb621f8569fc714f521bc1f2df3d029552186ab3cdf2ee5d53f\",\"dweb:/ipfs/QmZDzFxhTXLW79eohQbr1nghNh3oNC4CUfH7uMX8CsjVAB\"]},\"src/L1/SystemConfig.sol\":{\"keccak256\":\"0xc3d6392cbc44e38ddc93b84b82b08ab8e813df771a48926db3f94edde8f2b64a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d326d644dc59a57a71f4ff6eaa5c6d1464697c7df337b641fe82091b9050e6ce\",\"dweb:/ipfs/Qmd6tNzBmm8V4cpcMNyFWbWnKPNMRoysmmA62rZjGqpg7f\"]},\"src/libraries/Arithmetic.sol\":{\"keccak256\":\"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72\",\"dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq\"]},\"src/libraries/Burn.sol\":{\"keccak256\":\"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f\",\"dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb\"]},\"src/libraries/Bytes.sol\":{\"keccak256\":\"0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782\",\"dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b\",\"dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp\"]},\"src/libraries/Encoding.sol\":{\"keccak256\":\"0x1dafabcbd4877c7abe9698957b0a44b7e911cb8b11c1437a4ed897135669fa87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6addfacefa26fdb44f56d73fa0172b97740de75629a962905ec2a20a28d40fff\",\"dweb:/ipfs/QmboHMouqU19Rnbqrfo1gkfnuDBFcPiC9wsKgGtF2W1cNA\"]},\"src/libraries/Hashing.sol\":{\"keccak256\":\"0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12\",\"dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF\"]},\"src/libraries/PortalErrors.sol\":{\"keccak256\":\"0x57adcaa45a1ce9c5af04d0fe4ecbc86e6ff3f947f7957ab55bdade129adcf558\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf485f11085ad6d1ba1386fdb340f65eb1048187692ad3d9eb8816e290140c1\",\"dweb:/ipfs/Qmb423b45TLV8PdhFa8Hs72eom5D2C5q4gVcYGNzDh4EMU\"]},\"src/libraries/Predeploys.sol\":{\"keccak256\":\"0x7b48b32b75e9ba0cd7f83b3304c6c1676dd8de20a5d40e8846bf7018ae9aff02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7574fcc79c0d545b90071023aa81ee7880ab50b3057df598fa693bc4cf303663\",\"dweb:/ipfs/QmWLxHzgfaTJ7thfb7khXkTY5UtSBZ5VTUB4DaAXVw7DRe\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a\",\"dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq\"]},\"src/libraries/Storage.sol\":{\"keccak256\":\"0x7ce27a05552aa69afa6b2ab6684dfe99f27366cf8ef2046baeb1fb62fff0022f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a24f3ed56681720707a5ab0372fd67fcb1a4f6fb072c7140cda28bdb70f269\",\"dweb:/ipfs/QmW9uTpUULV4xmP7A7MoBDeDhVfQgmJG5qVUFGtXxWpWWK\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e\",\"dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc\"]},\"src/libraries/rlp/RLPReader.sol\":{\"keccak256\":\"0x99731a39bc10203719d448117b0e6ef47771890440d595d118084d7988d59afb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1dbeb75d0cc8de58350cc15df8867bf97d8492e0617b1c62733ace6155c6915a\",\"dweb:/ipfs/QmNiXzskPE72h93F8EXT8wAXKzEh2EERLbubdVMfwTQbtj\"]},\"src/libraries/rlp/RLPWriter.sol\":{\"keccak256\":\"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b\",\"dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV\"]},\"src/libraries/trie/MerkleTrie.sol\":{\"keccak256\":\"0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74\",\"dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE\"]},\"src/libraries/trie/SecureMerkleTrie.sol\":{\"keccak256\":\"0xeaff8315cfd21197bc6bc859c2decf5d4f4838c9c357c502cdf2b1eac863d288\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79dcdcaa560aea51d138da4f5dc553a1808b6de090b2dc1629f18375edbff681\",\"dweb:/ipfs/QmbE4pUPhf5fLKW4W6cEjhQs55gEDvHmbmoBqkW1yz3bnw\"]},\"src/universal/CrossDomainMessenger.sol\":{\"keccak256\":\"0x330ae1479e88fc8a8b5b27a84df935a092a47ad13e59d9b9ea4982ad31bbe7b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf5fb4e78a03dcad4b9a8e2d5ed135f8e989aa02090747386843383fa6b7d1\",\"dweb:/ipfs/QmTp66RoF6EaKeBrrZBuYAu3dsMfKo8de2XY9iHHnqfN3n\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]},\"src/vendor/AddressAliasHelper.sol\":{\"keccak256\":\"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88\",\"dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.15+commit.e14f2714" }, "language": "Solidity", "output": { "abi": [{ "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [{ "internalType": "bytes32", "name": "msgHash", "type": "bytes32", "indexed": true }], "type": "event", "name": "FailedRelayedMessage", "anonymous": false }, { "inputs": [{ "internalType": "uint8", "name": "version", "type": "uint8", "indexed": false }], "type": "event", "name": "Initialized", "anonymous": false }, { "inputs": [{ "internalType": "bytes32", "name": "msgHash", "type": "bytes32", "indexed": true }], "type": "event", "name": "RelayedMessage", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "target", "type": "address", "indexed": true }, { "internalType": "address", "name": "sender", "type": "address", "indexed": false }, { "internalType": "bytes", "name": "message", "type": "bytes", "indexed": false }, { "internalType": "uint256", "name": "messageNonce", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "gasLimit", "type": "uint256", "indexed": false }], "type": "event", "name": "SentMessage", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "sender", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "value", "type": "uint256", "indexed": false }], "type": "event", "name": "SentMessageExtension1", "anonymous": false }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "MESSAGE_VERSION", "outputs": [{ "internalType": "uint16", "name": "", "type": "uint16" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "MIN_GAS_CALLDATA_OVERHEAD", "outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR", "outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR", "outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "OTHER_MESSENGER", "outputs": [{ "internalType": "contract CrossDomainMessenger", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "PORTAL", "outputs": [{ "internalType": "contract OptimismPortal", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "RELAY_CALL_OVERHEAD", "outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "RELAY_CONSTANT_OVERHEAD", "outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "RELAY_GAS_CHECK_BUFFER", "outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "RELAY_RESERVED_GAS", "outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }] }, { "inputs": [{ "internalType": "bytes", "name": "_message", "type": "bytes" }, { "internalType": "uint32", "name": "_minGasLimit", "type": "uint32" }], "stateMutability": "pure", "type": "function", "name": "baseGas", "outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }] }, { "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], "stateMutability": "view", "type": "function", "name": "failedMessages", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [{ "internalType": "contract SuperchainConfig", "name": "_superchainConfig", "type": "address" }, { "internalType": "contract OptimismPortal", "name": "_portal", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "initialize" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "messageNonce", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "otherMessenger", "outputs": [{ "internalType": "contract CrossDomainMessenger", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "paused", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "portal", "outputs": [{ "internalType": "contract OptimismPortal", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "uint256", "name": "_nonce", "type": "uint256" }, { "internalType": "address", "name": "_sender", "type": "address" }, { "internalType": "address", "name": "_target", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" }, { "internalType": "uint256", "name": "_minGasLimit", "type": "uint256" }, { "internalType": "bytes", "name": "_message", "type": "bytes" }], "stateMutability": "payable", "type": "function", "name": "relayMessage" }, { "inputs": [{ "internalType": "address", "name": "_target", "type": "address" }, { "internalType": "bytes", "name": "_message", "type": "bytes" }, { "internalType": "uint32", "name": "_minGasLimit", "type": "uint32" }], "stateMutability": "payable", "type": "function", "name": "sendMessage" }, { "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], "stateMutability": "view", "type": "function", "name": "successfulMessages", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "superchainConfig", "outputs": [{ "internalType": "contract SuperchainConfig", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "version", "outputs": [{ "internalType": "string", "name": "", "type": "string" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "xDomainMessageSender", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }], "devdoc": { "kind": "dev", "methods": { "OTHER_MESSENGER()": { "custom:legacy": "", "returns": { "_0": "CrossDomainMessenger contract on the other chain." } }, "PORTAL()": { "custom:legacy": "", "returns": { "_0": "Contract of the OptimismPortal on this chain." } }, "baseGas(bytes,uint32)": { "params": { "_message": "Message to compute the amount of required gas for.", "_minGasLimit": "Minimum desired gas limit when message goes to target." }, "returns": { "_0": "Amount of gas required to guarantee message receipt." } }, "initialize(address,address)": { "params": { "_portal": "Contract of the OptimismPortal contract on this network.", "_superchainConfig": "Contract of the SuperchainConfig contract on this network." } }, "messageNonce()": { "returns": { "_0": "Nonce of the next message to be sent, with added message version." } }, "paused()": { "returns": { "_0": "Whether or not the contract is paused." } }, "relayMessage(uint256,address,address,uint256,uint256,bytes)": { "params": { "_message": "Message to send to the target.", "_minGasLimit": "Minimum amount of gas that the message can be executed with.", "_nonce": "Nonce of the message being relayed.", "_sender": "Address of the user who sent the message.", "_target": "Address that the message is targeted at.", "_value": "ETH value to send with the message." } }, "sendMessage(address,bytes,uint32)": { "params": { "_message": "Message to trigger the target address with.", "_minGasLimit": "Minimum gas limit that the message can be executed with.", "_target": "Target contract or wallet address." } }, "xDomainMessageSender()": { "returns": { "_0": "Address of the sender of the currently executing message on the other chain." } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": { "MESSAGE_VERSION()": { "notice": "Current message version identifier." }, "MIN_GAS_CALLDATA_OVERHEAD()": { "notice": "Extra gas added to base gas for each byte of calldata in a message." }, "MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR()": { "notice": "Denominator for dynamic overhead added to the base gas for a message." }, "MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR()": { "notice": "Numerator for dynamic overhead added to the base gas for a message." }, "OTHER_MESSENGER()": { "notice": "Retrieves the address of the paired CrossDomainMessenger contract on the other chain         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead." }, "PORTAL()": { "notice": "Getter function for the OptimismPortal contract on this chain.         Public getter is legacy and will be removed in the future. Use `portal()` instead." }, "RELAY_CALL_OVERHEAD()": { "notice": "Gas reserved for performing the external call in `relayMessage`." }, "RELAY_CONSTANT_OVERHEAD()": { "notice": "Constant overhead added to the base gas for a message." }, "RELAY_GAS_CHECK_BUFFER()": { "notice": "Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage`." }, "RELAY_RESERVED_GAS()": { "notice": "Gas reserved for finalizing the execution of `relayMessage` after the safe call." }, "baseGas(bytes,uint32)": { "notice": "Computes the amount of gas required to guarantee that a given message will be         received on the other chain without running out of gas. Guaranteeing that a message         will not run out of gas is important because this ensures that a message can always         be replayed on the other chain if it fails to execute completely." }, "constructor": { "notice": "Constructs the L1CrossDomainMessenger contract." }, "failedMessages(bytes32)": { "notice": "Mapping of message hashes to a boolean if and only if the message has failed to be         executed at least once. A message will not be present in this mapping if it         successfully executed on the first attempt." }, "initialize(address,address)": { "notice": "Initializes the contract." }, "messageNonce()": { "notice": "Retrieves the next message nonce. Message version will be added to the upper two         bytes of the message nonce. Message version allows us to treat messages as having         different structures." }, "otherMessenger()": { "notice": "CrossDomainMessenger contract on the other chain." }, "paused()": { "notice": "This function should return true if the contract is paused.         On L1 this function will check the SuperchainConfig for its paused status.         On L2 this function should be a no-op." }, "portal()": { "notice": "Contract of the OptimismPortal." }, "relayMessage(uint256,address,address,uint256,uint256,bytes)": { "notice": "Relays a message that was sent by the other CrossDomainMessenger contract. Can only         be executed via cross-chain call from the other messenger OR if the message was         already received once and is currently being replayed." }, "sendMessage(address,bytes,uint32)": { "notice": "Sends a message to some target address on the other chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function)." }, "successfulMessages(bytes32)": { "notice": "Mapping of message hashes to boolean receipt values. Note that a message will only         be present in this mapping if it has successfully been relayed on this chain, and         can therefore not be relayed again." }, "superchainConfig()": { "notice": "Contract of the SuperchainConfig." }, "version()": { "notice": "Semantic version." }, "xDomainMessageSender()": { "notice": "Retrieves the address of the contract or wallet that initiated the currently         executing message on the other chain. Will throw an error if there is no message         currently being executed. Allows the recipient of a call to see who triggered it." } }, "version": 1 } }, "settings": { "remappings": ["@lib-keccak/=lib/lib-keccak/contracts/lib/", "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@rari-capital/solmate/=lib/solmate/", "@solady-test/=lib/lib-keccak/lib/solady/test/", "@solady/=lib/solady/src/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/", "lib-keccak/=lib/lib-keccak/contracts/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "safe-contracts/=lib/safe-contracts/contracts/", "solady/=lib/solady/", "solmate/=lib/solmate/src/"], "optimizer": { "enabled": true, "runs": 999999 }, "metadata": { "bytecodeHash": "none" }, "compilationTarget": { "src/L1/L1CrossDomainMessenger.sol": "L1CrossDomainMessenger" }, "evmVersion": "london", "libraries": {} }, "sources": { "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol": { "keccak256": "0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888", "urls": ["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a", "dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"], "license": "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol": { "keccak256": "0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e", "urls": ["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497", "dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"], "license": "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol": { "keccak256": "0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3", "urls": ["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4", "dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"], "license": "MIT" }, "lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol": { "keccak256": "0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149", "urls": ["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c", "dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": { "keccak256": "0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66", "urls": ["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f", "dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Address.sol": { "keccak256": "0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10", "urls": ["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487", "dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": { "keccak256": "0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0", "urls": ["bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929", "dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC"], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": { "keccak256": "0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7", "urls": ["bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689", "dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy"], "license": "MIT" }, "lib/solmate/src/utils/FixedPointMathLib.sol": { "keccak256": "0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d", "urls": ["bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c", "dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8"], "license": "MIT" }, "src/L1/L1CrossDomainMessenger.sol": { "keccak256": "0x1a93450f3f9e2262b32e7831709b01d4491befb79a90cc24509b569103674e06", "urls": ["bzz-raw://2896f906f07fb6ceb7fea3cb31a10b8289db628142cb0612d9890d62bce265b1", "dweb:/ipfs/QmYGAMecafbcT4LRBbDCYFj6mPCa3u5hNGUq2tfjWU3s18"], "license": "MIT" }, "src/L1/L2OutputOracle.sol": { "keccak256": "0x342c5084f3c640c90530122bd78372c011d6162e698dd8c8daec9496fef01d42", "urls": ["bzz-raw://8700a3d486bd62cbb861ff80175b8040336940515791073af6a036db7c2df303", "dweb:/ipfs/QmSGKTH84rVHWgMg4d6GQZCmCJ16KuUuTsMwPMDdJxCsww"], "license": "MIT" }, "src/L1/OptimismPortal.sol": { "keccak256": "0xf46a1158e86edcbb157d0b06a32db37867c0bc9d2aeeed6a8110547c7537201a", "urls": ["bzz-raw://0aeb33d425db200953063e3576403b78c50e3a5e7b4f56ef4bead28919406ee2", "dweb:/ipfs/QmUFb1rEQnCFrGRZQPHgFFWJQ48SR7wodiSFLgQKu8Jx6k"], "license": "MIT" }, "src/L1/ResourceMetering.sol": { "keccak256": "0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408", "urls": ["bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409", "dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM"], "license": "MIT" }, "src/L1/SuperchainConfig.sol": { "keccak256": "0x5fab874f980fe3e52c3398ddd25b655c56af0c98c15588b2ad9ebf30671d859d", "urls": ["bzz-raw://4e0aa613d38eceb621f8569fc714f521bc1f2df3d029552186ab3cdf2ee5d53f", "dweb:/ipfs/QmZDzFxhTXLW79eohQbr1nghNh3oNC4CUfH7uMX8CsjVAB"], "license": "MIT" }, "src/L1/SystemConfig.sol": { "keccak256": "0xc3d6392cbc44e38ddc93b84b82b08ab8e813df771a48926db3f94edde8f2b64a", "urls": ["bzz-raw://d326d644dc59a57a71f4ff6eaa5c6d1464697c7df337b641fe82091b9050e6ce", "dweb:/ipfs/Qmd6tNzBmm8V4cpcMNyFWbWnKPNMRoysmmA62rZjGqpg7f"], "license": "MIT" }, "src/libraries/Arithmetic.sol": { "keccak256": "0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db", "urls": ["bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72", "dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq"], "license": "MIT" }, "src/libraries/Burn.sol": { "keccak256": "0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010", "urls": ["bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f", "dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb"], "license": "MIT" }, "src/libraries/Bytes.sol": { "keccak256": "0x827f47d123b0fdf3b08816d5b33831811704dbf4e554e53f2269354f6bba8859", "urls": ["bzz-raw://3137ac7204d30a245a8b0d67aa6da5286f1bd8c90379daab561f84963b6db782", "dweb:/ipfs/QmWRhisw3axJK833gUScs23ETh2MLFbVzzqzYVMKSDN3S9"], "license": "MIT" }, "src/libraries/Constants.sol": { "keccak256": "0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132", "urls": ["bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b", "dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp"], "license": "MIT" }, "src/libraries/Encoding.sol": { "keccak256": "0x1dafabcbd4877c7abe9698957b0a44b7e911cb8b11c1437a4ed897135669fa87", "urls": ["bzz-raw://6addfacefa26fdb44f56d73fa0172b97740de75629a962905ec2a20a28d40fff", "dweb:/ipfs/QmboHMouqU19Rnbqrfo1gkfnuDBFcPiC9wsKgGtF2W1cNA"], "license": "MIT" }, "src/libraries/Hashing.sol": { "keccak256": "0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8", "urls": ["bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12", "dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF"], "license": "MIT" }, "src/libraries/PortalErrors.sol": { "keccak256": "0x57adcaa45a1ce9c5af04d0fe4ecbc86e6ff3f947f7957ab55bdade129adcf558", "urls": ["bzz-raw://3cf485f11085ad6d1ba1386fdb340f65eb1048187692ad3d9eb8816e290140c1", "dweb:/ipfs/Qmb423b45TLV8PdhFa8Hs72eom5D2C5q4gVcYGNzDh4EMU"], "license": "MIT" }, "src/libraries/Predeploys.sol": { "keccak256": "0x7b48b32b75e9ba0cd7f83b3304c6c1676dd8de20a5d40e8846bf7018ae9aff02", "urls": ["bzz-raw://7574fcc79c0d545b90071023aa81ee7880ab50b3057df598fa693bc4cf303663", "dweb:/ipfs/QmWLxHzgfaTJ7thfb7khXkTY5UtSBZ5VTUB4DaAXVw7DRe"], "license": "MIT" }, "src/libraries/SafeCall.sol": { "keccak256": "0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f", "urls": ["bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a", "dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq"], "license": "MIT" }, "src/libraries/Storage.sol": { "keccak256": "0x7ce27a05552aa69afa6b2ab6684dfe99f27366cf8ef2046baeb1fb62fff0022f", "urls": ["bzz-raw://a6a24f3ed56681720707a5ab0372fd67fcb1a4f6fb072c7140cda28bdb70f269", "dweb:/ipfs/QmW9uTpUULV4xmP7A7MoBDeDhVfQgmJG5qVUFGtXxWpWWK"], "license": "MIT" }, "src/libraries/Types.sol": { "keccak256": "0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4", "urls": ["bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e", "dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc"], "license": "MIT" }, "src/libraries/rlp/RLPReader.sol": { "keccak256": "0x99731a39bc10203719d448117b0e6ef47771890440d595d118084d7988d59afb", "urls": ["bzz-raw://1dbeb75d0cc8de58350cc15df8867bf97d8492e0617b1c62733ace6155c6915a", "dweb:/ipfs/QmNiXzskPE72h93F8EXT8wAXKzEh2EERLbubdVMfwTQbtj"], "license": "MIT" }, "src/libraries/rlp/RLPWriter.sol": { "keccak256": "0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6", "urls": ["bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b", "dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV"], "license": "MIT" }, "src/libraries/trie/MerkleTrie.sol": { "keccak256": "0xf8ba770ee6666e73ae43184c700e9c704b2c4ace71f9e3c2227ddc11a8148b4c", "urls": ["bzz-raw://4702ccee1fe44aea3ee01d59e6152eb755da083f786f00947fec4437c064fe74", "dweb:/ipfs/QmQjFj5J7hrEM1dxJjFszzW2Cs7g7eMhYNBXonF2DXBstE"], "license": "MIT" }, "src/libraries/trie/SecureMerkleTrie.sol": { "keccak256": "0xeaff8315cfd21197bc6bc859c2decf5d4f4838c9c357c502cdf2b1eac863d288", "urls": ["bzz-raw://79dcdcaa560aea51d138da4f5dc553a1808b6de090b2dc1629f18375edbff681", "dweb:/ipfs/QmbE4pUPhf5fLKW4W6cEjhQs55gEDvHmbmoBqkW1yz3bnw"], "license": "MIT" }, "src/universal/CrossDomainMessenger.sol": { "keccak256": "0x330ae1479e88fc8a8b5b27a84df935a092a47ad13e59d9b9ea4982ad31bbe7b0", "urls": ["bzz-raw://66bf5fb4e78a03dcad4b9a8e2d5ed135f8e989aa02090747386843383fa6b7d1", "dweb:/ipfs/QmTp66RoF6EaKeBrrZBuYAu3dsMfKo8de2XY9iHHnqfN3n"], "license": "MIT" }, "src/universal/ISemver.sol": { "keccak256": "0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44", "urls": ["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a", "dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"], "license": "MIT" }, "src/vendor/AddressAliasHelper.sol": { "keccak256": "0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237", "urls": ["bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88", "dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR"], "license": "Apache-2.0" } }, "version": 1 }, "storageLayout": { "storage": [{ "astId": 108324, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "spacer_0_0_20", "offset": 0, "slot": "0", "type": "t_address" }, { "astId": 46970, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "_initialized", "offset": 20, "slot": "0", "type": "t_uint8" }, { "astId": 46973, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "_initializing", "offset": 21, "slot": "0", "type": "t_bool" }, { "astId": 108331, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "spacer_1_0_1600", "offset": 0, "slot": "1", "type": "t_array(t_uint256)50_storage" }, { "astId": 108334, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "spacer_51_0_20", "offset": 0, "slot": "51", "type": "t_address" }, { "astId": 108339, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "spacer_52_0_1568", "offset": 0, "slot": "52", "type": "t_array(t_uint256)49_storage" }, { "astId": 108342, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "spacer_101_0_1", "offset": 0, "slot": "101", "type": "t_bool" }, { "astId": 108347, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "spacer_102_0_1568", "offset": 0, "slot": "102", "type": "t_array(t_uint256)49_storage" }, { "astId": 108350, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "spacer_151_0_32", "offset": 0, "slot": "151", "type": "t_uint256" }, { "astId": 108355, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "spacer_152_0_1568", "offset": 0, "slot": "152", "type": "t_array(t_uint256)49_storage" }, { "astId": 108360, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "spacer_201_0_32", "offset": 0, "slot": "201", "type": "t_mapping(t_bytes32,t_bool)" }, { "astId": 108365, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "spacer_202_0_32", "offset": 0, "slot": "202", "type": "t_mapping(t_bytes32,t_bool)" }, { "astId": 108410, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "successfulMessages", "offset": 0, "slot": "203", "type": "t_mapping(t_bytes32,t_bool)" }, { "astId": 108413, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "xDomainMsgSender", "offset": 0, "slot": "204", "type": "t_address" }, { "astId": 108416, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "msgNonce", "offset": 0, "slot": "205", "type": "t_uint240" }, { "astId": 108421, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "failedMessages", "offset": 0, "slot": "206", "type": "t_mapping(t_bytes32,t_bool)" }, { "astId": 108425, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "otherMessenger", "offset": 0, "slot": "207", "type": "t_contract(CrossDomainMessenger)108888" }, { "astId": 108430, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "__gap", "offset": 0, "slot": "208", "type": "t_array(t_uint256)43_storage" }, { "astId": 84986, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "superchainConfig", "offset": 0, "slot": "251", "type": "t_contract(SuperchainConfig)88793" }, { "astId": 84990, "contract": "src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger", "label": "portal", "offset": 0, "slot": "252", "type": "t_contract(OptimismPortal)87104" }], "types": { "t_address": { "encoding": "inplace", "label": "address", "numberOfBytes": "20" }, "t_array(t_uint256)43_storage": { "encoding": "inplace", "label": "uint256[43]", "numberOfBytes": "1376", "base": "t_uint256" }, "t_array(t_uint256)49_storage": { "encoding": "inplace", "label": "uint256[49]", "numberOfBytes": "1568", "base": "t_uint256" }, "t_array(t_uint256)50_storage": { "encoding": "inplace", "label": "uint256[50]", "numberOfBytes": "1600", "base": "t_uint256" }, "t_bool": { "encoding": "inplace", "label": "bool", "numberOfBytes": "1" }, "t_bytes32": { "encoding": "inplace", "label": "bytes32", "numberOfBytes": "32" }, "t_contract(CrossDomainMessenger)108888": { "encoding": "inplace", "label": "contract CrossDomainMessenger", "numberOfBytes": "20" }, "t_contract(OptimismPortal)87104": { "encoding": "inplace", "label": "contract OptimismPortal", "numberOfBytes": "20" }, "t_contract(SuperchainConfig)88793": { "encoding": "inplace", "label": "contract SuperchainConfig", "numberOfBytes": "20" }, "t_mapping(t_bytes32,t_bool)": { "encoding": "mapping", "key": "t_bytes32", "label": "mapping(bytes32 => bool)", "numberOfBytes": "32", "value": "t_bool" }, "t_uint240": { "encoding": "inplace", "label": "uint240", "numberOfBytes": "30" }, "t_uint256": { "encoding": "inplace", "label": "uint256", "numberOfBytes": "32" }, "t_uint8": { "encoding": "inplace", "label": "uint8", "numberOfBytes": "1" } } }, "userdoc": { "version": 1, "kind": "user", "methods": { "MESSAGE_VERSION()": { "notice": "Current message version identifier." }, "MIN_GAS_CALLDATA_OVERHEAD()": { "notice": "Extra gas added to base gas for each byte of calldata in a message." }, "MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR()": { "notice": "Denominator for dynamic overhead added to the base gas for a message." }, "MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR()": { "notice": "Numerator for dynamic overhead added to the base gas for a message." }, "OTHER_MESSENGER()": { "notice": "Retrieves the address of the paired CrossDomainMessenger contract on the other chain         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead." }, "PORTAL()": { "notice": "Getter function for the OptimismPortal contract on this chain.         Public getter is legacy and will be removed in the future. Use `portal()` instead." }, "RELAY_CALL_OVERHEAD()": { "notice": "Gas reserved for performing the external call in `relayMessage`." }, "RELAY_CONSTANT_OVERHEAD()": { "notice": "Constant overhead added to the base gas for a message." }, "RELAY_GAS_CHECK_BUFFER()": { "notice": "Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage`." }, "RELAY_RESERVED_GAS()": { "notice": "Gas reserved for finalizing the execution of `relayMessage` after the safe call." }, "baseGas(bytes,uint32)": { "notice": "Computes the amount of gas required to guarantee that a given message will be         received on the other chain without running out of gas. Guaranteeing that a message         will not run out of gas is important because this ensures that a message can always         be replayed on the other chain if it fails to execute completely." }, "constructor": { "notice": "Constructs the L1CrossDomainMessenger contract." }, "failedMessages(bytes32)": { "notice": "Mapping of message hashes to a boolean if and only if the message has failed to be         executed at least once. A message will not be present in this mapping if it         successfully executed on the first attempt." }, "initialize(address,address)": { "notice": "Initializes the contract." }, "messageNonce()": { "notice": "Retrieves the next message nonce. Message version will be added to the upper two         bytes of the message nonce. Message version allows us to treat messages as having         different structures." }, "otherMessenger()": { "notice": "CrossDomainMessenger contract on the other chain." }, "paused()": { "notice": "This function should return true if the contract is paused.         On L1 this function will check the SuperchainConfig for its paused status.         On L2 this function should be a no-op." }, "portal()": { "notice": "Contract of the OptimismPortal." }, "relayMessage(uint256,address,address,uint256,uint256,bytes)": { "notice": "Relays a message that was sent by the other CrossDomainMessenger contract. Can only         be executed via cross-chain call from the other messenger OR if the message was         already received once and is currently being replayed." }, "sendMessage(address,bytes,uint32)": { "notice": "Sends a message to some target address on the other chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function)." }, "successfulMessages(bytes32)": { "notice": "Mapping of message hashes to boolean receipt values. Note that a message will only         be present in this mapping if it has successfully been relayed on this chain, and         can therefore not be relayed again." }, "superchainConfig()": { "notice": "Contract of the SuperchainConfig." }, "version()": { "notice": "Semantic version." }, "xDomainMessageSender()": { "notice": "Retrieves the address of the contract or wallet that initiated the currently         executing message on the other chain. Will throw an error if there is no message         currently being executed. Allows the recipient of a call to see who triggered it." } }, "events": { "FailedRelayedMessage(bytes32)": { "notice": "Emitted whenever a message fails to be relayed on this chain." }, "RelayedMessage(bytes32)": { "notice": "Emitted whenever a message is successfully relayed on this chain." }, "SentMessage(address,address,bytes,uint256,uint256)": { "notice": "Emitted whenever a message is sent to the other chain." }, "SentMessageExtension1(address,uint256)": { "notice": "Additional event data to emit, required as of Bedrock. Cannot be merged with the         SentMessage event without breaking the ABI of this contract, this is good enough." } }, "notice": "The L1CrossDomainMessenger is a message passing interface between L1 and L2 responsible         for sending and receiving data on the L1 side. Users are encouraged to use this         interface instead of interacting with lower-level contracts directly." }, "devdoc": { "version": 1, "kind": "dev", "methods": { "OTHER_MESSENGER()": { "returns": { "_0": "CrossDomainMessenger contract on the other chain." } }, "PORTAL()": { "returns": { "_0": "Contract of the OptimismPortal on this chain." } }, "baseGas(bytes,uint32)": { "params": { "_message": "Message to compute the amount of required gas for.", "_minGasLimit": "Minimum desired gas limit when message goes to target." }, "returns": { "_0": "Amount of gas required to guarantee message receipt." } }, "initialize(address,address)": { "params": { "_portal": "Contract of the OptimismPortal contract on this network.", "_superchainConfig": "Contract of the SuperchainConfig contract on this network." } }, "messageNonce()": { "returns": { "_0": "Nonce of the next message to be sent, with added message version." } }, "paused()": { "returns": { "_0": "Whether or not the contract is paused." } }, "relayMessage(uint256,address,address,uint256,uint256,bytes)": { "params": { "_message": "Message to send to the target.", "_minGasLimit": "Minimum amount of gas that the message can be executed with.", "_nonce": "Nonce of the message being relayed.", "_sender": "Address of the user who sent the message.", "_target": "Address that the message is targeted at.", "_value": "ETH value to send with the message." } }, "sendMessage(address,bytes,uint32)": { "params": { "_message": "Message to trigger the target address with.", "_minGasLimit": "Minimum gas limit that the message can be executed with.", "_target": "Target contract or wallet address." } }, "xDomainMessageSender()": { "returns": { "_0": "Address of the sender of the currently executing message on the other chain." } } } }, "ast": { "absolutePath": "src/L1/L1CrossDomainMessenger.sol", "id": 85146, "exportedSymbols": { "CrossDomainMessenger": [108888], "ISemver": [109417], "L1CrossDomainMessenger": [85145], "OptimismPortal": [87104], "Predeploys": [104124], "SuperchainConfig": [88793] }, "nodeType": "SourceUnit", "src": "32:3102:130", "nodes": [{ "id": 84967, "nodeType": "PragmaDirective", "src": "32:23:130", "nodes": [], "literals": ["solidity", "0.8", ".15"] }, { "id": 84969, "nodeType": "ImportDirective", "src": "57:58:130", "nodes": [], "absolutePath": "src/libraries/Predeploys.sol", "file": "src/libraries/Predeploys.sol", "nameLocation": "-1:-1:-1", "scope": 85146, "sourceUnit": 104125, "symbolAliases": [{ "foreign": { "id": 84968, "name": "Predeploys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104124, "src": "66:10:130", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 84971, "nodeType": "ImportDirective", "src": "116:59:130", "nodes": [], "absolutePath": "src/L1/OptimismPortal.sol", "file": "src/L1/OptimismPortal.sol", "nameLocation": "-1:-1:-1", "scope": 85146, "sourceUnit": 87105, "symbolAliases": [{ "foreign": { "id": 84970, "name": "OptimismPortal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 87104, "src": "125:14:130", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 84973, "nodeType": "ImportDirective", "src": "176:78:130", "nodes": [], "absolutePath": "src/universal/CrossDomainMessenger.sol", "file": "src/universal/CrossDomainMessenger.sol", "nameLocation": "-1:-1:-1", "scope": 85146, "sourceUnit": 108889, "symbolAliases": [{ "foreign": { "id": 84972, "name": "CrossDomainMessenger", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108888, "src": "185:20:130", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 84975, "nodeType": "ImportDirective", "src": "255:52:130", "nodes": [], "absolutePath": "src/universal/ISemver.sol", "file": "src/universal/ISemver.sol", "nameLocation": "-1:-1:-1", "scope": 85146, "sourceUnit": 109418, "symbolAliases": [{ "foreign": { "id": 84974, "name": "ISemver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109417, "src": "264:7:130", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 84977, "nodeType": "ImportDirective", "src": "308:63:130", "nodes": [], "absolutePath": "src/L1/SuperchainConfig.sol", "file": "src/L1/SuperchainConfig.sol", "nameLocation": "-1:-1:-1", "scope": 85146, "sourceUnit": 88794, "symbolAliases": [{ "foreign": { "id": 84976, "name": "SuperchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 88793, "src": "317:16:130", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 85145, "nodeType": "ContractDefinition", "src": "701:2432:130", "nodes": [{ "id": 84986, "nodeType": "VariableDeclaration", "src": "822:40:130", "nodes": [], "constant": false, "documentation": { "id": 84983, "nodeType": "StructuredDocumentation", "src": "772:45:130", "text": "@notice Contract of the SuperchainConfig." }, "functionSelector": "35e80ab3", "mutability": "mutable", "name": "superchainConfig", "nameLocation": "846:16:130", "scope": 85145, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" }, "typeName": { "id": 84985, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 84984, "name": "SuperchainConfig", "nodeType": "IdentifierPath", "referencedDeclaration": 88793, "src": "822:16:130" }, "referencedDeclaration": 88793, "src": "822:16:130", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "visibility": "public" }, { "id": 84990, "nodeType": "VariableDeclaration", "src": "950:28:130", "nodes": [], "constant": false, "documentation": { "id": 84987, "nodeType": "StructuredDocumentation", "src": "869:76:130", "text": "@notice Contract of the OptimismPortal.\n @custom:network-specific" }, "functionSelector": "6425666b", "mutability": "mutable", "name": "portal", "nameLocation": "972:6:130", "scope": 85145, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" }, "typeName": { "id": 84989, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 84988, "name": "OptimismPortal", "nodeType": "IdentifierPath", "referencedDeclaration": 87104, "src": "950:14:130" }, "referencedDeclaration": 87104, "src": "950:14:130", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }, "visibility": "public" }, { "id": 84994, "nodeType": "VariableDeclaration", "src": "1048:40:130", "nodes": [], "baseFunctions": [109416], "constant": true, "documentation": { "id": 84991, "nodeType": "StructuredDocumentation", "src": "985:58:130", "text": "@notice Semantic version.\n @custom:semver 2.3.0" }, "functionSelector": "54fd4d50", "mutability": "constant", "name": "version", "nameLocation": "1071:7:130", "scope": 85145, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 84992, "name": "string", "nodeType": "ElementaryTypeName", "src": "1048:6:130", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "hexValue": "322e332e30", "id": 84993, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "1081:7:130", "typeDescriptions": { "typeIdentifier": "t_stringliteral_22fd31a466cd79bdd552fae6268088a4b5436c44416a9eb8cc3035d8d9e397ab", "typeString": "literal_string \"2.3.0\"" }, "value": "2.3.0" }, "visibility": "public" }, { "id": 85019, "nodeType": "FunctionDefinition", "src": "1159:163:130", "nodes": [], "body": { "id": 85018, "nodeType": "Block", "src": "1196:126:130", "nodes": [], "statements": [{ "expression": { "arguments": [{ "arguments": [{ "arguments": [{ "hexValue": "30", "id": 85004, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1263:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }], "id": 85003, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1255:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85002, "name": "address", "nodeType": "ElementaryTypeName", "src": "1255:7:130", "typeDescriptions": {} } }, "id": 85005, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1255:10:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 85001, "name": "SuperchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 88793, "src": "1238:16:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SuperchainConfig_$88793_$", "typeString": "type(contract SuperchainConfig)" } }, "id": 85006, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1238:28:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, { "arguments": [{ "arguments": [{ "arguments": [{ "hexValue": "30", "id": 85012, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1308:1:130", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }], "id": 85011, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1300:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85010, "name": "address", "nodeType": "ElementaryTypeName", "src": "1300:7:130", "typeDescriptions": {} } }, "id": 85013, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1300:10:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 85009, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1292:8:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_payable_$", "typeString": "type(address payable)" }, "typeName": { "id": 85008, "name": "address", "nodeType": "ElementaryTypeName", "src": "1292:8:130", "stateMutability": "payable", "typeDescriptions": {} } }, "id": 85014, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1292:19:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address_payable", "typeString": "address payable" }], "id": 85007, "name": "OptimismPortal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 87104, "src": "1277:14:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OptimismPortal_$87104_$", "typeString": "type(contract OptimismPortal)" } }, "id": 85015, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1277:35:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" }, { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" }], "id": 85000, "name": "initialize", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85047, "src": "1206:10:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_SuperchainConfig_$88793_$_t_contract$_OptimismPortal_$87104_$returns$__$", "typeString": "function (contract SuperchainConfig,contract OptimismPortal)" } }, "id": 85016, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": ["_superchainConfig", "_portal"], "nodeType": "FunctionCall", "src": "1206:109:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85017, "nodeType": "ExpressionStatement", "src": "1206:109:130" }] }, "documentation": { "id": 84995, "nodeType": "StructuredDocumentation", "src": "1095:59:130", "text": "@notice Constructs the L1CrossDomainMessenger contract." }, "implemented": true, "kind": "constructor", "modifiers": [{ "arguments": [], "id": 84998, "kind": "baseConstructorSpecifier", "modifierName": { "id": 84997, "name": "CrossDomainMessenger", "nodeType": "IdentifierPath", "referencedDeclaration": 108888, "src": "1173:20:130" }, "nodeType": "ModifierInvocation", "src": "1173:22:130" }], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 84996, "nodeType": "ParameterList", "parameters": [], "src": "1170:2:130" }, "returnParameters": { "id": 84999, "nodeType": "ParameterList", "parameters": [], "src": "1196:0:130" }, "scope": 85145, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 85047, "nodeType": "FunctionDefinition", "src": "1542:296:130", "nodes": [], "body": { "id": 85046, "nodeType": "Block", "src": "1641:197:130", "nodes": [], "statements": [{ "expression": { "id": 85033, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 85031, "name": "superchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 84986, "src": "1651:16:130", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 85032, "name": "_superchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85023, "src": "1670:17:130", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "src": "1651:36:130", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "id": 85034, "nodeType": "ExpressionStatement", "src": "1651:36:130" }, { "expression": { "id": 85037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 85035, "name": "portal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 84990, "src": "1697:6:130", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 85036, "name": "_portal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85026, "src": "1706:7:130", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }, "src": "1697:16:130", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }, "id": 85038, "nodeType": "ExpressionStatement", "src": "1697:16:130" }, { "expression": { "arguments": [{ "arguments": [{ "expression": { "id": 85041, "name": "Predeploys", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104124, "src": "1791:10:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Predeploys_$104124_$", "typeString": "type(library Predeploys)" } }, "id": 85042, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "L2_CROSS_DOMAIN_MESSENGER", "nodeType": "MemberAccess", "referencedDeclaration": 104004, "src": "1791:36:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 85040, "name": "CrossDomainMessenger", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108888, "src": "1770:20:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_CrossDomainMessenger_$108888_$", "typeString": "type(contract CrossDomainMessenger)" } }, "id": 85043, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1770:58:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_CrossDomainMessenger_$108888", "typeString": "contract CrossDomainMessenger" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_CrossDomainMessenger_$108888", "typeString": "contract CrossDomainMessenger" }], "id": 85039, "name": "__CrossDomainMessenger_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108852, "src": "1723:27:130", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_CrossDomainMessenger_$108888_$returns$__$", "typeString": "function (contract CrossDomainMessenger)" } }, "id": 85044, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": ["_otherMessenger"], "nodeType": "FunctionCall", "src": "1723:108:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85045, "nodeType": "ExpressionStatement", "src": "1723:108:130" }] }, "documentation": { "id": 85020, "nodeType": "StructuredDocumentation", "src": "1328:209:130", "text": "@notice Initializes the contract.\n @param _superchainConfig Contract of the SuperchainConfig contract on this network.\n @param _portal Contract of the OptimismPortal contract on this network." }, "functionSelector": "485cc955", "implemented": true, "kind": "function", "modifiers": [{ "id": 85029, "kind": "modifierInvocation", "modifierName": { "id": 85028, "name": "initializer", "nodeType": "IdentifierPath", "referencedDeclaration": 47034, "src": "1629:11:130" }, "nodeType": "ModifierInvocation", "src": "1629:11:130" }], "name": "initialize", "nameLocation": "1551:10:130", "parameters": { "id": 85027, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85023, "mutability": "mutable", "name": "_superchainConfig", "nameLocation": "1579:17:130", "nodeType": "VariableDeclaration", "scope": 85047, "src": "1562:34:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" }, "typeName": { "id": 85022, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 85021, "name": "SuperchainConfig", "nodeType": "IdentifierPath", "referencedDeclaration": 88793, "src": "1562:16:130" }, "referencedDeclaration": 88793, "src": "1562:16:130", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "visibility": "internal" }, { "constant": false, "id": 85026, "mutability": "mutable", "name": "_portal", "nameLocation": "1613:7:130", "nodeType": "VariableDeclaration", "scope": 85047, "src": "1598:22:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" }, "typeName": { "id": 85025, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 85024, "name": "OptimismPortal", "nodeType": "IdentifierPath", "referencedDeclaration": 87104, "src": "1598:14:130" }, "referencedDeclaration": 87104, "src": "1598:14:130", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }, "visibility": "internal" }], "src": "1561:60:130" }, "returnParameters": { "id": 85030, "nodeType": "ParameterList", "parameters": [], "src": "1641:0:130" }, "scope": 85145, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 85057, "nodeType": "FunctionDefinition", "src": "2107:87:130", "nodes": [], "body": { "id": 85056, "nodeType": "Block", "src": "2164:30:130", "nodes": [], "statements": [{ "expression": { "id": 85054, "name": "portal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 84990, "src": "2181:6:130", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }, "functionReturnParameters": 85053, "id": 85055, "nodeType": "Return", "src": "2174:13:130" }] }, "documentation": { "id": 85048, "nodeType": "StructuredDocumentation", "src": "1844:258:130", "text": "@notice Getter function for the OptimismPortal contract on this chain.\n         Public getter is legacy and will be removed in the future. Use `portal()` instead.\n @return Contract of the OptimismPortal on this chain.\n @custom:legacy" }, "functionSelector": "0ff754ea", "implemented": true, "kind": "function", "modifiers": [], "name": "PORTAL", "nameLocation": "2116:6:130", "parameters": { "id": 85049, "nodeType": "ParameterList", "parameters": [], "src": "2122:2:130" }, "returnParameters": { "id": 85053, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85052, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 85057, "src": "2148:14:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" }, "typeName": { "id": 85051, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 85050, "name": "OptimismPortal", "nodeType": "IdentifierPath", "referencedDeclaration": 87104, "src": "2148:14:130" }, "referencedDeclaration": 87104, "src": "2148:14:130", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }, "visibility": "internal" }], "src": "2147:16:130" }, "scope": 85145, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 85083, "nodeType": "FunctionDefinition", "src": "2241:320:130", "nodes": [], "body": { "id": 85082, "nodeType": "Block", "src": "2348:213:130", "nodes": [], "statements": [{ "expression": { "arguments": [{ "id": 85075, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85060, "src": "2420:3:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 85076, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85064, "src": "2445:6:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 85077, "name": "_gasLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85062, "src": "2476:9:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { "hexValue": "66616c7365", "id": 85078, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2512:5:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, { "id": 85079, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85066, "src": "2538:5:130", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint64", "typeString": "uint64" }, { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint64", "typeString": "uint64" }, { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }], "expression": { "id": 85070, "name": "portal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 84990, "src": "2358:6:130", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }, "id": 85072, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "depositTransaction", "nodeType": "MemberAccess", "referencedDeclaration": 87068, "src": "2358:25:130", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint64_$_t_bool_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,uint256,uint64,bool,bytes memory) payable external" } }, "id": 85074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [{ "id": 85073, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85064, "src": "2392:6:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "src": "2358:42:130", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint64_$_t_bool_$_t_bytes_memory_ptr_$returns$__$value", "typeString": "function (address,uint256,uint64,bool,bytes memory) payable external" } }, "id": 85080, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": ["_to", "_value", "_gasLimit", "_isCreation", "_data"], "nodeType": "FunctionCall", "src": "2358:196:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 85081, "nodeType": "ExpressionStatement", "src": "2358:196:130" }] }, "baseFunctions": [108864], "documentation": { "id": 85058, "nodeType": "StructuredDocumentation", "src": "2200:36:130", "text": "@inheritdoc CrossDomainMessenger" }, "implemented": true, "kind": "function", "modifiers": [], "name": "_sendMessage", "nameLocation": "2250:12:130", "overrides": { "id": 85068, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2339:8:130" }, "parameters": { "id": 85067, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85060, "mutability": "mutable", "name": "_to", "nameLocation": "2271:3:130", "nodeType": "VariableDeclaration", "scope": 85083, "src": "2263:11:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 85059, "name": "address", "nodeType": "ElementaryTypeName", "src": "2263:7:130", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 85062, "mutability": "mutable", "name": "_gasLimit", "nameLocation": "2283:9:130", "nodeType": "VariableDeclaration", "scope": 85083, "src": "2276:16:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 85061, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "2276:6:130", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "visibility": "internal" }, { "constant": false, "id": 85064, "mutability": "mutable", "name": "_value", "nameLocation": "2302:6:130", "nodeType": "VariableDeclaration", "scope": 85083, "src": "2294:14:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 85063, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2294:7:130", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 85066, "mutability": "mutable", "name": "_data", "nameLocation": "2323:5:130", "nodeType": "VariableDeclaration", "scope": 85083, "src": "2310:18:130", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 85065, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2310:5:130", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "src": "2262:67:130" }, "returnParameters": { "id": 85069, "nodeType": "ParameterList", "parameters": [], "src": "2348:0:130" }, "scope": 85145, "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "id": 85108, "nodeType": "FunctionDefinition", "src": "2608:168:130", "nodes": [], "body": { "id": 85107, "nodeType": "Block", "src": "2675:101:130", "nodes": [], "statements": [{ "expression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 85105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 85096, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 85090, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2692:3:130", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 85091, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "2692:10:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [{ "id": 85094, "name": "portal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 84990, "src": "2714:6:130", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" }], "id": 85093, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2706:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85092, "name": "address", "nodeType": "ElementaryTypeName", "src": "2706:7:130", "typeDescriptions": {} } }, "id": 85095, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2706:15:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2692:29:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 85104, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 85097, "name": "portal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 84990, "src": "2725:6:130", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }, "id": 85098, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "l2Sender", "nodeType": "MemberAccess", "referencedDeclaration": 86489, "src": "2725:15:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 85099, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2725:17:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [{ "id": 85102, "name": "otherMessenger", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 108425, "src": "2754:14:130", "typeDescriptions": { "typeIdentifier": "t_contract$_CrossDomainMessenger_$108888", "typeString": "contract CrossDomainMessenger" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_CrossDomainMessenger_$108888", "typeString": "contract CrossDomainMessenger" }], "id": 85101, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2746:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85100, "name": "address", "nodeType": "ElementaryTypeName", "src": "2746:7:130", "typeDescriptions": {} } }, "id": 85103, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2746:23:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2725:44:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2692:77:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 85089, "id": 85106, "nodeType": "Return", "src": "2685:84:130" }] }, "baseFunctions": [108870], "documentation": { "id": 85084, "nodeType": "StructuredDocumentation", "src": "2567:36:130", "text": "@inheritdoc CrossDomainMessenger" }, "implemented": true, "kind": "function", "modifiers": [], "name": "_isOtherMessenger", "nameLocation": "2617:17:130", "overrides": { "id": 85086, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2651:8:130" }, "parameters": { "id": 85085, "nodeType": "ParameterList", "parameters": [], "src": "2634:2:130" }, "returnParameters": { "id": 85089, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85088, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 85108, "src": "2669:4:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 85087, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2669:4:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "src": "2668:6:130" }, "scope": 85145, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { "id": 85132, "nodeType": "FunctionDefinition", "src": "2823:158:130", "nodes": [], "body": { "id": 85131, "nodeType": "Block", "src": "2903:78:130", "nodes": [], "statements": [{ "expression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 85129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 85122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 85117, "name": "_target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85111, "src": "2920:7:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [{ "id": 85120, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2939:4:130", "typeDescriptions": { "typeIdentifier": "t_contract$_L1CrossDomainMessenger_$85145", "typeString": "contract L1CrossDomainMessenger" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_L1CrossDomainMessenger_$85145", "typeString": "contract L1CrossDomainMessenger" }], "id": 85119, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2931:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85118, "name": "address", "nodeType": "ElementaryTypeName", "src": "2931:7:130", "typeDescriptions": {} } }, "id": 85121, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2931:13:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2920:24:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 85128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 85123, "name": "_target", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 85111, "src": "2948:7:130", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [{ "id": 85126, "name": "portal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 84990, "src": "2967:6:130", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" }], "id": 85125, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2959:7:130", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 85124, "name": "address", "nodeType": "ElementaryTypeName", "src": "2959:7:130", "typeDescriptions": {} } }, "id": 85127, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2959:15:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2948:26:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "2920:54:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 85116, "id": 85130, "nodeType": "Return", "src": "2913:61:130" }] }, "baseFunctions": [108878], "documentation": { "id": 85109, "nodeType": "StructuredDocumentation", "src": "2782:36:130", "text": "@inheritdoc CrossDomainMessenger" }, "implemented": true, "kind": "function", "modifiers": [], "name": "_isUnsafeTarget", "nameLocation": "2832:15:130", "overrides": { "id": 85113, "nodeType": "OverrideSpecifier", "overrides": [], "src": "2879:8:130" }, "parameters": { "id": 85112, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85111, "mutability": "mutable", "name": "_target", "nameLocation": "2856:7:130", "nodeType": "VariableDeclaration", "scope": 85132, "src": "2848:15:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 85110, "name": "address", "nodeType": "ElementaryTypeName", "src": "2848:7:130", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "2847:17:130" }, "returnParameters": { "id": 85116, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85115, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 85132, "src": "2897:4:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 85114, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2897:4:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "src": "2896:6:130" }, "scope": 85145, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { "id": 85144, "nodeType": "FunctionDefinition", "src": "3028:103:130", "nodes": [], "body": { "id": 85143, "nodeType": "Block", "src": "3082:49:130", "nodes": [], "statements": [{ "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 85139, "name": "superchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 84986, "src": "3099:16:130", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "id": 85140, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "paused", "nodeType": "MemberAccess", "referencedDeclaration": 88707, "src": "3099:23:130", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, "id": 85141, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3099:25:130", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 85138, "id": 85142, "nodeType": "Return", "src": "3092:32:130" }] }, "baseFunctions": [108887], "documentation": { "id": 85133, "nodeType": "StructuredDocumentation", "src": "2987:36:130", "text": "@inheritdoc CrossDomainMessenger" }, "functionSelector": "5c975abb", "implemented": true, "kind": "function", "modifiers": [], "name": "paused", "nameLocation": "3037:6:130", "overrides": { "id": 85135, "nodeType": "OverrideSpecifier", "overrides": [], "src": "3058:8:130" }, "parameters": { "id": 85134, "nodeType": "ParameterList", "parameters": [], "src": "3043:2:130" }, "returnParameters": { "id": 85138, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 85137, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 85144, "src": "3076:4:130", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 85136, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3076:4:130", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "src": "3075:6:130" }, "scope": 85145, "stateMutability": "view", "virtual": false, "visibility": "public" }], "abstract": false, "baseContracts": [{ "baseName": { "id": 84979, "name": "CrossDomainMessenger", "nodeType": "IdentifierPath", "referencedDeclaration": 108888, "src": "736:20:130" }, "id": 84980, "nodeType": "InheritanceSpecifier", "src": "736:20:130" }, { "baseName": { "id": 84981, "name": "ISemver", "nodeType": "IdentifierPath", "referencedDeclaration": 109417, "src": "758:7:130" }, "id": 84982, "nodeType": "InheritanceSpecifier", "src": "758:7:130" }], "canonicalName": "L1CrossDomainMessenger", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 84978, "nodeType": "StructuredDocumentation", "src": "373:328:130", "text": "@custom:proxied\n @title L1CrossDomainMessenger\n @notice The L1CrossDomainMessenger is a message passing interface between L1 and L2 responsible\n         for sending and receiving data on the L1 side. Users are encouraged to use this\n         interface instead of interacting with lower-level contracts directly." }, "fullyImplemented": true, "linearizedBaseContracts": [85145, 109417, 108888, 108366, 47114, 108325], "name": "L1CrossDomainMessenger", "nameLocation": "710:22:130", "scope": 85146, "usedErrors": [] }], "license": "MIT" }, "id": 130 }
