{ "abi": [{ "type": "constructor", "inputs": [], "stateMutability": "nonpayable" }, { "type": "receive", "stateMutability": "payable" }, { "type": "function", "name": "depositTransaction", "inputs": [{ "name": "_to", "type": "address", "internalType": "address" }, { "name": "_value", "type": "uint256", "internalType": "uint256" }, { "name": "_gasLimit", "type": "uint64", "internalType": "uint64" }, { "name": "_isCreation", "type": "bool", "internalType": "bool" }, { "name": "_data", "type": "bytes", "internalType": "bytes" }], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "donateETH", "inputs": [], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "finalizeWithdrawalTransaction", "inputs": [{ "name": "_tx", "type": "tuple", "internalType": "struct Types.WithdrawalTransaction", "components": [{ "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": "gasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "data", "type": "bytes", "internalType": "bytes" }] }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "finalizedWithdrawals", "inputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "guardian", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "initialize", "inputs": [{ "name": "_l2Oracle", "type": "address", "internalType": "contract L2OutputOracle" }, { "name": "_systemConfig", "type": "address", "internalType": "contract SystemConfig" }, { "name": "_superchainConfig", "type": "address", "internalType": "contract SuperchainConfig" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "isOutputFinalized", "inputs": [{ "name": "_l2OutputIndex", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "l2Oracle", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract L2OutputOracle" }], "stateMutability": "view" }, { "type": "function", "name": "l2Sender", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "minimumGasLimit", "inputs": [{ "name": "_byteCount", "type": "uint64", "internalType": "uint64" }], "outputs": [{ "name": "", "type": "uint64", "internalType": "uint64" }], "stateMutability": "pure" }, { "type": "function", "name": "params", "inputs": [], "outputs": [{ "name": "prevBaseFee", "type": "uint128", "internalType": "uint128" }, { "name": "prevBoughtGas", "type": "uint64", "internalType": "uint64" }, { "name": "prevBlockNum", "type": "uint64", "internalType": "uint64" }], "stateMutability": "view" }, { "type": "function", "name": "paused", "inputs": [], "outputs": [{ "name": "paused_", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "proveWithdrawalTransaction", "inputs": [{ "name": "_tx", "type": "tuple", "internalType": "struct Types.WithdrawalTransaction", "components": [{ "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": "gasLimit", "type": "uint256", "internalType": "uint256" }, { "name": "data", "type": "bytes", "internalType": "bytes" }] }, { "name": "_l2OutputIndex", "type": "uint256", "internalType": "uint256" }, { "name": "_outputRootProof", "type": "tuple", "internalType": "struct Types.OutputRootProof", "components": [{ "name": "version", "type": "bytes32", "internalType": "bytes32" }, { "name": "stateRoot", "type": "bytes32", "internalType": "bytes32" }, { "name": "messagePasserStorageRoot", "type": "bytes32", "internalType": "bytes32" }, { "name": "latestBlockhash", "type": "bytes32", "internalType": "bytes32" }] }, { "name": "_withdrawalProof", "type": "bytes[]", "internalType": "bytes[]" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "provenWithdrawals", "inputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "outputs": [{ "name": "outputRoot", "type": "bytes32", "internalType": "bytes32" }, { "name": "timestamp", "type": "uint128", "internalType": "uint128" }, { "name": "l2OutputIndex", "type": "uint128", "internalType": "uint128" }], "stateMutability": "view" }, { "type": "function", "name": "superchainConfig", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract SuperchainConfig" }], "stateMutability": "view" }, { "type": "function", "name": "systemConfig", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract SystemConfig" }], "stateMutability": "view" }, { "type": "function", "name": "version", "inputs": [], "outputs": [{ "name": "", "type": "string", "internalType": "string" }], "stateMutability": "view" }, { "type": "event", "name": "Initialized", "inputs": [{ "name": "version", "type": "uint8", "indexed": false, "internalType": "uint8" }], "anonymous": false }, { "type": "event", "name": "TransactionDeposited", "inputs": [{ "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": true, "internalType": "address" }, { "name": "version", "type": "uint256", "indexed": true, "internalType": "uint256" }, { "name": "opaqueData", "type": "bytes", "indexed": false, "internalType": "bytes" }], "anonymous": false }, { "type": "event", "name": "WithdrawalFinalized", "inputs": [{ "name": "withdrawalHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, { "name": "success", "type": "bool", "indexed": false, "internalType": "bool" }], "anonymous": false }, { "type": "event", "name": "WithdrawalProven", "inputs": [{ "name": "withdrawalHash", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, { "name": "from", "type": "address", "indexed": true, "internalType": "address" }, { "name": "to", "type": "address", "indexed": true, "internalType": "address" }], "anonymous": false }, { "type": "error", "name": "BadTarget", "inputs": [] }, { "type": "error", "name": "CallPaused", "inputs": [] }, { "type": "error", "name": "GasEstimation", "inputs": [] }, { "type": "error", "name": "LargeCalldata", "inputs": [] }, { "type": "error", "name": "OutOfGas", "inputs": [] }, { "type": "error", "name": "SmallGasLimit", "inputs": [] }], "bytecode": { "object": "0x60806040523480156200001157600080fd5b50620000206000808062000026565b6200028f565b600054610100900460ff1615808015620000475750600054600160ff909116105b806200007757506200006430620001c160201b6200191f1760201c565b15801562000077575060005460ff166001145b620000e05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000104576000805461ff0019166101001790555b603680546001600160a01b03199081166001600160a01b03878116919091179092556037805490911685831617905560358054610100600160a81b03191661010085841602179055603254166200016a57603280546001600160a01b03191661dead1790555b62000174620001d0565b8015620001bb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6001600160a01b03163b151590565b600054610100900460ff166200023d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000d7565b600154600160c01b90046001600160401b03166000036200028d5760408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b02176001555b565b615142806200029f6000396000f3fe6080604052600436106101125760003560e01c80638c3152e9116100a5578063a35d99df11610074578063cff0ab9611610059578063cff0ab961461039a578063e965084c1461043b578063e9e05c42146104c757600080fd5b8063a35d99df14610341578063c0c53b8b1461037a57600080fd5b80638c3152e9146102975780639b5f694a146102b75780639bf62d82146102e4578063a14238e71461031157600080fd5b806354fd4d50116100e157806354fd4d50146101fc5780635c975abb146102525780636dbffb78146102775780638b4c40b01461013757600080fd5b806333d7e2bd1461013e57806335e80ab314610195578063452a9320146101c75780634870496f146101dc57600080fd5b36610139576101373334620186a06000604051806020016040528060008152506104d5565b005b600080fd5b34801561014a57600080fd5b5060375461016b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a157600080fd5b5060355461016b90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d357600080fd5b5061016b610692565b3480156101e857600080fd5b506101376101f7366004614709565b61072a565b34801561020857600080fd5b506102456040518060400160405280600581526020017f322e362e3000000000000000000000000000000000000000000000000000000081525081565b60405161018c919061485b565b34801561025e57600080fd5b50610267610d2d565b604051901515815260200161018c565b34801561028357600080fd5b5061026761029236600461486e565b610dc0565b3480156102a357600080fd5b506101376102b2366004614887565b610e7d565b3480156102c357600080fd5b5060365461016b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102f057600080fd5b5060325461016b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561031d57600080fd5b5061026761032c36600461486e565b60336020526000908152604090205460ff1681565b34801561034d57600080fd5b5061036161035c3660046148e1565b6116b8565b60405167ffffffffffffffff909116815260200161018c565b34801561038657600080fd5b506101376103953660046148fc565b6116d1565b3480156103a657600080fd5b50600154610402906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161018c565b34801561044757600080fd5b5061049961045636600461486e565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff928316602085015291169082015260600161018c565b6101376104d5366004614955565b8260005a90508380156104fd575073ffffffffffffffffffffffffffffffffffffffff871615155b15610534576040517f13496fda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61053e83516116b8565b67ffffffffffffffff168567ffffffffffffffff16101561058b576040517f4929b80800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6201d4c0835111156105c9576040517f73052b0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b333281146105ea575033731111000000000000000000000000000000001111015b600034888888886040516020016106059594939291906149d2565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c3284604051610675919061485b565b60405180910390a45050610689828261193b565b50505050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa158015610701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190614a37565b905090565b610732610d2d565b15610769576040517ff480973e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff160361082d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e74726163740060648201526084015b60405180910390fd5b6036546040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810186905260009173ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c19190614a74565b5190506108db6108d636869003860186614ad9565b611c12565b8114610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610824565b600061097487611c6e565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610a8a5750805160365460408084015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff9091169063a25ae55790602401606060405180830381865afa158015610a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a869190614a74565b5114155b610b16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e0000000000000000006064820152608401610824565b60408051602081018490526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083018190529250610bdf9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610bd5888a614b3f565b8a60400135611c9e565b610c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610824565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190614bc3565b6036546040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101839052600091610e759173ffffffffffffffffffffffffffffffffffffffff9091169063a25ae55790602401606060405180830381865afa158015610e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5a9190614a74565b602001516fffffffffffffffffffffffffffffffff16611cc2565b92915050565b565b610e85610d2d565b15610ebc576040517ff480973e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60325473ffffffffffffffffffffffffffffffffffffffff1661dead14610f65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610824565b6000610f7082611c6e565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff8082169483018590527001000000000000000000000000000000009091041691810191909152929350900361105b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e2079657400000000000000000000000000006064820152608401610824565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ec9190614be0565b81602001516fffffffffffffffffffffffffffffffff1610156111b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a401610824565b6111d681602001516fffffffffffffffffffffffffffffffff16611cc2565b611288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a401610824565b60365460408281015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015260009173ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa15801561130f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113339190614a74565b82518151919250146113ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a401610824565b61140c81602001516fffffffffffffffffffffffffffffffff16611cc2565b6114be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a401610824565b60008381526033602052604090205460ff161561155d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610824565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a08801516115ff93929190611d68565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061166490841515815260200190565b60405180910390a28015801561167a5750326001145b156116b1576040517feeae4ed300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b60006116c5826010614c28565b610e7590615208614c58565b600054610100900460ff16158080156116f15750600054600160ff909116105b8061170b5750303b15801561170b575060005460ff166001145b611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610824565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156117f557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603680547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560378054909116858316179055603580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010085841602179055603254166118ae57603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b6118b6611dc6565b801561191957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090611971907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643614c84565b9050600061197d611ed9565b90506000816020015160ff16826000015163ffffffff1661199e9190614cca565b90508215611ad5576001546000906119d5908390700100000000000000000000000000000000900467ffffffffffffffff16614d32565b90506000836040015160ff16836119ec9190614da6565b600154611a0c9084906fffffffffffffffffffffffffffffffff16614da6565b611a169190614cca565b600154909150600090611a6790611a409084906fffffffffffffffffffffffffffffffff16614e62565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16611f9a565b90506001861115611a9657611a93611a4082876040015160ff1660018a611a8e9190614c84565b611fb9565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611b08908490700100000000000000000000000000000000900467ffffffffffffffff16614c58565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611b95576040517f77ebef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154600090611bc1906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816614ed6565b90506000611bd348633b9aca0061200e565b611bdd9083614f13565b905060005a611bec9088614c84565b905080821115611c0857611c08611c038284614c84565b612025565b5050505050505050565b60008160000151826020015183604001518460600151604051602001611c51949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a08801519351600097611c51979096959101614f27565b600080611caa86612053565b9050611cb881868686612085565b9695505050505050565b603654604080517ff4daa291000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163f4daa2919160048083019260209291908290030181865afa158015611d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d569190614be0565b611d609083614f7e565b421192915050565b6000806000611d788660006120b5565b905080611dae576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff16611e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610824565b6001547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600003610e7b5760408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260375483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa158015611f76573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190614fbb565b6000611faf611fa985856120d3565b836120e3565b90505b9392505050565b6000670de0b6b3a7640000611ffa611fd18583614cca565b611fe390670de0b6b3a7640000614d32565b611ff585670de0b6b3a7640000614da6565b6120f2565b6120049086614da6565b611faf9190614cca565b60008183101561201e5781611fb2565b5090919050565b6000805a90505b825a6120389083614c84565b101561204e576120478261505a565b915061202c565b505050565b6060818051906020012060405160200161206f91815260200190565b6040516020818303038152906040529050919050565b60006120ac84612096878686612123565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b60008183121561201e5781611fb2565b600081831261201e5781611fb2565b6000611fb2670de0b6b3a76400008361210a86612ba1565b6121149190614da6565b61211e9190614cca565b612de5565b60606000845111612190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b657900000000000000000000006044820152606401610824565b600061219b84613024565b905060006121a886613110565b90506000846040516020016121bf91815260200190565b60405160208183030381529060405290506000805b8451811015612b185760008582815181106121f1576121f1615092565b60200260200101519050845183111561228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e6774680000000000000000000000000000000000006064820152608401610824565b8260000361234557805180516020918201206040516122da926122b492910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610824565b61249c565b8051516020116123fb578051805160209182012060405161236f926122b492910190815260200190565b612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c2068617368000000000000000000000000000000000000000000000000006064820152608401610824565b80518451602080870191909120825191909201201461249c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f65206861736800000000000000000000000000000000000000000000000000006064820152608401610824565b6124a860106001614f7e565b81602001515103612684578451830361261c576124e281602001516010815181106124d5576124d5615092565b6020026020010151613173565b96506000875111612575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610824565b600186516125839190614c84565b8214612611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610824565b505050505050611fb2565b600085848151811061263057612630615092565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061265b5761265b615092565b6020026020010151905061266e816132d3565b955061267b600186614f7e565b94505050612b05565b600281602001515103612a7d57600061269c826132f8565b90506000816000815181106126b3576126b3615092565b016020015160f81c905060006126ca6002836150c1565b6126d59060026150e3565b905060006126e6848360ff1661331c565b905060006126f48a8961331c565b905060006127028383613352565b905080835114612794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610824565b60ff8516600214806127a9575060ff85166003145b15612998578082511461283e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610824565b61285887602001516001815181106124d5576124d5615092565b9c5060008d51116128eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610824565b60018c516128f99190614c84565b8814612987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610824565b505050505050505050505050611fb2565b60ff851615806129ab575060ff85166001145b156129ea576129d787602001516001815181106129ca576129ca615092565b60200260200101516132d3565b99506129e3818a614f7e565b9850612a72565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e2070726566697800000000000000000000000000006064820152608401610824565b505050505050612b05565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f64650000000000000000000000000000000000000000000000006064820152608401610824565b5080612b108161505a565b9150506121d4565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e74730000000000000000000000000000000000000000000000000000006064820152608401610824565b6000808213612c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610824565b60006060612c1984613406565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213612e1657506000919050565b680755bf798b4a1bf1e58212612e88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610824565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff81111561304257613042614529565b60405190808252806020026020018201604052801561308757816020015b60408051808201909152606080825260208201528152602001906001900390816130605790505b50915060005b818110156131095760405180604001604052808583815181106130b2576130b2615092565b602002602001015181526020016130e18684815181106130d4576130d4615092565b60200260200101516134dc565b8152508382815181106130f6576130f6615092565b602090810291909101015260010161308d565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613168578060011b82018184015160001a8060041c8253600f81166001830153505060010161313a565b509295945050505050565b60606000806000613183856134ef565b91945092509050600081600181111561319e5761319e615106565b1461322b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610824565b6132358284614f7e565b8551146132c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e6465720000000000000000000000006064820152608401610824565b6120ac85602001518484613f5c565b606060208260000151106132ef576132ea82613173565b610e75565b610e7582613ff0565b6060610e7561331783602001516000815181106124d5576124d5615092565b613110565b60608251821061333b5750604080516020810190915260008152610e75565b611fb2838384865161334d9190614c84565b614006565b6000808251845110613365578251613368565b83515b90505b80821080156133ef575082828151811061338757613387615092565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168483815181106133c6576133c6615092565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156133ff5781600101915061336b565b5092915050565b6000808211613471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610824565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b6060610e756134ea836141de565b6142c7565b6000806000808460000151116135ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a401610824565b6020840151805160001a607f81116135d2576000600160009450945094505050613f55565b60b781116137e05760006135e7608083614c84565b9050808760000151116136a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a401610824565b6001838101517fff0000000000000000000000000000000000000000000000000000000000000016908214158061371b57507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b6137cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a401610824565b5060019550935060009250613f55915050565b60bf8111613b2e5760006137f560b783614c84565b9050808760000151116138b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a401610824565b60018301517fff0000000000000000000000000000000000000000000000000000000000000016600081900361398e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a401610824565b600184015160088302610100031c60378111613a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a401610824565b613a5c8184614f7e565b895111613b11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a401610824565b613b1c836001614f7e565b9750955060009450613f559350505050565b60f78111613c0f576000613b4360c083614c84565b905080876000015111613bfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a401610824565b600195509350849250613f55915050565b6000613c1c60f783614c84565b905080876000015111613cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a401610824565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613db5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a401610824565b600184015160088302610100031c60378111613e79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a401610824565b613e838184614f7e565b895111613f38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a401610824565b613f43836001614f7e565b9750955060019450613f559350505050565b9193909250565b60608167ffffffffffffffff811115613f7757613f77614529565b6040519080825280601f01601f191660200182016040528015613fa1576020820181803683370190505b5090508115611fb2576000613fb68486614f7e565b90506020820160005b84811015613fd7578281015182820152602001613fbf565b84811115613fe6576000858301525b5050509392505050565b6060610e75826020015160008460000151613f5c565b60608182601f011015614075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610824565b8282840110156140e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610824565b8183018451101561414e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610824565b60608215801561416d57604051915060008252602082016040526141d5565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156141a657805183526020928301920161418e565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b604080518082019091526000808252602082015260008251116142a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a401610824565b50604080518082019091528151815260209182019181019190915290565b606060008060006142d7856134ef565b9194509250905060018160018111156142f2576142f2615106565b1461437f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610824565b845161438b8385614f7e565b14614418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e64657200000000000000000000000000006064820152608401610824565b604080516020808252610420820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161442f5790505093506000835b865181101561451d576000806144a26040518060400160405280858c600001516144869190614c84565b8152602001858c6020015161449b9190614f7e565b90526134ef565b5091509150604051806040016040528083836144be9190614f7e565b8152602001848b602001516144d39190614f7e565b8152508885815181106144e8576144e8615092565b60209081029190910101526144fe600185614f7e565b935061450a8183614f7e565b6145149084614f7e565b9250505061445c565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561459f5761459f614529565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146145c957600080fd5b50565b600082601f8301126145dd57600080fd5b813567ffffffffffffffff8111156145f7576145f7614529565b61462860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614558565b81815284602083860101111561463d57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561466c57600080fd5b60405160c0810167ffffffffffffffff828210818311171561469057614690614529565b8160405282935084358352602085013591506146ab826145a7565b816020840152604085013591506146c1826145a7565b816040840152606085013560608401526080850135608084015260a08501359150808211156146ef57600080fd5b506146fc858286016145cc565b60a0830152505092915050565b600080600080600085870360e081121561472257600080fd5b863567ffffffffffffffff8082111561473a57600080fd5b6147468a838b0161465a565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08401121561477f57600080fd5b60408901955060c089013592508083111561479957600080fd5b828901925089601f8401126147ad57600080fd5b82359150808211156147be57600080fd5b508860208260051b84010111156147d457600080fd5b959894975092955050506020019190565b60005b838110156148005781810151838201526020016147e8565b838111156119195750506000910152565b600081518084526148298160208601602086016147e5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fb26020830184614811565b60006020828403121561488057600080fd5b5035919050565b60006020828403121561489957600080fd5b813567ffffffffffffffff8111156148b057600080fd5b6148bc8482850161465a565b949350505050565b803567ffffffffffffffff811681146148dc57600080fd5b919050565b6000602082840312156148f357600080fd5b611fb2826148c4565b60008060006060848603121561491157600080fd5b833561491c816145a7565b9250602084013561492c816145a7565b9150604084013561493c816145a7565b809150509250925092565b80151581146145c957600080fd5b600080600080600060a0868803121561496d57600080fd5b8535614978816145a7565b94506020860135935061498d604087016148c4565b9250606086013561499d81614947565b9150608086013567ffffffffffffffff8111156149b957600080fd5b6149c5888289016145cc565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614a268160498501602087016147e5565b919091016049019695505050505050565b600060208284031215614a4957600080fd5b8151611fb2816145a7565b80516fffffffffffffffffffffffffffffffff811681146148dc57600080fd5b600060608284031215614a8657600080fd5b6040516060810181811067ffffffffffffffff82111715614aa957614aa9614529565b60405282518152614abc60208401614a54565b6020820152614acd60408401614a54565b60408201529392505050565b600060808284031215614aeb57600080fd5b6040516080810181811067ffffffffffffffff82111715614b0e57614b0e614529565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600067ffffffffffffffff80841115614b5a57614b5a614529565b8360051b6020614b6b818301614558565b868152918501918181019036841115614b8357600080fd5b865b84811015614bb757803586811115614b9d5760008081fd5b614ba936828b016145cc565b845250918301918301614b85565b50979650505050505050565b600060208284031215614bd557600080fd5b8151611fb281614947565b600060208284031215614bf257600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615614c4f57614c4f614bf9565b02949350505050565b600067ffffffffffffffff808316818516808303821115614c7b57614c7b614bf9565b01949350505050565b600082821015614c9657614c96614bf9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614cd957614cd9614c9b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615614d2d57614d2d614bf9565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615614d6c57614d6c614bf9565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615614da057614da0614bf9565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615614de757614de7614bf9565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615614e2257614e22614bf9565b60008712925087820587128484161615614e3e57614e3e614bf9565b87850587128184161615614e5457614e54614bf9565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615614e9c57614e9c614bf9565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615614ed057614ed0614bf9565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f0e57614f0e614bf9565b500290565b600082614f2257614f22614c9b565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152614f7260c0830184614811565b98975050505050505050565b60008219821115614f9157614f91614bf9565b500190565b805163ffffffff811681146148dc57600080fd5b805160ff811681146148dc57600080fd5b600060c08284031215614fcd57600080fd5b60405160c0810181811067ffffffffffffffff82111715614ff057614ff0614529565b604052614ffc83614f96565b815261500a60208401614faa565b602082015261501b60408401614faa565b604082015261502c60608401614f96565b606082015261503d60808401614f96565b608082015261504e60a08401614a54565b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361508b5761508b614bf9565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff8316806150d4576150d4614c9b565b8060ff84160691505092915050565b600060ff821660ff8416808210156150fd576150fd614bf9565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a", "sourceMap": "1240:19301:134:-:0;;;4633:218;;;;;;;;;-1:-1:-1;4657:187:134;4716:1;;;4657:10;:187::i;:::-;1240:19301;;5069:435;3100:19:43;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:43;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;;3209:33;3236:4;3209:18;;;;;:33;;:::i;:::-;3208:34;:55;;;;-1:-1:-1;3246:12:43;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:43;;216:2:357;3146:190:43;;;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;;3146:190:43;;;;;;;;;3346:12;:16;;-1:-1:-1;;3346:16:43;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;-1:-1:-1;;3406:20:43;;;;;3372:65;5258:8:134::1;:20:::0;;-1:-1:-1;;;;;;5258:20:134;;::::1;-1:-1:-1::0;;;;;5258:20:134;;::::1;::::0;;;::::1;::::0;;;5288:12:::1;:28:::0;;;;::::1;::::0;;::::1;;::::0;;5326:16:::1;:36:::0;;-1:-1:-1;;;;;;5326:36:134::1;5258:20;5326:36:::0;;::::1;;;::::0;;5376:8:::1;::::0;::::1;5372:91;;5414:8;:38:::0;;-1:-1:-1;;;;;;5414:38:134::1;1338:42:192;5414:38:134;::::0;;5372:91:::1;5472:25;:23;:25::i;:::-;3461:14:43::0;3457:99;;;3507:5;3491:21;;-1:-1:-1;;3491:21:43;;;3531:14;;-1:-1:-1;581:36:357;;3531:14:43;;569:2:357;554:18;3531:14:43;;;;;;;3457:99;3090:472;5069:435:134;;;:::o;1175:320:59:-;-1:-1:-1;;;;;1465:19:59;;:23;;;1175:320::o;8340:234:137:-;4888:13:43;;;;;;;4880:69;;;;-1:-1:-1;;;4880:69:43;;830:2:357;4880:69:43;;;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;;4880:69:43;628:407:357;4880:69:43;8415:6:137::1;:19:::0;-1:-1:-1;;;8415:19:137;::::1;-1:-1:-1::0;;;;;8415:19:137::1;;:24:::0;8411:157:::1;;8464:93;::::0;;::::1;::::0;::::1;::::0;;8494:6:::1;8464:93:::0;;;-1:-1:-1;8464:93:137::1;::::0;::::1;::::0;8541:12:::1;-1:-1:-1::0;;;;;8464:93:137::1;::::0;;;;;;;-1:-1:-1;;;8455:102:137::1;;:6;:102:::0;8411:157:::1;8340:234::o:0;628:407:357:-;1240:19301:134;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x6080604052600436106101125760003560e01c80638c3152e9116100a5578063a35d99df11610074578063cff0ab9611610059578063cff0ab961461039a578063e965084c1461043b578063e9e05c42146104c757600080fd5b8063a35d99df14610341578063c0c53b8b1461037a57600080fd5b80638c3152e9146102975780639b5f694a146102b75780639bf62d82146102e4578063a14238e71461031157600080fd5b806354fd4d50116100e157806354fd4d50146101fc5780635c975abb146102525780636dbffb78146102775780638b4c40b01461013757600080fd5b806333d7e2bd1461013e57806335e80ab314610195578063452a9320146101c75780634870496f146101dc57600080fd5b36610139576101373334620186a06000604051806020016040528060008152506104d5565b005b600080fd5b34801561014a57600080fd5b5060375461016b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101a157600080fd5b5060355461016b90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d357600080fd5b5061016b610692565b3480156101e857600080fd5b506101376101f7366004614709565b61072a565b34801561020857600080fd5b506102456040518060400160405280600581526020017f322e362e3000000000000000000000000000000000000000000000000000000081525081565b60405161018c919061485b565b34801561025e57600080fd5b50610267610d2d565b604051901515815260200161018c565b34801561028357600080fd5b5061026761029236600461486e565b610dc0565b3480156102a357600080fd5b506101376102b2366004614887565b610e7d565b3480156102c357600080fd5b5060365461016b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102f057600080fd5b5060325461016b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561031d57600080fd5b5061026761032c36600461486e565b60336020526000908152604090205460ff1681565b34801561034d57600080fd5b5061036161035c3660046148e1565b6116b8565b60405167ffffffffffffffff909116815260200161018c565b34801561038657600080fd5b506101376103953660046148fc565b6116d1565b3480156103a657600080fd5b50600154610402906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161018c565b34801561044757600080fd5b5061049961045636600461486e565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff928316602085015291169082015260600161018c565b6101376104d5366004614955565b8260005a90508380156104fd575073ffffffffffffffffffffffffffffffffffffffff871615155b15610534576040517f13496fda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61053e83516116b8565b67ffffffffffffffff168567ffffffffffffffff16101561058b576040517f4929b80800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6201d4c0835111156105c9576040517f73052b0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b333281146105ea575033731111000000000000000000000000000000001111015b600034888888886040516020016106059594939291906149d2565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c3284604051610675919061485b565b60405180910390a45050610689828261193b565b50505050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa158015610701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190614a37565b905090565b610732610d2d565b15610769576040517ff480973e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff160361082d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e74726163740060648201526084015b60405180910390fd5b6036546040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810186905260009173ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa15801561089d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c19190614a74565b5190506108db6108d636869003860186614ad9565b611c12565b8114610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610824565b600061097487611c6e565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610a8a5750805160365460408084015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff9091169063a25ae55790602401606060405180830381865afa158015610a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a869190614a74565b5114155b610b16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e0000000000000000006064820152608401610824565b60408051602081018490526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083018190529250610bdf9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610bd5888a614b3f565b8a60400135611c9e565b610c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610824565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190614bc3565b6036546040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101839052600091610e759173ffffffffffffffffffffffffffffffffffffffff9091169063a25ae55790602401606060405180830381865afa158015610e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5a9190614a74565b602001516fffffffffffffffffffffffffffffffff16611cc2565b92915050565b565b610e85610d2d565b15610ebc576040517ff480973e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60325473ffffffffffffffffffffffffffffffffffffffff1661dead14610f65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610824565b6000610f7082611c6e565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff8082169483018590527001000000000000000000000000000000009091041691810191909152929350900361105b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e2079657400000000000000000000000000006064820152608401610824565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ec9190614be0565b81602001516fffffffffffffffffffffffffffffffff1610156111b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a401610824565b6111d681602001516fffffffffffffffffffffffffffffffff16611cc2565b611288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a401610824565b60365460408281015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015260009173ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa15801561130f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113339190614a74565b82518151919250146113ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a401610824565b61140c81602001516fffffffffffffffffffffffffffffffff16611cc2565b6114be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a401610824565b60008381526033602052604090205460ff161561155d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610824565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a08801516115ff93929190611d68565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061166490841515815260200190565b60405180910390a28015801561167a5750326001145b156116b1576040517feeae4ed300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b60006116c5826010614c28565b610e7590615208614c58565b600054610100900460ff16158080156116f15750600054600160ff909116105b8061170b5750303b15801561170b575060005460ff166001145b611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610824565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156117f557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603680547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560378054909116858316179055603580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010085841602179055603254166118ae57603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b6118b6611dc6565b801561191957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090611971907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643614c84565b9050600061197d611ed9565b90506000816020015160ff16826000015163ffffffff1661199e9190614cca565b90508215611ad5576001546000906119d5908390700100000000000000000000000000000000900467ffffffffffffffff16614d32565b90506000836040015160ff16836119ec9190614da6565b600154611a0c9084906fffffffffffffffffffffffffffffffff16614da6565b611a169190614cca565b600154909150600090611a6790611a409084906fffffffffffffffffffffffffffffffff16614e62565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16611f9a565b90506001861115611a9657611a93611a4082876040015160ff1660018a611a8e9190614c84565b611fb9565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611b08908490700100000000000000000000000000000000900467ffffffffffffffff16614c58565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611b95576040517f77ebef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154600090611bc1906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816614ed6565b90506000611bd348633b9aca0061200e565b611bdd9083614f13565b905060005a611bec9088614c84565b905080821115611c0857611c08611c038284614c84565b612025565b5050505050505050565b60008160000151826020015183604001518460600151604051602001611c51949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a08801519351600097611c51979096959101614f27565b600080611caa86612053565b9050611cb881868686612085565b9695505050505050565b603654604080517ff4daa291000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163f4daa2919160048083019260209291908290030181865afa158015611d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d569190614be0565b611d609083614f7e565b421192915050565b6000806000611d788660006120b5565b905080611dae576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff16611e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610824565b6001547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600003610e7b5760408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260375483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa158015611f76573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107259190614fbb565b6000611faf611fa985856120d3565b836120e3565b90505b9392505050565b6000670de0b6b3a7640000611ffa611fd18583614cca565b611fe390670de0b6b3a7640000614d32565b611ff585670de0b6b3a7640000614da6565b6120f2565b6120049086614da6565b611faf9190614cca565b60008183101561201e5781611fb2565b5090919050565b6000805a90505b825a6120389083614c84565b101561204e576120478261505a565b915061202c565b505050565b6060818051906020012060405160200161206f91815260200190565b6040516020818303038152906040529050919050565b60006120ac84612096878686612123565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b60008183121561201e5781611fb2565b600081831261201e5781611fb2565b6000611fb2670de0b6b3a76400008361210a86612ba1565b6121149190614da6565b61211e9190614cca565b612de5565b60606000845111612190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b657900000000000000000000006044820152606401610824565b600061219b84613024565b905060006121a886613110565b90506000846040516020016121bf91815260200190565b60405160208183030381529060405290506000805b8451811015612b185760008582815181106121f1576121f1615092565b60200260200101519050845183111561228c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e6774680000000000000000000000000000000000006064820152608401610824565b8260000361234557805180516020918201206040516122da926122b492910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f7420686173680000006044820152606401610824565b61249c565b8051516020116123fb578051805160209182012060405161236f926122b492910190815260200190565b612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c2068617368000000000000000000000000000000000000000000000000006064820152608401610824565b80518451602080870191909120825191909201201461249c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f65206861736800000000000000000000000000000000000000000000000000006064820152608401610824565b6124a860106001614f7e565b81602001515103612684578451830361261c576124e281602001516010815181106124d5576124d5615092565b6020026020010151613173565b96506000875111612575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e63682900000000006064820152608401610824565b600186516125839190614c84565b8214612611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e6368290000000000006064820152608401610824565b505050505050611fb2565b600085848151811061263057612630615092565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061265b5761265b615092565b6020026020010151905061266e816132d3565b955061267b600186614f7e565b94505050612b05565b600281602001515103612a7d57600061269c826132f8565b90506000816000815181106126b3576126b3615092565b016020015160f81c905060006126ca6002836150c1565b6126d59060026150e3565b905060006126e6848360ff1661331c565b905060006126f48a8961331c565b905060006127028383613352565b905080835114612794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b65790000000000006064820152608401610824565b60ff8516600214806127a9575060ff85166003145b15612998578082511461283e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e6465720000006064820152608401610824565b61285887602001516001815181106124d5576124d5615092565b9c5060008d51116128eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c65616629000000000000006064820152608401610824565b60018c516128f99190614c84565b8814612987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c6561662900000000000000006064820152608401610824565b505050505050505050505050611fb2565b60ff851615806129ab575060ff85166001145b156129ea576129d787602001516001815181106129ca576129ca615092565b60200260200101516132d3565b99506129e3818a614f7e565b9850612a72565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e2070726566697800000000000000000000000000006064820152608401610824565b505050505050612b05565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f64650000000000000000000000000000000000000000000000006064820152608401610824565b5080612b108161505a565b9150506121d4565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e74730000000000000000000000000000000000000000000000000000006064820152608401610824565b6000808213612c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610824565b60006060612c1984613406565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213612e1657506000919050565b680755bf798b4a1bf1e58212612e88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610824565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff81111561304257613042614529565b60405190808252806020026020018201604052801561308757816020015b60408051808201909152606080825260208201528152602001906001900390816130605790505b50915060005b818110156131095760405180604001604052808583815181106130b2576130b2615092565b602002602001015181526020016130e18684815181106130d4576130d4615092565b60200260200101516134dc565b8152508382815181106130f6576130f6615092565b602090810291909101015260010161308d565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613168578060011b82018184015160001a8060041c8253600f81166001830153505060010161313a565b509295945050505050565b60606000806000613183856134ef565b91945092509050600081600181111561319e5761319e615106565b1461322b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d000000000000006064820152608401610824565b6132358284614f7e565b8551146132c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e6465720000000000000000000000006064820152608401610824565b6120ac85602001518484613f5c565b606060208260000151106132ef576132ea82613173565b610e75565b610e7582613ff0565b6060610e7561331783602001516000815181106124d5576124d5615092565b613110565b60608251821061333b5750604080516020810190915260008152610e75565b611fb2838384865161334d9190614c84565b614006565b6000808251845110613365578251613368565b83515b90505b80821080156133ef575082828151811061338757613387615092565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168483815181106133c6576133c6615092565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156133ff5781600101915061336b565b5092915050565b6000808211613471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610824565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b6060610e756134ea836141de565b6142c7565b6000806000808460000151116135ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a401610824565b6020840151805160001a607f81116135d2576000600160009450945094505050613f55565b60b781116137e05760006135e7608083614c84565b9050808760000151116136a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a401610824565b6001838101517fff0000000000000000000000000000000000000000000000000000000000000016908214158061371b57507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b6137cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a401610824565b5060019550935060009250613f55915050565b60bf8111613b2e5760006137f560b783614c84565b9050808760000151116138b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a401610824565b60018301517fff0000000000000000000000000000000000000000000000000000000000000016600081900361398e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a401610824565b600184015160088302610100031c60378111613a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a401610824565b613a5c8184614f7e565b895111613b11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a401610824565b613b1c836001614f7e565b9750955060009450613f559350505050565b60f78111613c0f576000613b4360c083614c84565b905080876000015111613bfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a401610824565b600195509350849250613f55915050565b6000613c1c60f783614c84565b905080876000015111613cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a401610824565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613db5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a401610824565b600184015160088302610100031c60378111613e79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a401610824565b613e838184614f7e565b895111613f38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a401610824565b613f43836001614f7e565b9750955060019450613f559350505050565b9193909250565b60608167ffffffffffffffff811115613f7757613f77614529565b6040519080825280601f01601f191660200182016040528015613fa1576020820181803683370190505b5090508115611fb2576000613fb68486614f7e565b90506020820160005b84811015613fd7578281015182820152602001613fbf565b84811115613fe6576000858301525b5050509392505050565b6060610e75826020015160008460000151613f5c565b60608182601f011015614075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610824565b8282840110156140e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610824565b8183018451101561414e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610824565b60608215801561416d57604051915060008252602082016040526141d5565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156141a657805183526020928301920161418e565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b604080518082019091526000808252602082015260008251116142a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a401610824565b50604080518082019091528151815260209182019181019190915290565b606060008060006142d7856134ef565b9194509250905060018160018111156142f2576142f2615106565b1461437f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d00000000000000006064820152608401610824565b845161438b8385614f7e565b14614418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e64657200000000000000000000000000006064820152608401610824565b604080516020808252610420820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161442f5790505093506000835b865181101561451d576000806144a26040518060400160405280858c600001516144869190614c84565b8152602001858c6020015161449b9190614f7e565b90526134ef565b5091509150604051806040016040528083836144be9190614f7e565b8152602001848b602001516144d39190614f7e565b8152508885815181106144e8576144e8615092565b60209081029190910101526144fe600185614f7e565b935061450a8183614f7e565b6145149084614f7e565b9250505061445c565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561459f5761459f614529565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146145c957600080fd5b50565b600082601f8301126145dd57600080fd5b813567ffffffffffffffff8111156145f7576145f7614529565b61462860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614558565b81815284602083860101111561463d57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561466c57600080fd5b60405160c0810167ffffffffffffffff828210818311171561469057614690614529565b8160405282935084358352602085013591506146ab826145a7565b816020840152604085013591506146c1826145a7565b816040840152606085013560608401526080850135608084015260a08501359150808211156146ef57600080fd5b506146fc858286016145cc565b60a0830152505092915050565b600080600080600085870360e081121561472257600080fd5b863567ffffffffffffffff8082111561473a57600080fd5b6147468a838b0161465a565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08401121561477f57600080fd5b60408901955060c089013592508083111561479957600080fd5b828901925089601f8401126147ad57600080fd5b82359150808211156147be57600080fd5b508860208260051b84010111156147d457600080fd5b959894975092955050506020019190565b60005b838110156148005781810151838201526020016147e8565b838111156119195750506000910152565b600081518084526148298160208601602086016147e5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fb26020830184614811565b60006020828403121561488057600080fd5b5035919050565b60006020828403121561489957600080fd5b813567ffffffffffffffff8111156148b057600080fd5b6148bc8482850161465a565b949350505050565b803567ffffffffffffffff811681146148dc57600080fd5b919050565b6000602082840312156148f357600080fd5b611fb2826148c4565b60008060006060848603121561491157600080fd5b833561491c816145a7565b9250602084013561492c816145a7565b9150604084013561493c816145a7565b809150509250925092565b80151581146145c957600080fd5b600080600080600060a0868803121561496d57600080fd5b8535614978816145a7565b94506020860135935061498d604087016148c4565b9250606086013561499d81614947565b9150608086013567ffffffffffffffff8111156149b957600080fd5b6149c5888289016145cc565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614a268160498501602087016147e5565b919091016049019695505050505050565b600060208284031215614a4957600080fd5b8151611fb2816145a7565b80516fffffffffffffffffffffffffffffffff811681146148dc57600080fd5b600060608284031215614a8657600080fd5b6040516060810181811067ffffffffffffffff82111715614aa957614aa9614529565b60405282518152614abc60208401614a54565b6020820152614acd60408401614a54565b60408201529392505050565b600060808284031215614aeb57600080fd5b6040516080810181811067ffffffffffffffff82111715614b0e57614b0e614529565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600067ffffffffffffffff80841115614b5a57614b5a614529565b8360051b6020614b6b818301614558565b868152918501918181019036841115614b8357600080fd5b865b84811015614bb757803586811115614b9d5760008081fd5b614ba936828b016145cc565b845250918301918301614b85565b50979650505050505050565b600060208284031215614bd557600080fd5b8151611fb281614947565b600060208284031215614bf257600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615614c4f57614c4f614bf9565b02949350505050565b600067ffffffffffffffff808316818516808303821115614c7b57614c7b614bf9565b01949350505050565b600082821015614c9657614c96614bf9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614cd957614cd9614c9b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615614d2d57614d2d614bf9565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615614d6c57614d6c614bf9565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615614da057614da0614bf9565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600084136000841385830485118282161615614de757614de7614bf9565b7f80000000000000000000000000000000000000000000000000000000000000006000871286820588128184161615614e2257614e22614bf9565b60008712925087820587128484161615614e3e57614e3e614bf9565b87850587128184161615614e5457614e54614bf9565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615614e9c57614e9c614bf9565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615614ed057614ed0614bf9565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f0e57614f0e614bf9565b500290565b600082614f2257614f22614c9b565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152614f7260c0830184614811565b98975050505050505050565b60008219821115614f9157614f91614bf9565b500190565b805163ffffffff811681146148dc57600080fd5b805160ff811681146148dc57600080fd5b600060c08284031215614fcd57600080fd5b60405160c0810181811067ffffffffffffffff82111715614ff057614ff0614529565b604052614ffc83614f96565b815261500a60208401614faa565b602082015261501b60408401614faa565b604082015261502c60608401614f96565b606082015261503d60808401614f96565b608082015261504e60a08401614a54565b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361508b5761508b614bf9565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff8316806150d4576150d4614c9b565b8060ff84160691505092915050565b600060ff821660ff8416808210156150fd576150fd614bf9565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a", "sourceMap": "1240:19301:134:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7115:86;7134:10;7146:9;1971:7;7184:5;7191:9;;;;;;;;;;;;7115:18;:86::i;:::-;1240:19301;;;;;2983:32;;;;;;;;;;-1:-1:-1;2983:32:134;;;;;;;;;;;212:42:357;200:55;;;182:74;;170:2;155:18;2983:32:134;;;;;;;;2739:40;;;;;;;;;;-1:-1:-1;2739:40:134;;;;;;;;;;;5757:101;;;;;;;;;;;;;:::i;8288:3825::-;;;;;;;;;;-1:-1:-1;8288:3825:134;;;;;:::i;:::-;;:::i;4530:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5981:105::-;;;;;;;;;;;;;:::i;:::-;;;5228:14:357;;5221:22;5203:41;;5191:2;5176:18;5981:105:134;5063:187:357;19926:180:134;;;;;;;;;;-1:-1:-1;19926:180:134;;;;;:::i;:::-;;:::i;12226:4818::-;;;;;;;;;;-1:-1:-1;12226:4818:134;;;;;:::i;:::-;;:::i;2867:30::-;;;;;;;;;;-1:-1:-1;2867:30:134;;;;;;;;2234:23;;;;;;;;;;-1:-1:-1;2234:23:134;;;;;;;;2348:52;;;;;;;;;;-1:-1:-1;2348:52:134;;;;;:::i;:::-;;;;;;;;;;;;;;;;6579:120;;;;;;;;;;-1:-1:-1;6579:120:134;;;;;:::i;:::-;;:::i;:::-;;;6799:18:357;6787:31;;;6769:50;;6757:2;6742:18;6579:120:134;6625:200:357;5069:435:134;;;;;;;;;;-1:-1:-1;5069:435:134;;;;;:::i;:::-;;:::i;3093:28:137:-;;;;;;;;;;-1:-1:-1;3093:28:137;;;;;;;;;;;;;;;;;;;;;;;;;7664:34:357;7652:47;;;7634:66;;7719:18;7773:15;;;7768:2;7753:18;;7746:43;7825:15;;7805:18;;;7798:43;7622:2;7607:18;3093:28:137;7436:411:357;2482:61:134;;;;;;;;;;-1:-1:-1;2482:61:134;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8054:25:357;;;8098:34;8168:15;;;8163:2;8148:18;;8141:43;8220:15;;8200:18;;;8193:43;8042:2;8027:18;2482:61:134;7852:390:357;17774:1855:134;;;;;;:::i;:::-;17980:9;3511:18:137;3532:9;3511:30;;18134:11:134::1;:32;;;;-1:-1:-1::0;18149:17:134::1;::::0;::::1;::::0;::::1;18134:32;18130:56;;;18175:11;;;;;;;;;;;;;;18130:56;18350:37;18373:5;:12;18350:15;:37::i;:::-;18338:49;;:9;:49;;;18334:77;;;18396:15;;;;;;;;;;;;;;18334:77;18801:7;18786:5;:12;:22;18782:50;;;18817:15;;;;;;;;;;;;;;18782:50;18938:10;18976:9;18962:23:::0;::::1;18958:108;;-1:-1:-1::0;19044:10:134::1;741:42:237::0;1213:27;18958:108:134::1;19323:23;19366:9;19377:6;19385:9;19396:11;19409:5;19349:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19323:92;;1821:1;19589:3;19562:60;;19583:4;19562:60;;;19611:10;19562:60;;;;;;:::i;:::-;;;;;;;;17995:1634;;3642:29:137::0;3651:7;3660:10;3642:8;:29::i;:::-;3433:245;17774:1855:134;;;;;;:::o;5757:101::-;5798:7;5824:16;;;;;;;;;;;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5817:34;;5757:101;:::o;8288:3825::-;4414:8;:6;:8::i;:::-;4410:33;;;4431:12;;;;;;;;;;;;;;4410:33;8820:4:::1;8798:27;;:3;:10;;;:27;;::::0;8790:103:::1;;;::::0;::::1;::::0;;10435:2:357;8790:103:134::1;::::0;::::1;10417:21:357::0;10474:2;10454:18;;;10447:30;10513:34;10493:18;;;10486:62;10584:33;10564:18;;;10557:61;10635:19;;8790:103:134::1;;;;;;;;;9091:8;::::0;:36:::1;::::0;;;;::::1;::::0;::::1;10811:25:357::0;;;9070:18:134::1;::::0;9091:8:::1;;::::0;:20:::1;::::0;10784:18:357;;9091:36:134::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47:::0;;-1:-1:-1;9272:45:134::1;;;::::0;;::::1;::::0;::::1;9300:16:::0;9272:45:::1;:::i;:::-;:27;:45::i;:::-;9258:10;:59;9237:135;;;::::0;::::1;::::0;;12521:2:357;9237:135:134::1;::::0;::::1;12503:21:357::0;12560:2;12540:18;;;12533:30;12599:34;12579:18;;;12572:62;12670:11;12650:18;;;12643:39;12699:19;;9237:135:134::1;12319:405:357::0;9237:135:134::1;9483:22;9508:27;9531:3;9508:22;:27::i;:::-;9545:40;9588:33:::0;;;:17:::1;:33;::::0;;;;;;;;9545:76;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;;::::0;;;;;;;9483:52;;-1:-1:-1;9545:76:134;10175:31;;:145:::1;;-1:-1:-1::0;10293:27:134;;10226:8:::1;::::0;10247:30:::1;::::0;;::::1;::::0;10226:52;;;;;12905:34:357;12893:47;;;10226:52:134::1;::::0;::::1;12875:66:357::0;10226:8:134::1;::::0;;::::1;::::0;:20:::1;::::0;12848:18:357;;10226:52:134::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63:::0;:94:::1;;10175:145;10154:247;;;::::0;::::1;::::0;;13154:2:357;10154:247:134::1;::::0;::::1;13136:21:357::0;13193:2;13173:18;;;13166:30;13232:34;13212:18;;;13205:62;13303:25;13283:18;;;13276:53;13346:19;;10154:247:134::1;12952:419:357::0;10154:247:134::1;10681:147;::::0;;::::1;::::0;::::1;13550:25:357::0;;;10637:18:134::1;13591::357::0;;;13584:34;;;13523:18;;10681:147:134::1;::::0;;;;;::::1;::::0;;;;;;10658:180;;10681:147:::1;10658:180:::0;;::::1;::::0;11253:22;;::::1;10811:25:357::0;;;10658:180:134;-1:-1:-1;11191:240:134::1;::::0;10784:18:357;11253:22:134::1;::::0;;;;;::::1;::::0;;;11191:240;;::::1;::::0;;;::::1;::::0;;::::1;11253:22;11191:240:::0;::::1;::::0;11253:22;11191:240:::1;11334:16:::0;;11191:240:::1;:::i;:::-;11375:16;:41;;;11191:37;:240::i;:::-;11170:337;;;::::0;::::1;::::0;;14952:2:357;11170:337:134::1;::::0;::::1;14934:21:357::0;14991:2;14971:18;;;14964:30;15030:34;15010:18;;;15003:62;15101:20;15081:18;;;15074:48;15139:19;;11170:337:134::1;14750:414:357::0;11170:337:134::1;11825:165;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;11911:15;11825:165:::0;::::1;;::::0;;::::1;::::0;;;;;::::1;::::0;;;;;;-1:-1:-1;11789:33:134;;;:17:::1;:33:::0;;;;;:201;;;;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;;::::0;;::::1;::::0;;;;12095:10;;::::1;::::0;12083;;::::1;::::0;12050:56;;::::1;::::0;;::::1;::::0;;;::::1;::::0;11807:14;;12050:56:::1;::::0;-1:-1:-1;12050:56:134::1;8553:3560;;;;8288:3825:::0;;;;;:::o;5981:105::-;6020:12;6054:16;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19926:180::-;20052:8;;:36;;;;;;;;10811:25:357;;;20000:4:134;;20023:76;;20052:8;;;;;:20;;10784:18:357;;20052:36:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;;20023:76;;:28;:76::i;:::-;20016:83;19926:180;-1:-1:-1;;19926:180:134:o;7422:77::-;:::o;12226:4818::-;4414:8;:6;:8::i;:::-;4410:33;;;4431:12;;;;;;;;;;;;;;4410:33;12594:8:::1;::::0;:39:::1;:8;1338:42:192;12594:39:134;12573:137;;;::::0;::::1;::::0;;15621:2:357;12573:137:134::1;::::0;::::1;15603:21:357::0;15660:2;15640:18;;;15633:30;15699:34;15679:18;;;15672:62;15770:33;15750:18;;;15743:61;15821:19;;12573:137:134::1;15419:427:357::0;12573:137:134::1;12793:22;12818:27;12841:3;12818:22;:27::i;:::-;12855:40;12898:33:::0;;;:17:::1;:33;::::0;;;;;;;12855:76;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;;::::0;;;;;;;12793:52;;-1:-1:-1;13181:31:134;;13173:94:::1;;;::::0;::::1;::::0;;16053:2:357;13173:94:134::1;::::0;::::1;16035:21:357::0;16092:2;16072:18;;;16065:30;16131:34;16111:18;;;16104:62;16202:20;16182:18;;;16175:48;16240:19;;13173:94:134::1;15851:414:357::0;13173:94:134::1;13584:8;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13554:16;:26;;;:58;;;;13533:180;;;::::0;::::1;::::0;;16661:2:357;13533:180:134::1;::::0;::::1;16643:21:357::0;16700:2;16680:18;;;16673:30;16739:34;16719:18;;;16712:62;16810:34;16790:18;;;16783:62;16882:13;16861:19;;;16854:42;16913:19;;13533:180:134::1;16459:479:357::0;13533:180:134::1;14103:56;14132:16;:26;;;14103:56;;:28;:56::i;:::-;14082:172;;;::::0;::::1;::::0;;17145:2:357;14082:172:134::1;::::0;::::1;17127:21:357::0;17184:2;17164:18;;;17157:30;17223:34;17203:18;;;17196:62;17294:34;17274:18;;;17267:62;17366:7;17345:19;;;17338:36;17391:19;;14082:172:134::1;16943:473:357::0;14082:172:134::1;14464:8;::::0;14485:30:::1;::::0;;::::1;::::0;14464:52;;;;;12905:34:357;12893:47;;;14464:52:134::1;::::0;::::1;12875:66:357::0;14425:36:134::1;::::0;14464:8:::1;;::::0;:20:::1;::::0;12848:18:357;;14464:52:134::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14827:27:::0;;14804:19;;14425:91;;-1:-1:-1;14804:50:134::1;14783:170;;;::::0;::::1;::::0;;17623:2:357;14783:170:134::1;::::0;::::1;17605:21:357::0;17662:2;17642:18;;;17635:30;17701:34;17681:18;;;17674:62;17772:34;17752:18;;;17745:62;17844:11;17823:19;;;17816:40;17873:19;;14783:170:134::1;17421:477:357::0;14783:170:134::1;15052:48;15081:8;:18;;;15052:48;;:28;:48::i;:::-;15031:162;;;::::0;::::1;::::0;;18105:2:357;15031:162:134::1;::::0;::::1;18087:21:357::0;18144:2;18124:18;;;18117:30;18183:34;18163:18;;;18156:62;18254:34;18234:18;;;18227:62;18326:5;18305:19;;;18298:34;18349:19;;15031:162:134::1;17903:471:357::0;15031:162:134::1;15309:36;::::0;;;:20:::1;:36;::::0;;;;;::::1;;:45;15301:111;;;::::0;::::1;::::0;;18581:2:357;15301:111:134::1;::::0;::::1;18563:21:357::0;18620:2;18600:18;;;18593:30;18659:34;18639:18;;;18632:62;18730:23;18710:18;;;18703:51;18771:19;;15301:111:134::1;18379:417:357::0;15301:111:134::1;15492:36;::::0;;;:20:::1;:36;::::0;;;;;;;:43;;;::::1;15531:4;15492:43;::::0;;15640:10;;::::1;::::0;15629:8:::1;:21:::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;16309:10;::::1;::::0;16321:12:::1;::::0;::::1;::::0;16335:9:::1;::::0;::::1;::::0;16346:8:::1;::::0;::::1;::::0;16285:70:::1;::::0;16309:10;16321:12;16335:9;16285:23:::1;:70::i;:::-;16423:8;:38:::0;;;::::1;1338:42:192;16423:38:134;::::0;;16620:44:::1;::::0;16270:85;;-1:-1:-1;16640:14:134;;16620:44:::1;::::0;::::1;::::0;16270:85;5228:14:357;5221:22;5203:41;;5191:2;5176:18;;5063:187;16620:44:134::1;;;;;;;;16928:16:::0;::::1;::::0;::::1;:61;;-1:-1:-1::0;16948:9:134::1;1016:1:192;16948:41:134;16928:61;16924:114;;;17012:15;;;;;;;;;;;;;;16924:114;12328:4716;;;;12226:4818:::0;:::o;6579:120::-;6644:6;6669:15;:10;6682:2;6669:15;:::i;:::-;:23;;6687:5;6669:23;:::i;5069:435::-;3100:19:43;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:43;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;-1:-1:-1;3236:4:43;1465:19:59;:23;;;3208:55:43;;-1:-1:-1;3246:12:43;;;;;:17;3208:55;3146:190;;;;;;;19708:2:357;3146:190:43;;;19690:21:357;19747:2;19727:18;;;19720:30;19786:34;19766:18;;;19759:62;19857:16;19837:18;;;19830:44;19891:19;;3146:190:43;19506:410:357;3146:190:43;3346:12;:16;;;;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;;;;;;;3372:65;5258:8:134::1;:20:::0;;;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;5288:12:::1;:28:::0;;;;::::1;::::0;;::::1;;::::0;;5326:16:::1;:36:::0;;;::::1;5258:20;5326:36:::0;;::::1;;;::::0;;5376:8:::1;::::0;::::1;5372:91;;5414:8;:38:::0;;;::::1;1338:42:192;5414:38:134;::::0;;5372:91:::1;5472:25;:23;:25::i;:::-;3461:14:43::0;3457:99;;;3507:5;3491:21;;;;;;3531:14;;-1:-1:-1;20073:36:357;;3531:14:43;;20061:2:357;20046:18;3531:14:43;;;;;;;3457:99;3090:472;5069:435:134;;;:::o;1175:320:59:-;1465:19;;;:23;;;1175:320::o;3911:3974:137:-;4078:6;:19;4043:17;;4063:34;;4078:19;;;;;4063:12;:34;:::i;:::-;4043:54;;4108:28;4139:17;:15;:17::i;:::-;4108:48;;4166:26;4265:6;:27;;;4257:36;;4222:6;:23;;;4214:32;;4207:87;;;;:::i;:::-;4166:128;-1:-1:-1;4309:13:137;;4305:2229;;4666:6;:20;4629:19;;4651:59;;4691:19;;4666:20;;;;;4651:59;:::i;:::-;4629:81;;4724:19;4855:6;:34;;;4847:43;;4818:19;:73;;;;:::i;:::-;4762:6;:18;4747:50;;4785:12;;4762:18;;4747:50;:::i;:::-;4746:146;;;;:::i;:::-;5111:6;:18;4724:168;;-1:-1:-1;5033:17:137;;5053:232;;5096:50;;4724:168;;5111:18;;5096:50;:::i;:::-;5185:6;:21;;;5177:30;;5247:6;:21;;;5239:30;;5053:16;:232::i;:::-;5033:252;;5562:1;5550:9;:13;5546:741;;;5835:437;5882:239;5939:10;6004:6;:34;;;5996:43;;6096:1;6084:9;:13;;;;:::i;:::-;5882:16;:239::i;5835:437::-;5822:450;;5546:741;6380:49;;6481:42;6443:24;6510:12;6481:42;;;6380:6;6481:42;-1:-1:-1;;4305:2229:137;6628:6;:31;;6652:7;;6628:6;:20;;:31;;6652:7;;6628:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6728:6;:23;;;6720:32;;6688:6;:20;;;;;;;;;;;;6680:29;;6673:80;6669:128;;;6776:10;;;;;;;;;;;;;;6669:128;6908:6;:18;6858:20;;6881:46;;6908:18;;6881:16;;;:46;:::i;:::-;6858:69;;7409:15;7442:31;7451:13;7466:6;7442:8;:31::i;:::-;7427:46;;:12;:46;:::i;:::-;7409:64;;7753:15;7785:9;7771:23;;:11;:23;:::i;:::-;7753:41;;7818:7;7808;:17;7804:75;;;7841:27;7850:17;7860:7;7850;:17;:::i;:::-;7841:8;:27::i;:::-;3975:3910;;;;;;3911:3974;;:::o;4961:384:196:-;5060:7;5137:16;:24;;;5179:16;:26;;;5223:16;:41;;;5282:16;:32;;;5109:219;;;;;;;;;;22747:25:357;;;22803:2;22788:18;;22781:34;;;;22846:2;22831:18;;22824:34;22889:2;22874:18;;22867:34;22734:3;22719:19;;22516:391;5109:219:196;;;;;;;;;;;;;5086:252;;;;;;5079:259;;4961:384;;;:::o;4456:211::-;4590:9;;4601:10;;;;;4613;;;;;4625:9;;;;4636:12;;;;4650:8;;;;4579:80;;4543:7;;4579:80;;4590:9;;4601:10;4650:8;4579:80;;:::i;1041:343:206:-;1234:11;1261:16;1280:19;1294:4;1280:13;:19::i;:::-;1261:38;;1318:59;1350:3;1355:6;1363;1371:5;1318:31;:59::i;:::-;1309:68;1041:343;-1:-1:-1;;;;;;1041:343:206:o;20359:180:134:-;20494:8;;:38;;;;;;;;20440:4;;20494:8;;;:36;;:38;;;;;;;;;;;;;;:8;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20481:51;;:10;:51;:::i;:::-;20463:15;:69;;20359:180;-1:-1:-1;;20359:180:134:o;4419:2320:200:-;4589:4;4609:13;4632:15;4650:21;4660:7;4669:1;4650:9;:21::i;:::-;4632:39;;4782:10;4772:1146;;4894:10;4891:1;4884:21;5009:2;5005;4998:14;5747:56;5743:2;5736:68;5900:3;5896:2;5889:15;4772:1146;6666:4;6630;6589:9;6583:16;6549:2;6538:9;6534:18;6491:6;6449:7;6415:5;6389:309;6361:337;4419:2320;-1:-1:-1;;;;;;;4419:2320:200:o;8340:234:137:-;4888:13:43;;;;;;;4880:69;;;;;;;23908:2:357;4880:69:43;;;23890:21:357;23947:2;23927:18;;;23920:30;23986:34;23966:18;;;23959:62;24057:13;24037:18;;;24030:41;24088:19;;4880:69:43;23706:407:357;4880:69:43;8415:6:137::1;:19:::0;;;::::1;;;;:24:::0;8411:157:::1;;8464:93;::::0;;::::1;::::0;::::1;::::0;;8494:6:::1;8464:93:::0;;;-1:-1:-1;8464:93:137::1;::::0;::::1;::::0;8541:12:::1;8464:93;;::::0;;;;;;;8455:102;::::1;;:6;:102:::0;8340:234::o;7748:152:134:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7864:12:134;;:29;;;;;;;-1:-1:-1;;7864:12:134;;;;;:27;;:29;;;;;-1:-1:-1;;7864:29:134;;;;;;:12;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;537:161:189:-;616:6;641:50;656:28;671:6;679:4;656:14;:28::i;:::-;686:4;641:14;:50::i;:::-;634:57;;537:161;;;;;;:::o;1040:228::-;1138:6;1257:4;1180:72;1213:19;1220:12;1257:4;1213:19;:::i;:::-;1205:28;;:4;:28;:::i;:::-;1235:16;:9;1247:4;1235:16;:::i;:::-;1180:24;:72::i;:::-;1164:89;;:12;:89;:::i;:::-;1163:98;;;;:::i;413:105:69:-;471:7;502:1;497;:6;;:14;;510:1;497:14;;;-1:-1:-1;506:1:69;;490:21;-1:-1:-1;413:105:69:o;407:192:190:-;461:9;484:18;505:9;484:30;;524:69;556:7;544:9;531:22;;:10;:22;:::i;:::-;:32;524:69;;;579:3;;;:::i;:::-;;;524:69;;;451:148;;407:192;:::o;2052:142:206:-;2116:18;2181:4;2171:15;;;;;;2154:33;;;;;;25677:19:357;;25721:2;25712:12;;25548:182;2154:33:206;;;;;;;;;;;;;2146:41;;2052:142;;;:::o;2253:281:205:-;2446:11;2482:45;2494:6;2502:24;2506:4;2512:6;2520:5;2502:3;:24::i;:::-;6693:17:191;;;;;;;6672;;;;;;;;;;:38;;6569:148;2482:45:205;2473:54;2253:281;-1:-1:-1;;;;;2253:281:205: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;311:102:71:-;367:6;397:1;392;:6;;:14;;405:1;392:14;;491:101;547:6;576:1;572;:5;:13;;584:1;572:13;;1208:273:106;1267:6;1391:36;491:4;1410:1;1399:8;1405:1;1399:5;:8::i;:::-;:12;;;;:::i;:::-;1398:28;;;;:::i;:::-;1391:6;:36::i;2830:6314:205:-;2923:19;2976:1;2962:4;:11;:15;2954:49;;;;;;;25937:2:357;2954:49:205;;;25919:21:357;25976:2;25956:18;;;25949:30;26015:23;25995:18;;;25988:51;26056:18;;2954:49:205;25735:345:357;2954:49:205;3014:23;3040:19;3052:6;3040:11;:19::i;:::-;3014:45;;3069:16;3088:21;3104:4;3088:15;:21::i;:::-;3069:40;;3119:26;3165:5;3148:23;;;;;;25677:19:357;;25721:2;25712:12;;25548:182;3148:23:205;;;;;;;;;;;;;3119:52;;3181:23;3295:9;3290:5790;3314:5;:12;3310:1;:16;3290:5790;;;3347:27;3377:5;3383:1;3377:8;;;;;;;;:::i;:::-;;;;;;;3347:38;;3516:3;:10;3497:15;:29;;3489:88;;;;;;;26476:2:357;3489:88:205;;;26458:21:357;26515:2;26495:18;;;26488:30;26554:34;26534:18;;;26527:62;26625:16;26605:18;;;26598:44;26659:19;;3489:88:205;26274:410:357;3489:88:205;3596:15;3615:1;3596:20;3592:837;;3768:19;;3758:30;;;;;;;3741:48;;3729:76;;3741:48;;3758:30;3741:48;25677:19:357;;;25721:2;25712:12;;25548:182;3741:48:205;;;;;;;;;;;;;3791:13;6693:17:191;;;;;;;6672;;;;;;;;;;:38;;6569:148;3729:76:205;3700:176;;;;;;;26891:2:357;3700:176:205;;;26873:21:357;26930:2;26910:18;;;26903:30;26969:31;26949:18;;;26942:59;27018:18;;3700:176:205;26689:353:357;3700:176:205;3592:837;;;3901:19;;:26;3931:2;-1:-1:-1;3897:532:205;;4097:19;;4087:30;;;;;;;4070:48;;4058:76;;4070:48;;4087:30;4070:48;25677:19:357;;;25721:2;25712:12;;25548:182;4058:76:205;4029:186;;;;;;;27249:2:357;4029:186:205;;;27231:21:357;27288:2;27268:18;;;27261:30;27327:34;27307:18;;;27300:62;27398:9;27378:18;;;27371:37;27425:19;;4029:186:205;27047:403:357;3897:532:205;4336:19;;6693:17:191;;;;;;;;;;6672;;;;;;;:38;4316:98:205;;;;;;;27657:2:357;4316:98:205;;;27639:21:357;27696:2;27676:18;;;27669:30;27735:34;27715:18;;;27708:62;27806:8;27786:18;;;27779:36;27832:19;;4316:98:205;27455:402:357;4316:98:205;936:14;803:2;949:1;936:14;:::i;:::-;4447:11;:19;;;:26;:48;4443:4627;;4538:3;:10;4519:15;:29;4515:1346;;5047:52;5067:11;:19;;;803:2;5067:31;;;;;;;;:::i;:::-;;;;;;;5047:19;:52::i;:::-;5038:61;;5145:1;5129:6;:13;:17;5121:89;;;;;;;28064:2:357;5121:89:205;;;28046:21:357;28103:2;28083:18;;;28076:30;28142:34;28122:18;;;28115:62;28213:29;28193:18;;;28186:57;28260:19;;5121:89:205;27862:423:357;5121:89:205;5322:1;5307:5;:12;:16;;;;:::i;:::-;5302:1;:21;5294:92;;;;;;;28492:2:357;5294:92:205;;;28474:21:357;28531:2;28511:18;;;28504:30;28570:34;28550:18;;;28543:62;28641:28;28621:18;;;28614:56;28687:19;;5294:92:205;28290:422:357;5294:92:205;5409:13;;;;;;;;4515:1346;5609:15;5633:3;5637:15;5633:20;;;;;;;;:::i;:::-;;;;;;;;;5627:27;;5609:45;;5676:33;5712:11;:19;;;5732:9;5712:30;;;;;;;;;;:::i;:::-;;;;;;;5676:66;;5780:20;5791:8;5780:10;:20::i;:::-;5764:36;-1:-1:-1;5822:20:205;5841:1;5822:20;;:::i;:::-;;;5447:414;;4443:4627;;;1105:1;5885:11;:19;;;:26;:59;5881:3189;;5964:17;5984:25;5997:11;5984:12;:25::i;:::-;5964:45;;6027:12;6048:4;6053:1;6048:7;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;6074:12:205;6094:10;6103:1;6048:7;6094:10;:::i;:::-;6089:16;;:1;:16;:::i;:::-;6074:31;;6123:26;6152:25;6164:4;6170:6;6152:25;;:11;:25::i;:::-;6123:54;;6195:25;6223:33;6235:3;6240:15;6223:11;:33::i;:::-;6195:61;;6274:26;6303:51;6326:13;6341:12;6303:22;:51::i;:::-;6274:80;;6661:18;6637:13;:20;:42;6608:171;;;;;;;29281:2:357;6608:171:205;;;29263:21:357;29320:2;29300:18;;;29293:30;29359:34;29339:18;;;29332:62;29430:28;29410:18;;;29403:56;29476:19;;6608:171:205;29079:422:357;6608:171:205;6802:26;;;1447:1;6802:26;;:55;;-1:-1:-1;6832:25:205;;;1553:1;6832:25;6802:55;6798:2169;;;7498:18;7475:12;:19;:41;7442:185;;;;;;;29708:2:357;7442:185:205;;;29690:21:357;29747:2;29727:18;;;29720:30;29786:34;29766:18;;;29759:62;29857:31;29837:18;;;29830:59;29906:19;;7442:185:205;29506:425:357;7442:185:205;7985:43;8005:11;:19;;;8025:1;8005:22;;;;;;;;:::i;7985:43::-;7976:52;;8074:1;8058:6;:13;:17;8050:87;;;;;;;30138:2:357;8050:87:205;;;30120:21:357;30177:2;30157:18;;;30150:30;30216:34;30196:18;;;30189:62;30287:27;30267:18;;;30260:55;30332:19;;8050:87:205;29936:421:357;8050:87:205;8249:1;8234:5;:12;:16;;;;:::i;:::-;8229:1;:21;8221:90;;;;;;;30564:2:357;8221:90:205;;;30546:21:357;30603:2;30583:18;;;30576:30;30642:34;30622:18;;;30615:62;30713:26;30693:18;;;30686:54;30757:19;;8221:90:205;30362:420:357;8221:90:205;8334:13;;;;;;;;;;;;;;6798:2169;8376:31;;;;;:65;;-1:-1:-1;8411:30:205;;;1339:1;8411:30;8376:65;8372:595;;;8748:34;8759:11;:19;;;8779:1;8759:22;;;;;;;;:::i;:::-;;;;;;;8748:10;:34::i;:::-;8732:50;-1:-1:-1;8804:37:205;8823:18;8804:37;;:::i;:::-;;;8372:595;;;8888:60;;;;;30989:2:357;8888:60:205;;;30971:21:357;31028:2;31008:18;;;31001:30;31067:34;31047:18;;;31040:62;31138:20;31118:18;;;31111:48;31176:19;;8888:60:205;30787:414:357;8372:595:205;5946:3035;;;;;;5881:3189;;;9005:50;;;;;31408:2:357;9005:50:205;;;31390:21:357;31447:2;31427:18;;;31420:30;31486:34;31466:18;;;31459:62;31557:10;31537:18;;;31530:38;31585:19;;9005:50:205;31206:404:357;5881:3189:205;-1:-1:-1;3328:3:205;;;;:::i;:::-;;;;3290:5790;;;-1:-1:-1;9090:47:205;;;;;31817:2:357;9090:47:205;;;31799:21:357;31856:2;31836:18;;;31829:30;31895:34;31875:18;;;31868:62;31966:7;31946:18;;;31939:35;31991:19;;9090:47:205;31615:401:357;4596:2947:106;4644:8;4700:1;4696;:5;4688:27;;;;;;;32223:2:357;4688:27:106;;;32205:21:357;32262:1;32242:18;;;32235:29;32300:11;32280:18;;;32273:39;32329:18;;4688:27:106;32021:332:357;4688:27:106;5107:8;5145:2;5125:16;5138:1;5125:4;:16::i;:::-;5118:29;5175:3;:7;;;5161:22;;;;5208:17;;;6001:31;5997:35;;6052:5;;5459:2;6051:13;;;6068:32;6050:50;6120:5;;6119:13;;6136:33;6118:51;6189:5;;6188:13;;6205:33;6187:51;6258:5;;6257:13;;6274:33;6256:51;6327:5;;6326:13;;6343:32;6325:50;6395:5;;6394:13;;6411:30;6393:48;5398:31;5394:35;;5449:5;;5448:13;;5465:32;5447:50;5517:5;;5516:13;;5533:32;5515:50;5585:5;;5584:13;;5583:50;;5653:5;;5652:13;;5651:50;;5721:5;;5720:13;;;5719:50;;5787:5;;;:46;;6735:10;7125:43;7120:48;7232:71;:75;;;;7227:80;;;;7380:72;7375:77;7523:3;7517:9;;;-1:-1:-1;;4596:2947:106:o;1487:3103::-;1536:8;1718:21;1713:1;:26;1709:40;;-1:-1:-1;1748:1:106;;1487:3103;-1:-1:-1;1487:3103:106:o;1709:40::-;1948:21;1943:1;:26;1939:54;;1971:22;;;;;32560:2:357;1971:22:106;;;32542:21:357;32599:2;32579:18;;;32572:30;32638:14;32618:18;;;32611:42;32670:18;;1971:22:106;32358:336:357;1939:54:106;2266:5;2260:2;2255:7;;;2254:17;;-1:-1:-1;2535:8:106;2601:2;2559:29;2548:7;;;2547:41;2591:5;2547:49;2546:57;;2629:29;2625:33;;2621:37;;;3300:35;;;3355:5;;2935:2;3354:13;;;3371:32;3353:50;3423:5;;3422:13;;3421:51;;3492:5;;3491:13;;3508:34;3490:52;3562:5;;3561:13;;3560:53;;3633:5;;3632:13;;3649:35;3631:53;2941:32;2874:31;2870:35;;2925:5;;2924:13;;2923:50;;;2998:5;;;:40;;3058:5;3057:13;;;3074:35;3056:53;3127:5;;;3136:40;3127:50;4002:10;4502:49;4489:62;4564:3;:7;;;;4488:84;;;;;;-1:-1:-1;;1487:3103:106:o;9434:390:205:-;9553:13;;9500:24;;9553:13;9585:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;9585:22:205;;;;;;;;;;;;;;;;9576:31;;9622:9;9617:201;9641:6;9637:1;:10;9617:201;;;9676:72;;;;;;;;9696:6;9703:1;9696:9;;;;;;;;:::i;:::-;;;;;;;9676:72;;;;9716:29;9735:6;9742:1;9735:9;;;;;;;;:::i;:::-;;;;;;;9716:18;:29::i;:::-;9676:72;;;9664:6;9671:1;9664:9;;;;;;;;:::i;:::-;;;;;;;;;;:84;9790:3;;9617:201;;;;9526:298;9434:390;;;:::o;4332:1978:191:-;4395:12;4419:21;4550:4;4544:11;4532:23;;4663:6;4657:13;4836:11;4830:4;4826:22;5195:4;5180:13;5176:24;5169:4;5165:9;5161:40;5151:8;5147:55;5141:4;5134:69;5293:13;5283:8;5276:31;;5434:4;5426:6;5422:17;5571:4;5561:8;5557:19;5662:4;5647:622;5675:11;5672:1;5669:18;5647:622;;;5854:1;5848:4;5844:12;5830;5826:31;5996:1;5984:10;5980:18;5974:25;5968:4;5963:37;6119:1;6113:4;6109:12;6101:6;6093:29;6249:4;6246:1;6242:12;6235:4;6227:6;6223:17;6215:40;-1:-1:-1;;5702:4:191;5695:12;5647:622;;;-1:-1:-1;6295:8:191;;4332:1978;-1:-1:-1;;;;;4332:1978:191:o;3993:464:203:-;4055:17;4085:18;4105;4125:20;4149:18;4163:3;4149:13;:18::i;:::-;4084:83;;-1:-1:-1;4084:83:203;-1:-1:-1;4084:83:203;-1:-1:-1;4198:21:203;4186:8;:33;;;;;;;;:::i;:::-;;4178:103;;;;;;;33090:2:357;4178:103:203;;;33072:21:357;33129:2;33109:18;;;33102:30;33168:34;33148:18;;;33141:62;33239:27;33219:18;;;33212:55;33284:19;;4178:103:203;32888:421:357;4178:103:203;4314:23;4327:10;4314;:23;:::i;:::-;4300:10;;:37;4292:102;;;;;;;33516:2:357;4292:102:203;;;33498:21:357;33555:2;33535:18;;;33528:30;33594:34;33574:18;;;33567:62;33665:22;33645:18;;;33638:50;33705:19;;4292:102:203;33314:416:357;4292:102:203;4412:38;4418:3;:7;;;4427:10;4439;4412:5;:38::i;10121:193:205:-;10195:16;10244:2;10229:5;:12;;;:17;:78;;10281:26;10301:5;10281:19;:26::i;:::-;10229:78;;;10249:29;10272:5;10249:22;:29::i;10495:172::-;10562:21;10606:54;10622:37;10642:5;:13;;;10656:1;10642:16;;;;;;;;:::i;10622:37::-;10606:15;:54::i;3805:237:191:-;3880:12;3918:6;:13;3908:6;:23;3904:70;;-1:-1:-1;3954:9:191;;;;;;;;;-1:-1:-1;3954:9:191;;3947:16;;3904:70;3990:45;3996:6;4004;4028;4012;:13;:22;;;;:::i;:::-;3990:5;:45::i;10892:321:205:-;10980:15;11007:11;11034:2;:9;11022:2;:9;:21;11021:47;;11059:2;:9;11021:47;;;11047:2;:9;11021:47;11007:61;;11078:129;11095:3;11085:7;:13;:43;;;;;11117:2;11120:7;11117:11;;;;;;;;:::i;:::-;;;;;;;;;11102:26;;;:2;11105:7;11102:11;;;;;;;;:::i;:::-;;;;;;;:26;11085:43;11078:129;;;11173:9;;;;;11078:129;;;10997:216;10892:321;;;;:::o;15328:575:106:-;15376:9;15409:1;15405;:5;15397:27;;;;;;;32223:2:357;15397:27:106;;;32205:21:357;32262:1;32242:18;;;32235:29;32300:11;32280:18;;;32273:39;32329:18;;15397:27:106;32021:332:357;15397:27:106;-1:-1:-1;15821:1:106;15473:34;-1:-1:-1;;15467:1:106;15463:49;15566:9;;;15546:18;15543:33;15540:1;15536:41;15530:48;15624:9;;;15612:10;15609:25;15606:1;15602:33;15596:40;15678:9;;;15670:6;15667:21;15664:1;15660:29;15654:36;15730:9;;;15724:4;15721:19;15718:1;15714:27;;;15708:34;;;15781:9;;;15776:3;15773:18;15770:1;15766:26;15760:33;15832:9;;;15824:18;;;15817:26;;15811:33;15876:9;;;-1:-1:-1;15862:25:106;;15328:575::o;3732:130:203:-;3791:21;3831:24;3840:14;3850:3;3840:9;:14::i;:::-;3831:8;:24::i;5246:4079::-;5335:15;5352;5369:17;5705:1;5692:3;:10;;;:14;5684:101;;;;;;;33937:2:357;5684:101:203;;;33919:21:357;33976:2;33956:18;;;33949:30;34015:34;33995:18;;;33988:62;34086:34;34066:18;;;34059:62;34158:12;34137:19;;;34130:41;34188:19;;5684:101:203;33735:478:357;5684:101:203;5816:7;;;;5898:10;;5796:17;5890:19;5943:4;5933:14;;5929:3390;;5999:1;6002;6005:21;5991:36;;;;;;;;;;5929:3390;6058:4;6048:6;:14;6044:3275;;6164:14;6181:13;6190:4;6181:6;:13;:::i;:::-;6164:30;;6247:6;6234:3;:10;;;:19;6209:140;;;;;;;34420:2:357;6209:140:203;;;34402:21:357;34459:2;34439:18;;;34432:30;34498:34;34478:18;;;34471:62;34569:34;34549:18;;;34542:62;34641:16;34620:19;;;34613:45;34675:19;;6209:140:203;34218:482:357;6209:140:203;6471:1;6462:11;;;6456:18;6476:14;6452:39;;6544:11;;;;:41;;-1:-1:-1;6559:26:203;;;;;;6544:41;6519:177;;;;;;;34907:2:357;6519:177:203;;;34889:21:357;34946:2;34926:18;;;34919:30;34985:34;34965:18;;;34958:62;35056:34;35036:18;;;35029:62;35128:15;35107:19;;;35100:44;35161:19;;6519:177:203;34705:481:357;6519:177:203;-1:-1:-1;6719:1:203;;-1:-1:-1;6722:6:203;-1:-1:-1;6730:21:203;;-1:-1:-1;6711:41:203;;-1:-1:-1;;6711:41:203;6044:3275;6783:4;6773:6;:14;6769:2550;;6831:19;6853:13;6862:4;6853:6;:13;:::i;:::-;6831:35;;6919:11;6906:3;:10;;;:24;6881:164;;;;;;;35393:2:357;6881:164:203;;;35375:21:357;35432:2;35412:18;;;35405:30;35471:34;35451:18;;;35444:62;35542:34;35522:18;;;35515:62;35614:19;35593;;;35586:48;35651:19;;6881:164:203;35191:485:357;6881:164:203;7167:1;7158:11;;7152:18;7172:14;7148:39;7060:25;7240:26;;;7215:143;;;;;;;35883:2:357;7215:143:203;;;35865:21:357;35922:2;35902:18;;;35895:30;35961:34;35941:18;;;35934:62;36032:34;36012:18;;;36005:62;36104:12;36083:19;;;36076:41;36134:19;;7215:143:203;35681:478:357;7215:143:203;7488:1;7479:11;;7473:18;7455:1;7451:19;;7446:3;7442:29;7438:54;7537:2;7528:11;;7520:96;;;;;;;36366:2:357;7520:96:203;;;36348:21:357;36405:2;36385:18;;;36378:30;36444:34;36424:18;;;36417:62;36515:34;36495:18;;;36488:62;36587:10;36566:19;;;36559:39;36615:19;;7520:96:203;36164:476:357;7520:96:203;7669:20;7683:6;7669:11;:20;:::i;:::-;7656:10;;:33;7631:168;;;;;;;36847:2:357;7631:168:203;;;36829:21:357;36886:2;36866:18;;;36859:30;36925:34;36905:18;;;36898:62;36996:34;36976:18;;;36969:62;37068:14;37047:19;;;37040:43;37100:19;;7631:168:203;36645:480:357;7631:168:203;7822:15;7826:11;7822:1;:15;:::i;:::-;7814:55;-1:-1:-1;7839:6:203;-1:-1:-1;7847:21:203;;-1:-1:-1;7814:55:203;;-1:-1:-1;;;;7814:55:203;6769:2550;7900:4;7890:6;:14;7886:1433;;8003:15;8021:13;8030:4;8021:6;:13;:::i;:::-;8003:31;;8070:7;8057:3;:10;;;:20;8049:107;;;;;;;37332:2:357;8049:107:203;;;37314:21:357;37371:2;37351:18;;;37344:30;37410:34;37390:18;;;37383:62;37481:34;37461:18;;;37454:62;37553:12;37532:19;;;37525:41;37583:19;;8049:107:203;37130:478:357;8049:107:203;8179:1;;-1:-1:-1;8182:7:203;-1:-1:-1;8179:1:203;;-1:-1:-1;8171:42:203;;-1:-1:-1;;8171:42:203;7886:1433;8270:20;8293:13;8302:4;8293:6;:13;:::i;:::-;8270:36;;8359:12;8346:3;:10;;;:25;8321:161;;;;;;;37815:2:357;8321:161:203;;;37797:21:357;37854:2;37834:18;;;37827:30;37893:34;37873:18;;;37866:62;37964:34;37944:18;;;37937:62;38036:15;38015:19;;;38008:44;38069:19;;8321:161:203;37613:481:357;8321:161:203;8604:1;8595:11;;8589:18;8609:14;8585:39;8497:25;8677:26;;;8652:141;;;;;;;38301:2:357;8652:141:203;;;38283:21:357;38340:2;38320:18;;;38313:30;38379:34;38359:18;;;38352:62;38450:34;38430:18;;;38423:62;38522:10;38501:19;;;38494:39;38550:19;;8652:141:203;38099:476:357;8652:141:203;8926:1;8917:11;;8911:18;8892:1;8888:20;;8883:3;8879:30;8875:55;8976:2;8966:12;;8958:95;;;;;;;38782:2:357;8958:95:203;;;38764:21:357;38821:2;38801:18;;;38794:30;38860:34;38840:18;;;38833:62;38931:34;38911:18;;;38904:62;39003:8;38982:19;;;38975:37;39029:19;;8958:95:203;38580:474:357;8958:95:203;9106:22;9121:7;9106:12;:22;:::i;:::-;9093:10;;:35;9068:168;;;;;;;39261:2:357;9068:168:203;;;39243:21:357;39300:2;39280:18;;;39273:30;39339:34;39319:18;;;39312:62;39410:34;39390:18;;;39383:62;39482:12;39461:19;;;39454:41;39512:19;;9068:168:203;39059:478:357;9068:168:203;9259:16;9263:12;9259:1;:16;:::i;:::-;9251:57;-1:-1:-1;9277:7:203;-1:-1:-1;9286:21:203;;-1:-1:-1;9251:57:203;;-1:-1:-1;;;;9251:57:203;5246:4079;;;;;;:::o;9585:737::-;9676:17;9722:7;9712:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9712:18:203;-1:-1:-1;9705:25:203;-1:-1:-1;9740:54:203;;9772:11;9740:54;10010:11;10024:36;10053:7;10045:4;10024:36;:::i;:::-;10010:50;;10115:2;10109:4;10105:13;10140:1;10154:87;10168:7;10165:1;10162:14;10154:87;;;10226:11;;;10220:18;10206:12;;;10199:40;10191:2;10184:10;10154:87;;;10264:7;10261:1;10258:14;10255:51;;;10302:1;10292:7;10286:4;10282:18;10275:29;10255:51;;;10079:237;9585:737;;;;;:::o;4847:137::-;4912:17;4948:29;4954:3;:7;;;4963:1;4966:3;:10;;;4948:5;:29::i;660:2816:191:-;752:12;824:7;808;818:2;808:12;:23;;800:50;;;;;;;39744:2:357;800:50:191;;;39726:21:357;39783:2;39763:18;;;39756:30;39822:16;39802:18;;;39795:44;39856:18;;800:50:191;39542:338:357;800:50:191;892:6;881:7;872:6;:16;:26;;864:53;;;;;;;39744:2:357;864:53:191;;;39726:21:357;39783:2;39763:18;;;39756:30;39822:16;39802:18;;;39795:44;39856:18;;864:53:191;39542:338:357;864:53:191;965:7;956:6;:16;939:6;:13;:33;;931:63;;;;;;;40087:2:357;931:63:191;;;40069:21:357;40126:2;40106:18;;;40099:30;40165:19;40145:18;;;40138:47;40202:18;;931:63:191;39885:341:357;931:63:191;1015:22;1078:15;;1106:1931;;;;3178:4;3172:11;3159:24;;3365:1;3354:9;3347:20;3413:4;3402:9;3398:20;3392:4;3385:34;1071:2362;;1106:1931;1288:4;1282:11;1269:24;;1947:2;1938:7;1934:16;2329:9;2322:17;2316:4;2312:28;2300:9;2289;2285:25;2281:60;2377:7;2373:2;2369:16;2629:6;2615:9;2608:17;2602:4;2598:28;2586:9;2578:6;2574:22;2570:57;2566:70;2403:389;2662:3;2658:2;2655:11;2403:389;;;2780:9;;2769:21;;2703:4;2695:13;;;;2735;2403:389;;;-1:-1:-1;;2810:26:191;;;3018:2;3001:11;3014:7;2997:25;2991:4;2984:39;-1:-1:-1;1071:2362:191;-1:-1:-1;3460:9:191;660:2816;-1:-1:-1;;;;660:2816:191:o;1298:390:203:-;-1:-1:-1;;;;;;;;;;;;;;;;;1453:1:203;1440:3;:10;:14;1432:101;;;;;;;33937:2:357;1432:101:203;;;33919:21:357;33976:2;33956:18;;;33949:30;34015:34;33995:18;;;33988:62;34086:34;34066:18;;;34059:62;34158:12;34137:19;;;34130:41;34188:19;;1432:101:203;33735:478:357;1432:101:203;-1:-1:-1;1640:41:203;;;;;;;;;1658:10;;1640:41;;1610:2;1601:12;;;1640:41;;;;;;;;1298:390::o;1840:1740::-;1901:21;1935:18;1955;1975:20;1999:18;2013:3;1999:13;:18::i;:::-;1934:83;;-1:-1:-1;1934:83:203;-1:-1:-1;1934:83:203;-1:-1:-1;2048:21:203;2036:8;:33;;;;;;;;:::i;:::-;;2028:102;;;;;;;40433:2:357;2028:102:203;;;40415:21:357;40472:2;40452:18;;;40445:30;40511:34;40491:18;;;40484:62;40582:26;40562:18;;;40555:54;40626:19;;2028:102:203;40231:420:357;2028:102:203;2176:10;;2149:23;2162:10;2149;:23;:::i;:::-;:37;2141:100;;;;;;;40858:2:357;2141:100:203;;;40840:21:357;40897:2;40877:18;;;40870:30;40936:34;40916:18;;;40909:62;41007:20;40987:18;;;40980:48;41045:19;;2141:100:203;40656:414:357;2141:100:203;2651:30;;;1123:2;2651:30;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2651:30:203;;;;;;;;;;;;;;-1:-1:-1;2644:37:203;-1:-1:-1;2692:17:203;2740:10;2760:681;2776:10;;2767:19;;2760:681;;;2803:18;2823;2846:150;2877:105;;;;;;;;2908:6;2895:3;:10;;;:19;;;;:::i;:::-;2877:105;;;;2972:6;2961:3;:7;;;2940:38;;;;:::i;:::-;2877:105;;2846:13;:150::i;:::-;2802:194;;;;;3201:153;;;;;;;;3248:10;3235;:23;;;;:::i;:::-;3201:153;;;;3332:6;3321:3;:7;;;3300:38;;;;:::i;:::-;3201:153;;;3183:4;3188:9;3183:15;;;;;;;;:::i;:::-;;;;;;;;;;:171;3369:14;3382:1;3369:14;;:::i;:::-;;-1:-1:-1;3407:23:203;3420:10;3407;:23;:::i;:::-;3397:33;;;;:::i;:::-;;;2788:653;;2760:681;;;-1:-1:-1;3541:23:203;;-1:-1:-1;3548:4:203;;1840:1740;-1:-1:-1;;;1840:1740:203:o;755:184:357:-;807:77;804:1;797:88;904:4;901:1;894:15;928:4;925:1;918:15;944:334;1015:2;1009:9;1071:2;1061:13;;1076:66;1057:86;1045:99;;1174:18;1159:34;;1195:22;;;1156:62;1153:88;;;1221:18;;:::i;:::-;1257:2;1250:22;944:334;;-1:-1:-1;944:334:357:o;1283:154::-;1369:42;1362:5;1358:54;1351:5;1348:65;1338:93;;1427:1;1424;1417:12;1338:93;1283:154;:::o;1442:589::-;1484:5;1537:3;1530:4;1522:6;1518:17;1514:27;1504:55;;1555:1;1552;1545:12;1504:55;1591:6;1578:20;1617:18;1613:2;1610:26;1607:52;;;1639:18;;:::i;:::-;1683:114;1791:4;1722:66;1715:4;1711:2;1707:13;1703:86;1699:97;1683:114;:::i;:::-;1822:2;1813:7;1806:19;1868:3;1861:4;1856:2;1848:6;1844:15;1840:26;1837:35;1834:55;;;1885:1;1882;1875:12;1834:55;1950:2;1943:4;1935:6;1931:17;1924:4;1915:7;1911:18;1898:55;1998:1;1973:16;;;1991:4;1969:27;1962:38;;;;1977:7;1442:589;-1:-1:-1;;;1442:589:357:o;2036:1032::-;2104:5;2152:4;2140:9;2135:3;2131:19;2127:30;2124:50;;;2170:1;2167;2160:12;2124:50;2203:2;2197:9;2245:4;2237:6;2233:17;2269:18;2337:6;2325:10;2322:22;2317:2;2305:10;2302:18;2299:46;2296:72;;;2348:18;;:::i;:::-;2388:10;2384:2;2377:22;2417:6;2408:15;;2460:9;2447:23;2439:6;2432:39;2523:2;2512:9;2508:18;2495:32;2480:47;;2536:33;2561:7;2536:33;:::i;:::-;2602:7;2597:2;2589:6;2585:15;2578:32;2662:2;2651:9;2647:18;2634:32;2619:47;;2675:33;2700:7;2675:33;:::i;:::-;2741:7;2736:2;2728:6;2724:15;2717:32;2810:2;2799:9;2795:18;2782:32;2777:2;2769:6;2765:15;2758:57;2877:3;2866:9;2862:19;2849:33;2843:3;2835:6;2831:16;2824:59;2934:3;2923:9;2919:19;2906:33;2892:47;;2962:2;2954:6;2951:14;2948:34;;;2978:1;2975;2968:12;2948:34;;3016:45;3057:3;3048:6;3037:9;3033:22;3016:45;:::i;:::-;3010:3;3002:6;2998:16;2991:71;;;2036:1032;;;;:::o;3073:1175::-;3275:6;3283;3291;3299;3307;3351:9;3342:7;3338:23;3381:3;3377:2;3373:12;3370:32;;;3398:1;3395;3388:12;3370:32;3438:9;3425:23;3467:18;3508:2;3500:6;3497:14;3494:34;;;3524:1;3521;3514:12;3494:34;3547:72;3611:7;3602:6;3591:9;3587:22;3547:72;:::i;:::-;3537:82;;3666:2;3655:9;3651:18;3638:32;3628:42;;3763:3;3694:66;3690:2;3686:75;3682:85;3679:105;;;3780:1;3777;3770:12;3679:105;3818:2;3807:9;3803:18;3793:28;;3874:3;3863:9;3859:19;3846:33;3830:49;;3904:2;3894:8;3891:16;3888:36;;;3920:1;3917;3910:12;3888:36;3958:8;3947:9;3943:24;3933:34;;4005:7;3998:4;3994:2;3990:13;3986:27;3976:55;;4027:1;4024;4017:12;3976:55;4067:2;4054:16;4040:30;;4093:2;4085:6;4082:14;4079:34;;;4109:1;4106;4099:12;4079:34;;4162:7;4157:2;4147:6;4144:1;4140:14;4136:2;4132:23;4128:32;4125:45;4122:65;;;4183:1;4180;4173:12;4122:65;3073:1175;;;;-1:-1:-1;3073:1175:357;;-1:-1:-1;;;4214:2:357;4206:11;;4236:6;3073:1175::o;4253:258::-;4325:1;4335:113;4349:6;4346:1;4343:13;4335:113;;;4425:11;;;4419:18;4406:11;;;4399:39;4371:2;4364:10;4335:113;;;4466:6;4463:1;4460:13;4457:48;;;-1:-1:-1;;4501:1:357;4483:16;;4476:27;4253:258::o;4516:317::-;4558:3;4596:5;4590:12;4623:6;4618:3;4611:19;4639:63;4695:6;4688:4;4683:3;4679:14;4672:4;4665:5;4661:16;4639:63;:::i;:::-;4747:2;4735:15;4752:66;4731:88;4722:98;;;;4822:4;4718:109;;4516:317;-1:-1:-1;;4516:317:357:o;4838:220::-;4987:2;4976:9;4969:21;4950:4;5007:45;5048:2;5037:9;5033:18;5025:6;5007:45;:::i;5255:180::-;5314:6;5367:2;5355:9;5346:7;5342:23;5338:32;5335:52;;;5383:1;5380;5373:12;5335:52;-1:-1:-1;5406:23:357;;5255:180;-1:-1:-1;5255:180:357:o;5440:375::-;5540:6;5593:2;5581:9;5572:7;5568:23;5564:32;5561:52;;;5609:1;5606;5599:12;5561:52;5649:9;5636:23;5682:18;5674:6;5671:30;5668:50;;;5714:1;5711;5704:12;5668:50;5737:72;5801:7;5792:6;5781:9;5777:22;5737:72;:::i;:::-;5727:82;5440:375;-1:-1:-1;;;;5440:375:357:o;6260:171::-;6327:20;;6387:18;6376:30;;6366:41;;6356:69;;6421:1;6418;6411:12;6356:69;6260:171;;;:::o;6436:184::-;6494:6;6547:2;6535:9;6526:7;6522:23;6518:32;6515:52;;;6563:1;6560;6553:12;6515:52;6586:28;6604:9;6586:28;:::i;6830:601::-;6979:6;6987;6995;7048:2;7036:9;7027:7;7023:23;7019:32;7016:52;;;7064:1;7061;7054:12;7016:52;7103:9;7090:23;7122:31;7147:5;7122:31;:::i;:::-;7172:5;-1:-1:-1;7229:2:357;7214:18;;7201:32;7242:33;7201:32;7242:33;:::i;:::-;7294:7;-1:-1:-1;7353:2:357;7338:18;;7325:32;7366:33;7325:32;7366:33;:::i;:::-;7418:7;7408:17;;;6830:601;;;;;:::o;8247:118::-;8333:5;8326:13;8319:21;8312:5;8309:32;8299:60;;8355:1;8352;8345:12;8370:732;8470:6;8478;8486;8494;8502;8555:3;8543:9;8534:7;8530:23;8526:33;8523:53;;;8572:1;8569;8562:12;8523:53;8611:9;8598:23;8630:31;8655:5;8630:31;:::i;:::-;8680:5;-1:-1:-1;8732:2:357;8717:18;;8704:32;;-1:-1:-1;8755:37:357;8788:2;8773:18;;8755:37;:::i;:::-;8745:47;;8844:2;8833:9;8829:18;8816:32;8857:30;8879:7;8857:30;:::i;:::-;8906:7;-1:-1:-1;8964:3:357;8949:19;;8936:33;8992:18;8981:30;;8978:50;;;9024:1;9021;9014:12;8978:50;9047:49;9088:7;9079:6;9068:9;9064:22;9047:49;:::i;:::-;9037:59;;;8370:732;;;;;;;;:::o;9107:642::-;9370:6;9365:3;9358:19;9407:6;9402:2;9397:3;9393:12;9386:28;9466:66;9457:6;9452:3;9448:16;9444:89;9439:2;9434:3;9430:12;9423:111;9587:6;9580:14;9573:22;9568:3;9564:32;9559:2;9554:3;9550:12;9543:54;9340:3;9626:6;9620:13;9642:60;9695:6;9690:2;9685:3;9681:12;9676:2;9668:6;9664:15;9642:60;:::i;:::-;9722:16;;;;9740:2;9718:25;;9107:642;-1:-1:-1;;;;;;9107:642:357:o;9977:251::-;10047:6;10100:2;10088:9;10079:7;10075:23;10071:32;10068:52;;;10116:1;10113;10106:12;10068:52;10148:9;10142:16;10167:31;10192:5;10167:31;:::i;10847:192::-;10926:13;;10979:34;10968:46;;10958:57;;10948:85;;11029:1;11026;11019:12;11044:617;11148:6;11201:2;11189:9;11180:7;11176:23;11172:32;11169:52;;;11217:1;11214;11207:12;11169:52;11250:2;11244:9;11292:2;11284:6;11280:15;11361:6;11349:10;11346:22;11325:18;11313:10;11310:34;11307:62;11304:88;;;11372:18;;:::i;:::-;11408:2;11401:22;11447:16;;11432:32;;11497:49;11542:2;11527:18;;11497:49;:::i;:::-;11492:2;11484:6;11480:15;11473:74;11580:49;11625:2;11614:9;11610:18;11580:49;:::i;:::-;11575:2;11563:15;;11556:74;11567:6;11044:617;-1:-1:-1;;;11044:617:357:o;11666:648::-;11760:6;11813:3;11801:9;11792:7;11788:23;11784:33;11781:53;;;11830:1;11827;11820:12;11781:53;11863:2;11857:9;11905:3;11897:6;11893:16;11975:6;11963:10;11960:22;11939:18;11927:10;11924:34;11921:62;11918:88;;;11986:18;;:::i;:::-;12026:10;12022:2;12015:22;;12074:9;12061:23;12053:6;12046:39;12146:2;12135:9;12131:18;12118:32;12113:2;12105:6;12101:15;12094:57;12212:2;12201:9;12197:18;12184:32;12179:2;12171:6;12167:15;12160:57;12278:2;12267:9;12263:18;12250:32;12245:2;12237:6;12233:15;12226:57;12302:6;12292:16;;;11666:648;;;;:::o;13811:934::-;13947:9;13981:18;14022:2;14014:6;14011:14;14008:40;;;14028:18;;:::i;:::-;14074:6;14071:1;14067:14;14100:4;14124:28;14148:2;14144;14140:11;14124:28;:::i;:::-;14186:19;;;14256:14;;;;14221:12;;;;14293:14;14282:26;;14279:46;;;14321:1;14318;14311:12;14279:46;14345:5;14359:353;14375:6;14370:3;14367:15;14359:353;;;14461:3;14448:17;14497:2;14484:11;14481:19;14478:109;;;14541:1;14570:2;14566;14559:14;14478:109;14612:57;14654:14;14640:11;14633:5;14629:23;14612:57;:::i;:::-;14600:70;;-1:-1:-1;14690:12:357;;;;14392;;14359:353;;;-1:-1:-1;14734:5:357;13811:934;-1:-1:-1;;;;;;;13811:934:357:o;15169:245::-;15236:6;15289:2;15277:9;15268:7;15264:23;15260:32;15257:52;;;15305:1;15302;15295:12;15257:52;15337:9;15331:16;15356:28;15378:5;15356:28;:::i;16270:184::-;16340:6;16393:2;16381:9;16372:7;16368:23;16364:32;16361:52;;;16409:1;16406;16399:12;16361:52;-1:-1:-1;16432:16:357;;16270:184;-1:-1:-1;16270:184:357:o;18801:::-;18853:77;18850:1;18843:88;18950:4;18947:1;18940:15;18974:4;18971:1;18964:15;18990:270;19029:7;19061:18;19106:2;19103:1;19099:10;19136:2;19133:1;19129:10;19192:3;19188:2;19184:12;19179:3;19176:21;19169:3;19162:11;19155:19;19151:47;19148:73;;;19201:18;;:::i;:::-;19241:13;;18990:270;-1:-1:-1;;;;18990:270:357:o;19265:236::-;19304:3;19332:18;19377:2;19374:1;19370:10;19407:2;19404:1;19400:10;19438:3;19434:2;19430:12;19425:3;19422:21;19419:47;;;19446:18;;:::i;:::-;19482:13;;19265:236;-1:-1:-1;;;;19265:236:357:o;20120:125::-;20160:4;20188:1;20185;20182:8;20179:34;;;20193:18;;:::i;:::-;-1:-1:-1;20230:9:357;;20120:125::o;20250:184::-;20302:77;20299:1;20292:88;20399:4;20396:1;20389:15;20423:4;20420:1;20413:15;20439:308;20478:1;20504;20494:35;;20509:18;;:::i;:::-;20626:66;20623:1;20620:73;20551:66;20548:1;20545:73;20541:153;20538:179;;;20697:18;;:::i;:::-;-1:-1:-1;20731:10:357;;20439:308::o;20752:369::-;20791:4;20827:1;20824;20820:9;20936:1;20868:66;20864:74;20861:1;20857:82;20852:2;20845:10;20841:99;20838:125;;;20943:18;;:::i;:::-;21062:1;20994:66;20990:74;20987:1;20983:82;20979:2;20975:91;20972:117;;;21069:18;;:::i;:::-;-1:-1:-1;;21106:9:357;;20752:369::o;21126:655::-;21165:7;21197:66;21289:1;21286;21282:9;21317:1;21314;21310:9;21362:1;21358:2;21354:10;21351:1;21348:17;21343:2;21339;21335:11;21331:35;21328:61;;;21369:18;;:::i;:::-;21408:66;21500:1;21497;21493:9;21547:1;21543:2;21538:11;21535:1;21531:19;21526:2;21522;21518:11;21514:37;21511:63;;;21554:18;;:::i;:::-;21600:1;21597;21593:9;21583:19;;21647:1;21643:2;21638:11;21635:1;21631:19;21626:2;21622;21618:11;21614:37;21611:63;;;21654:18;;:::i;:::-;21719:1;21715:2;21710:11;21707:1;21703:19;21698:2;21694;21690:11;21686:37;21683:63;;;21726:18;;:::i;:::-;-1:-1:-1;;;21766:9:357;;;;;21126:655;-1:-1:-1;;;21126:655:357:o;21786:367::-;21825:3;21860:1;21857;21853:9;21969:1;21901:66;21897:74;21894:1;21890:82;21885:2;21878:10;21874:99;21871:125;;;21976:18;;:::i;:::-;22095:1;22027:66;22023:74;22020:1;22016:82;22012:2;22008:91;22005:117;;;22102:18;;:::i;:::-;-1:-1:-1;;22138:9:357;;21786:367::o;22158:228::-;22198:7;22324:1;22256:66;22252:74;22249:1;22246:81;22241:1;22234:9;22227:17;22223:105;22220:131;;;22331:18;;:::i;:::-;-1:-1:-1;22371:9:357;;22158:228::o;22391:120::-;22431:1;22457;22447:35;;22462:18;;:::i;:::-;-1:-1:-1;22496:9:357;;22391:120::o;22912:656::-;23199:6;23188:9;23181:25;23162:4;23225:42;23315:2;23307:6;23303:15;23298:2;23287:9;23283:18;23276:43;23367:2;23359:6;23355:15;23350:2;23339:9;23335:18;23328:43;;23407:6;23402:2;23391:9;23387:18;23380:34;23451:6;23445:3;23434:9;23430:19;23423:35;23495:3;23489;23478:9;23474:19;23467:32;23516:46;23557:3;23546:9;23542:19;23534:6;23516:46;:::i;:::-;23508:54;22912:656;-1:-1:-1;;;;;;;;22912:656:357:o;23573:128::-;23613:3;23644:1;23640:6;23637:1;23634:13;23631:39;;;23650:18;;:::i;:::-;-1:-1:-1;23686:9:357;;23573:128::o;24118:167::-;24196:13;;24249:10;24238:22;;24228:33;;24218:61;;24275:1;24272;24265:12;24290:160;24367:13;;24420:4;24409:16;;24399:27;;24389:55;;24440:1;24437;24430:12;24455:888;24558:6;24611:3;24599:9;24590:7;24586:23;24582:33;24579:53;;;24628:1;24625;24618:12;24579:53;24661:2;24655:9;24703:3;24695:6;24691:16;24773:6;24761:10;24758:22;24737:18;24725:10;24722:34;24719:62;24716:88;;;24784:18;;:::i;:::-;24820:2;24813:22;24859:39;24888:9;24859:39;:::i;:::-;24851:6;24844:55;24932:47;24975:2;24964:9;24960:18;24932:47;:::i;:::-;24927:2;24919:6;24915:15;24908:72;25013:47;25056:2;25045:9;25041:18;25013:47;:::i;:::-;25008:2;25000:6;24996:15;24989:72;25094:48;25138:2;25127:9;25123:18;25094:48;:::i;:::-;25089:2;25081:6;25077:15;25070:73;25177:49;25221:3;25210:9;25206:19;25177:49;:::i;:::-;25171:3;25163:6;25159:16;25152:75;25261:50;25306:3;25295:9;25291:19;25261:50;:::i;:::-;25255:3;25243:16;;25236:76;25247:6;24455:888;-1:-1:-1;;;24455:888:357:o;25348:195::-;25387:3;25418:66;25411:5;25408:77;25405:103;;25488:18;;:::i;:::-;-1:-1:-1;25535:1:357;25524:13;;25348:195::o;26085:184::-;26137:77;26134:1;26127:88;26234:4;26231:1;26224:15;26258:4;26255:1;26248:15;28717:157;28747:1;28781:4;28778:1;28774:12;28805:3;28795:37;;28812:18;;:::i;:::-;28864:3;28857:4;28854:1;28850:12;28846:22;28841:27;;;28717:157;;;;:::o;28879:195::-;28917:4;28954;28951:1;28947:12;28986:4;28983:1;28979:12;29011:3;29006;29003:12;29000:38;;;29018:18;;:::i;:::-;29055:13;;;28879:195;-1:-1:-1;;;28879:195:357:o;32699:184::-;32751:77;32748:1;32741:88;32848:4;32845:1;32838:15;32872:4;32869:1;32862:15", "linkReferences": {} }, "methodIdentifiers": { "depositTransaction(address,uint256,uint64,bool,bytes)": "e9e05c42", "donateETH()": "8b4c40b0", "finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))": "8c3152e9", "finalizedWithdrawals(bytes32)": "a14238e7", "guardian()": "452a9320", "initialize(address,address,address)": "c0c53b8b", "isOutputFinalized(uint256)": "6dbffb78", "l2Oracle()": "9b5f694a", "l2Sender()": "9bf62d82", "minimumGasLimit(uint64)": "a35d99df", "params()": "cff0ab96", "paused()": "5c975abb", "proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])": "4870496f", "provenWithdrawals(bytes32)": "e965084c", "superchainConfig()": "35e80ab3", "systemConfig()": "33d7e2bd", "version()": "54fd4d50" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasEstimation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LargeCalldata\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutOfGas\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SmallGasLimit\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"opaqueData\",\"type\":\"bytes\"}],\"name\":\"TransactionDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"withdrawalHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"WithdrawalFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"withdrawalHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"WithdrawalProven\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isCreation\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"depositTransaction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"donateETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"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\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.WithdrawalTransaction\",\"name\":\"_tx\",\"type\":\"tuple\"}],\"name\":\"finalizeWithdrawalTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"finalizedWithdrawals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"_l2Oracle\",\"type\":\"address\"},{\"internalType\":\"contract SystemConfig\",\"name\":\"_systemConfig\",\"type\":\"address\"},{\"internalType\":\"contract SuperchainConfig\",\"name\":\"_superchainConfig\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"}],\"name\":\"isOutputFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Oracle\",\"outputs\":[{\"internalType\":\"contract L2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Sender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_byteCount\",\"type\":\"uint64\"}],\"name\":\"minimumGasLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"params\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"prevBaseFee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"prevBoughtGas\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"prevBlockNum\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused_\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"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\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Types.WithdrawalTransaction\",\"name\":\"_tx\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"latestBlockhash\",\"type\":\"bytes32\"}],\"internalType\":\"struct Types.OutputRootProof\",\"name\":\"_outputRootProof\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"_withdrawalProof\",\"type\":\"bytes[]\"}],\"name\":\"proveWithdrawalTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"provenWithdrawals\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"timestamp\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2OutputIndex\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"superchainConfig\",\"outputs\":[{\"internalType\":\"contract SuperchainConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"systemConfig\",\"outputs\":[{\"internalType\":\"contract SystemConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:proxied\":\"@title OptimismPortal\",\"events\":{\"TransactionDeposited(address,address,uint256,bytes)\":{\"params\":{\"from\":\"Address that triggered the deposit transaction.\",\"opaqueData\":\"ABI encoded deposit data to be parsed off-chain.\",\"to\":\"Address that the deposit transaction is directed to.\",\"version\":\"Version of this deposit transaction event.\"}},\"WithdrawalFinalized(bytes32,bool)\":{\"params\":{\"success\":\"Whether the withdrawal transaction was successful.\",\"withdrawalHash\":\"Hash of the withdrawal transaction.\"}},\"WithdrawalProven(bytes32,address,address)\":{\"params\":{\"from\":\"Address that triggered the withdrawal transaction.\",\"to\":\"Address that the withdrawal transaction is directed to.\",\"withdrawalHash\":\"Hash of the withdrawal transaction.\"}}},\"kind\":\"dev\",\"methods\":{\"depositTransaction(address,uint256,uint64,bool,bytes)\":{\"params\":{\"_data\":\"Data to trigger the recipient with.\",\"_gasLimit\":\"Amount of L2 gas to purchase by burning gas on L1.\",\"_isCreation\":\"Whether or not the transaction is a contract creation.\",\"_to\":\"Target address on L2.\",\"_value\":\"ETH value to send to the recipient.\"}},\"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))\":{\"params\":{\"_tx\":\"Withdrawal transaction to finalize.\"}},\"guardian()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Address of the guardian.\"}},\"initialize(address,address,address)\":{\"params\":{\"_l2Oracle\":\"Contract of the L2OutputOracle.\",\"_superchainConfig\":\"Contract of the SuperchainConfig.\",\"_systemConfig\":\"Contract of the SystemConfig.\"}},\"isOutputFinalized(uint256)\":{\"params\":{\"_l2OutputIndex\":\"Index of the L2 output to check.\"},\"returns\":{\"_0\":\"Whether or not the output is finalized.\"}},\"minimumGasLimit(uint64)\":{\"params\":{\"_byteCount\":\"Number of bytes in the calldata.\"},\"returns\":{\"_0\":\"The minimum gas limit for a deposit.\"}},\"paused()\":{\"returns\":{\"paused_\":\"Whether or not the contract is paused.\"}},\"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])\":{\"params\":{\"_l2OutputIndex\":\"L2 output index to prove against.\",\"_outputRootProof\":\"Inclusion proof of the L2ToL1MessagePasser contract's storage root.\",\"_tx\":\"Withdrawal transaction to finalize.\",\"_withdrawalProof\":\"Inclusion proof of the withdrawal in L2ToL1MessagePasser contract.\"}}},\"stateVariables\":{\"l2Oracle\":{\"custom:network-specific\":\"\"},\"spacer_53_0_1\":{\"custom:legacy\":\"@custom:spacer paused\"},\"systemConfig\":{\"custom:network-specific\":\"\"},\"version\":{\"custom:semver\":\"2.6.0\"}},\"version\":1},\"userdoc\":{\"errors\":{\"BadTarget()\":[{\"notice\":\"Error for when a deposit or withdrawal is to a bad target.\"}],\"CallPaused()\":[{\"notice\":\"Error for when a method cannot be called when paused. This could be renamed         to `Paused` in the future, but it collides with the `Paused` event.\"}],\"GasEstimation()\":[{\"notice\":\"Error for special gas estimation.\"}],\"LargeCalldata()\":[{\"notice\":\"Error for when a deposit has too much calldata.\"}],\"OutOfGas()\":[{\"notice\":\"Error returned when too much gas resource is consumed.\"}],\"SmallGasLimit()\":[{\"notice\":\"Error for when a deposit has too small of a gas limit.\"}]},\"events\":{\"TransactionDeposited(address,address,uint256,bytes)\":{\"notice\":\"Emitted when a transaction is deposited from L1 to L2.         The parameters of this event are read by the rollup node and used to derive deposit         transactions on L2.\"},\"WithdrawalFinalized(bytes32,bool)\":{\"notice\":\"Emitted when a withdrawal transaction is finalized.\"},\"WithdrawalProven(bytes32,address,address)\":{\"notice\":\"Emitted when a withdrawal transaction is proven.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs the OptimismPortal contract.\"},\"depositTransaction(address,uint256,uint64,bool,bytes)\":{\"notice\":\"Accepts deposits of ETH and data, and emits a TransactionDeposited event for use in         deriving deposit transactions. Note that if a deposit is made by a contract, its         address will be aliased when retrieved using `tx.origin` or `msg.sender`. Consider         using the CrossDomainMessenger contracts for a simpler developer experience.\"},\"donateETH()\":{\"notice\":\"Accepts ETH value without triggering a deposit to L2.         This function mainly exists for the sake of the migration between the legacy         Optimism system and Bedrock.\"},\"finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))\":{\"notice\":\"Finalizes a withdrawal transaction.\"},\"finalizedWithdrawals(bytes32)\":{\"notice\":\"A list of withdrawal hashes which have been successfully finalized.\"},\"guardian()\":{\"notice\":\"Getter function for the address of the guardian.         Public getter is legacy and will be removed in the future. Use `SuperchainConfig.guardian()` instead.\"},\"initialize(address,address,address)\":{\"notice\":\"Initializer.\"},\"isOutputFinalized(uint256)\":{\"notice\":\"Determine if a given output is finalized.         Reverts if the call to l2Oracle.getL2Output reverts.         Returns a boolean otherwise.\"},\"l2Oracle()\":{\"notice\":\"Contract of the L2OutputOracle.\"},\"l2Sender()\":{\"notice\":\"Address of the L2 account which initiated a withdrawal in this transaction.         If the of this variable is the default L2 sender address, then we are NOT inside of         a call to finalizeWithdrawalTransaction.\"},\"minimumGasLimit(uint64)\":{\"notice\":\"Computes the minimum gas limit for a deposit.         The minimum gas limit linearly increases based on the size of the calldata.         This is to prevent users from creating L2 resource usage without paying for it.         This function can be used when interacting with the portal to ensure forwards         compatibility.\"},\"params()\":{\"notice\":\"EIP-1559 style gas parameters.\"},\"paused()\":{\"notice\":\"Getter for the current paused status.\"},\"proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])\":{\"notice\":\"Proves a withdrawal transaction.\"},\"provenWithdrawals(bytes32)\":{\"notice\":\"A mapping of withdrawal hashes to `ProvenWithdrawal` data.\"},\"superchainConfig()\":{\"notice\":\"Contract of the Superchain Config.\"},\"systemConfig()\":{\"notice\":\"Contract of the SystemConfig.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"notice\":\"The OptimismPortal is a low-level contract responsible for passing messages between L1         and L2. Messages sent directly to the OptimismPortal have no form of replayability.         Users are encouraged to use the L1CrossDomainMessenger for a higher-level interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L1/OptimismPortal.sol\":\"OptimismPortal\"},\"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/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/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/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": [], "type": "error", "name": "BadTarget" }, { "inputs": [], "type": "error", "name": "CallPaused" }, { "inputs": [], "type": "error", "name": "GasEstimation" }, { "inputs": [], "type": "error", "name": "LargeCalldata" }, { "inputs": [], "type": "error", "name": "OutOfGas" }, { "inputs": [], "type": "error", "name": "SmallGasLimit" }, { "inputs": [{ "internalType": "uint8", "name": "version", "type": "uint8", "indexed": false }], "type": "event", "name": "Initialized", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "from", "type": "address", "indexed": true }, { "internalType": "address", "name": "to", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "version", "type": "uint256", "indexed": true }, { "internalType": "bytes", "name": "opaqueData", "type": "bytes", "indexed": false }], "type": "event", "name": "TransactionDeposited", "anonymous": false }, { "inputs": [{ "internalType": "bytes32", "name": "withdrawalHash", "type": "bytes32", "indexed": true }, { "internalType": "bool", "name": "success", "type": "bool", "indexed": false }], "type": "event", "name": "WithdrawalFinalized", "anonymous": false }, { "inputs": [{ "internalType": "bytes32", "name": "withdrawalHash", "type": "bytes32", "indexed": true }, { "internalType": "address", "name": "from", "type": "address", "indexed": true }, { "internalType": "address", "name": "to", "type": "address", "indexed": true }], "type": "event", "name": "WithdrawalProven", "anonymous": false }, { "inputs": [{ "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_value", "type": "uint256" }, { "internalType": "uint64", "name": "_gasLimit", "type": "uint64" }, { "internalType": "bool", "name": "_isCreation", "type": "bool" }, { "internalType": "bytes", "name": "_data", "type": "bytes" }], "stateMutability": "payable", "type": "function", "name": "depositTransaction" }, { "inputs": [], "stateMutability": "payable", "type": "function", "name": "donateETH" }, { "inputs": [{ "internalType": "struct Types.WithdrawalTransaction", "name": "_tx", "type": "tuple", "components": [{ "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": "gasLimit", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" }] }], "stateMutability": "nonpayable", "type": "function", "name": "finalizeWithdrawalTransaction" }, { "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], "stateMutability": "view", "type": "function", "name": "finalizedWithdrawals", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "guardian", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "contract L2OutputOracle", "name": "_l2Oracle", "type": "address" }, { "internalType": "contract SystemConfig", "name": "_systemConfig", "type": "address" }, { "internalType": "contract SuperchainConfig", "name": "_superchainConfig", "type": "address" }], "stateMutability": "nonpayable", "type": "function", "name": "initialize" }, { "inputs": [{ "internalType": "uint256", "name": "_l2OutputIndex", "type": "uint256" }], "stateMutability": "view", "type": "function", "name": "isOutputFinalized", "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "l2Oracle", "outputs": [{ "internalType": "contract L2OutputOracle", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "l2Sender", "outputs": [{ "internalType": "address", "name": "", "type": "address" }] }, { "inputs": [{ "internalType": "uint64", "name": "_byteCount", "type": "uint64" }], "stateMutability": "pure", "type": "function", "name": "minimumGasLimit", "outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "params", "outputs": [{ "internalType": "uint128", "name": "prevBaseFee", "type": "uint128" }, { "internalType": "uint64", "name": "prevBoughtGas", "type": "uint64" }, { "internalType": "uint64", "name": "prevBlockNum", "type": "uint64" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "paused", "outputs": [{ "internalType": "bool", "name": "paused_", "type": "bool" }] }, { "inputs": [{ "internalType": "struct Types.WithdrawalTransaction", "name": "_tx", "type": "tuple", "components": [{ "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": "gasLimit", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" }] }, { "internalType": "uint256", "name": "_l2OutputIndex", "type": "uint256" }, { "internalType": "struct Types.OutputRootProof", "name": "_outputRootProof", "type": "tuple", "components": [{ "internalType": "bytes32", "name": "version", "type": "bytes32" }, { "internalType": "bytes32", "name": "stateRoot", "type": "bytes32" }, { "internalType": "bytes32", "name": "messagePasserStorageRoot", "type": "bytes32" }, { "internalType": "bytes32", "name": "latestBlockhash", "type": "bytes32" }] }, { "internalType": "bytes[]", "name": "_withdrawalProof", "type": "bytes[]" }], "stateMutability": "nonpayable", "type": "function", "name": "proveWithdrawalTransaction" }, { "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], "stateMutability": "view", "type": "function", "name": "provenWithdrawals", "outputs": [{ "internalType": "bytes32", "name": "outputRoot", "type": "bytes32" }, { "internalType": "uint128", "name": "timestamp", "type": "uint128" }, { "internalType": "uint128", "name": "l2OutputIndex", "type": "uint128" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "superchainConfig", "outputs": [{ "internalType": "contract SuperchainConfig", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "systemConfig", "outputs": [{ "internalType": "contract SystemConfig", "name": "", "type": "address" }] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "version", "outputs": [{ "internalType": "string", "name": "", "type": "string" }] }, { "inputs": [], "stateMutability": "payable", "type": "receive" }], "devdoc": { "kind": "dev", "methods": { "depositTransaction(address,uint256,uint64,bool,bytes)": { "params": { "_data": "Data to trigger the recipient with.", "_gasLimit": "Amount of L2 gas to purchase by burning gas on L1.", "_isCreation": "Whether or not the transaction is a contract creation.", "_to": "Target address on L2.", "_value": "ETH value to send to the recipient." } }, "finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))": { "params": { "_tx": "Withdrawal transaction to finalize." } }, "guardian()": { "custom:legacy": "", "returns": { "_0": "Address of the guardian." } }, "initialize(address,address,address)": { "params": { "_l2Oracle": "Contract of the L2OutputOracle.", "_superchainConfig": "Contract of the SuperchainConfig.", "_systemConfig": "Contract of the SystemConfig." } }, "isOutputFinalized(uint256)": { "params": { "_l2OutputIndex": "Index of the L2 output to check." }, "returns": { "_0": "Whether or not the output is finalized." } }, "minimumGasLimit(uint64)": { "params": { "_byteCount": "Number of bytes in the calldata." }, "returns": { "_0": "The minimum gas limit for a deposit." } }, "paused()": { "returns": { "paused_": "Whether or not the contract is paused." } }, "proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])": { "params": { "_l2OutputIndex": "L2 output index to prove against.", "_outputRootProof": "Inclusion proof of the L2ToL1MessagePasser contract's storage root.", "_tx": "Withdrawal transaction to finalize.", "_withdrawalProof": "Inclusion proof of the withdrawal in L2ToL1MessagePasser contract." } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": { "constructor": { "notice": "Constructs the OptimismPortal contract." }, "depositTransaction(address,uint256,uint64,bool,bytes)": { "notice": "Accepts deposits of ETH and data, and emits a TransactionDeposited event for use in         deriving deposit transactions. Note that if a deposit is made by a contract, its         address will be aliased when retrieved using `tx.origin` or `msg.sender`. Consider         using the CrossDomainMessenger contracts for a simpler developer experience." }, "donateETH()": { "notice": "Accepts ETH value without triggering a deposit to L2.         This function mainly exists for the sake of the migration between the legacy         Optimism system and Bedrock." }, "finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))": { "notice": "Finalizes a withdrawal transaction." }, "finalizedWithdrawals(bytes32)": { "notice": "A list of withdrawal hashes which have been successfully finalized." }, "guardian()": { "notice": "Getter function for the address of the guardian.         Public getter is legacy and will be removed in the future. Use `SuperchainConfig.guardian()` instead." }, "initialize(address,address,address)": { "notice": "Initializer." }, "isOutputFinalized(uint256)": { "notice": "Determine if a given output is finalized.         Reverts if the call to l2Oracle.getL2Output reverts.         Returns a boolean otherwise." }, "l2Oracle()": { "notice": "Contract of the L2OutputOracle." }, "l2Sender()": { "notice": "Address of the L2 account which initiated a withdrawal in this transaction.         If the of this variable is the default L2 sender address, then we are NOT inside of         a call to finalizeWithdrawalTransaction." }, "minimumGasLimit(uint64)": { "notice": "Computes the minimum gas limit for a deposit.         The minimum gas limit linearly increases based on the size of the calldata.         This is to prevent users from creating L2 resource usage without paying for it.         This function can be used when interacting with the portal to ensure forwards         compatibility." }, "params()": { "notice": "EIP-1559 style gas parameters." }, "paused()": { "notice": "Getter for the current paused status." }, "proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])": { "notice": "Proves a withdrawal transaction." }, "provenWithdrawals(bytes32)": { "notice": "A mapping of withdrawal hashes to `ProvenWithdrawal` data." }, "superchainConfig()": { "notice": "Contract of the Superchain Config." }, "systemConfig()": { "notice": "Contract of the SystemConfig." }, "version()": { "notice": "Semantic version." } }, "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/OptimismPortal.sol": "OptimismPortal" }, "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/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/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/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": 49534, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "_initialized", "offset": 0, "slot": "0", "type": "t_uint8" }, { "astId": 49537, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "_initializing", "offset": 1, "slot": "0", "type": "t_bool" }, { "astId": 88262, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "params", "offset": 0, "slot": "1", "type": "t_struct(ResourceParams)88245_storage" }, { "astId": 88267, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "__gap", "offset": 0, "slot": "2", "type": "t_array(t_uint256)48_storage" }, { "astId": 86489, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "l2Sender", "offset": 0, "slot": "50", "type": "t_address" }, { "astId": 86494, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "finalizedWithdrawals", "offset": 0, "slot": "51", "type": "t_mapping(t_bytes32,t_bool)" }, { "astId": 86500, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "provenWithdrawals", "offset": 0, "slot": "52", "type": "t_mapping(t_bytes32,t_struct(ProvenWithdrawal)86478_storage)" }, { "astId": 86503, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "spacer_53_0_1", "offset": 0, "slot": "53", "type": "t_bool" }, { "astId": 86507, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "superchainConfig", "offset": 1, "slot": "53", "type": "t_contract(SuperchainConfig)88793" }, { "astId": 86511, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "l2Oracle", "offset": 0, "slot": "54", "type": "t_contract(L2OutputOracle)86435" }, { "astId": 86515, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "systemConfig", "offset": 0, "slot": "55", "type": "t_contract(SystemConfig)89607" }], "types": { "t_address": { "encoding": "inplace", "label": "address", "numberOfBytes": "20" }, "t_array(t_uint256)48_storage": { "encoding": "inplace", "label": "uint256[48]", "numberOfBytes": "1536", "base": "t_uint256" }, "t_bool": { "encoding": "inplace", "label": "bool", "numberOfBytes": "1" }, "t_bytes32": { "encoding": "inplace", "label": "bytes32", "numberOfBytes": "32" }, "t_contract(L2OutputOracle)86435": { "encoding": "inplace", "label": "contract L2OutputOracle", "numberOfBytes": "20" }, "t_contract(SuperchainConfig)88793": { "encoding": "inplace", "label": "contract SuperchainConfig", "numberOfBytes": "20" }, "t_contract(SystemConfig)89607": { "encoding": "inplace", "label": "contract SystemConfig", "numberOfBytes": "20" }, "t_mapping(t_bytes32,t_bool)": { "encoding": "mapping", "key": "t_bytes32", "label": "mapping(bytes32 => bool)", "numberOfBytes": "32", "value": "t_bool" }, "t_mapping(t_bytes32,t_struct(ProvenWithdrawal)86478_storage)": { "encoding": "mapping", "key": "t_bytes32", "label": "mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal)", "numberOfBytes": "32", "value": "t_struct(ProvenWithdrawal)86478_storage" }, "t_struct(ProvenWithdrawal)86478_storage": { "encoding": "inplace", "label": "struct OptimismPortal.ProvenWithdrawal", "numberOfBytes": "64", "members": [{ "astId": 86473, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "outputRoot", "offset": 0, "slot": "0", "type": "t_bytes32" }, { "astId": 86475, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "timestamp", "offset": 0, "slot": "1", "type": "t_uint128" }, { "astId": 86477, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "l2OutputIndex", "offset": 16, "slot": "1", "type": "t_uint128" }] }, "t_struct(ResourceParams)88245_storage": { "encoding": "inplace", "label": "struct ResourceMetering.ResourceParams", "numberOfBytes": "32", "members": [{ "astId": 88240, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "prevBaseFee", "offset": 0, "slot": "0", "type": "t_uint128" }, { "astId": 88242, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "prevBoughtGas", "offset": 16, "slot": "0", "type": "t_uint64" }, { "astId": 88244, "contract": "src/L1/OptimismPortal.sol:OptimismPortal", "label": "prevBlockNum", "offset": 24, "slot": "0", "type": "t_uint64" }] }, "t_uint128": { "encoding": "inplace", "label": "uint128", "numberOfBytes": "16" }, "t_uint256": { "encoding": "inplace", "label": "uint256", "numberOfBytes": "32" }, "t_uint64": { "encoding": "inplace", "label": "uint64", "numberOfBytes": "8" }, "t_uint8": { "encoding": "inplace", "label": "uint8", "numberOfBytes": "1" } } }, "userdoc": { "version": 1, "kind": "user", "methods": { "constructor": { "notice": "Constructs the OptimismPortal contract." }, "depositTransaction(address,uint256,uint64,bool,bytes)": { "notice": "Accepts deposits of ETH and data, and emits a TransactionDeposited event for use in         deriving deposit transactions. Note that if a deposit is made by a contract, its         address will be aliased when retrieved using `tx.origin` or `msg.sender`. Consider         using the CrossDomainMessenger contracts for a simpler developer experience." }, "donateETH()": { "notice": "Accepts ETH value without triggering a deposit to L2.         This function mainly exists for the sake of the migration between the legacy         Optimism system and Bedrock." }, "finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))": { "notice": "Finalizes a withdrawal transaction." }, "finalizedWithdrawals(bytes32)": { "notice": "A list of withdrawal hashes which have been successfully finalized." }, "guardian()": { "notice": "Getter function for the address of the guardian.         Public getter is legacy and will be removed in the future. Use `SuperchainConfig.guardian()` instead." }, "initialize(address,address,address)": { "notice": "Initializer." }, "isOutputFinalized(uint256)": { "notice": "Determine if a given output is finalized.         Reverts if the call to l2Oracle.getL2Output reverts.         Returns a boolean otherwise." }, "l2Oracle()": { "notice": "Contract of the L2OutputOracle." }, "l2Sender()": { "notice": "Address of the L2 account which initiated a withdrawal in this transaction.         If the of this variable is the default L2 sender address, then we are NOT inside of         a call to finalizeWithdrawalTransaction." }, "minimumGasLimit(uint64)": { "notice": "Computes the minimum gas limit for a deposit.         The minimum gas limit linearly increases based on the size of the calldata.         This is to prevent users from creating L2 resource usage without paying for it.         This function can be used when interacting with the portal to ensure forwards         compatibility." }, "params()": { "notice": "EIP-1559 style gas parameters." }, "paused()": { "notice": "Getter for the current paused status." }, "proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])": { "notice": "Proves a withdrawal transaction." }, "provenWithdrawals(bytes32)": { "notice": "A mapping of withdrawal hashes to `ProvenWithdrawal` data." }, "superchainConfig()": { "notice": "Contract of the Superchain Config." }, "systemConfig()": { "notice": "Contract of the SystemConfig." }, "version()": { "notice": "Semantic version." } }, "events": { "TransactionDeposited(address,address,uint256,bytes)": { "notice": "Emitted when a transaction is deposited from L1 to L2.         The parameters of this event are read by the rollup node and used to derive deposit         transactions on L2." }, "WithdrawalFinalized(bytes32,bool)": { "notice": "Emitted when a withdrawal transaction is finalized." }, "WithdrawalProven(bytes32,address,address)": { "notice": "Emitted when a withdrawal transaction is proven." } }, "errors": { "BadTarget()": [{ "notice": "Error for when a deposit or withdrawal is to a bad target." }], "CallPaused()": [{ "notice": "Error for when a method cannot be called when paused. This could be renamed         to `Paused` in the future, but it collides with the `Paused` event." }], "GasEstimation()": [{ "notice": "Error for special gas estimation." }], "LargeCalldata()": [{ "notice": "Error for when a deposit has too much calldata." }], "OutOfGas()": [{ "notice": "Error returned when too much gas resource is consumed." }], "SmallGasLimit()": [{ "notice": "Error for when a deposit has too small of a gas limit." }] }, "notice": "The OptimismPortal is a low-level contract responsible for passing messages between L1         and L2. Messages sent directly to the OptimismPortal have no form of replayability.         Users are encouraged to use the L1CrossDomainMessenger for a higher-level interface." }, "devdoc": { "version": 1, "kind": "dev", "methods": { "depositTransaction(address,uint256,uint64,bool,bytes)": { "params": { "_data": "Data to trigger the recipient with.", "_gasLimit": "Amount of L2 gas to purchase by burning gas on L1.", "_isCreation": "Whether or not the transaction is a contract creation.", "_to": "Target address on L2.", "_value": "ETH value to send to the recipient." } }, "finalizeWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes))": { "params": { "_tx": "Withdrawal transaction to finalize." } }, "guardian()": { "returns": { "_0": "Address of the guardian." } }, "initialize(address,address,address)": { "params": { "_l2Oracle": "Contract of the L2OutputOracle.", "_superchainConfig": "Contract of the SuperchainConfig.", "_systemConfig": "Contract of the SystemConfig." } }, "isOutputFinalized(uint256)": { "params": { "_l2OutputIndex": "Index of the L2 output to check." }, "returns": { "_0": "Whether or not the output is finalized." } }, "minimumGasLimit(uint64)": { "params": { "_byteCount": "Number of bytes in the calldata." }, "returns": { "_0": "The minimum gas limit for a deposit." } }, "paused()": { "returns": { "paused_": "Whether or not the contract is paused." } }, "proveWithdrawalTransaction((uint256,address,address,uint256,uint256,bytes),uint256,(bytes32,bytes32,bytes32,bytes32),bytes[])": { "params": { "_l2OutputIndex": "L2 output index to prove against.", "_outputRootProof": "Inclusion proof of the L2ToL1MessagePasser contract's storage root.", "_tx": "Withdrawal transaction to finalize.", "_withdrawalProof": "Inclusion proof of the withdrawal in L2ToL1MessagePasser contract." } } }, "events": { "TransactionDeposited(address,address,uint256,bytes)": { "params": { "from": "Address that triggered the deposit transaction.", "opaqueData": "ABI encoded deposit data to be parsed off-chain.", "to": "Address that the deposit transaction is directed to.", "version": "Version of this deposit transaction event." } }, "WithdrawalFinalized(bytes32,bool)": { "params": { "success": "Whether the withdrawal transaction was successful.", "withdrawalHash": "Hash of the withdrawal transaction." } }, "WithdrawalProven(bytes32,address,address)": { "params": { "from": "Address that triggered the withdrawal transaction.", "to": "Address that the withdrawal transaction is directed to.", "withdrawalHash": "Hash of the withdrawal transaction." } } } }, "ast": { "absolutePath": "src/L1/OptimismPortal.sol", "id": 87105, "exportedSymbols": { "AddressAliasHelper": [111913], "BadTarget": [103969], "CallPaused": [103990], "Constants": [103096], "GasEstimation": [103993], "Hashing": [103936], "ISemver": [109417], "Initializable": [49678], "L2OutputOracle": [86435], "LargeCalldata": [103972], "NoValue": [103984], "OnlyCustomGasToken": [103981], "OptimismPortal": [87104], "ResourceMetering": [88581], "SafeCall": [104213], "SecureMerkleTrie": [106033], "SmallGasLimit": [103975], "SuperchainConfig": [88793], "SystemConfig": [89607], "TransferFailed": [103978], "Types": [104349], "Unauthorized": [103987] }, "nodeType": "SourceUnit", "src": "32:20510:134", "nodes": [{ "id": 86437, "nodeType": "PragmaDirective", "src": "32:23:134", "nodes": [], "literals": ["solidity", "0.8", ".15"] }, { "id": 86439, "nodeType": "ImportDirective", "src": "57:86:134", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol", "file": "@openzeppelin/contracts/proxy/utils/Initializable.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 49679, "symbolAliases": [{ "foreign": { "id": 86438, "name": "Initializable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49678, "src": "66:13:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86441, "nodeType": "ImportDirective", "src": "144:54:134", "nodes": [], "absolutePath": "src/libraries/SafeCall.sol", "file": "src/libraries/SafeCall.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 104214, "symbolAliases": [{ "foreign": { "id": 86440, "name": "SafeCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104213, "src": "153:8:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86443, "nodeType": "ImportDirective", "src": "199:59:134", "nodes": [], "absolutePath": "src/L1/L2OutputOracle.sol", "file": "src/L1/L2OutputOracle.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 86436, "symbolAliases": [{ "foreign": { "id": 86442, "name": "L2OutputOracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86435, "src": "208:14:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86445, "nodeType": "ImportDirective", "src": "259:55:134", "nodes": [], "absolutePath": "src/L1/SystemConfig.sol", "file": "src/L1/SystemConfig.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 89608, "symbolAliases": [{ "foreign": { "id": 86444, "name": "SystemConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 89607, "src": "268:12:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86447, "nodeType": "ImportDirective", "src": "315:63:134", "nodes": [], "absolutePath": "src/L1/SuperchainConfig.sol", "file": "src/L1/SuperchainConfig.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 88794, "symbolAliases": [{ "foreign": { "id": 86446, "name": "SuperchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 88793, "src": "324:16:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86449, "nodeType": "ImportDirective", "src": "379:56:134", "nodes": [], "absolutePath": "src/libraries/Constants.sol", "file": "src/libraries/Constants.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 103097, "symbolAliases": [{ "foreign": { "id": 86448, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103096, "src": "388:9:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86451, "nodeType": "ImportDirective", "src": "436:48:134", "nodes": [], "absolutePath": "src/libraries/Types.sol", "file": "src/libraries/Types.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 104350, "symbolAliases": [{ "foreign": { "id": 86450, "name": "Types", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104349, "src": "445:5:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86453, "nodeType": "ImportDirective", "src": "485:52:134", "nodes": [], "absolutePath": "src/libraries/Hashing.sol", "file": "src/libraries/Hashing.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 103937, "symbolAliases": [{ "foreign": { "id": 86452, "name": "Hashing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103936, "src": "494:7:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86455, "nodeType": "ImportDirective", "src": "538:75:134", "nodes": [], "absolutePath": "src/libraries/trie/SecureMerkleTrie.sol", "file": "src/libraries/trie/SecureMerkleTrie.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 106034, "symbolAliases": [{ "foreign": { "id": 86454, "name": "SecureMerkleTrie", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 106033, "src": "547:16:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86457, "nodeType": "ImportDirective", "src": "614:71:134", "nodes": [], "absolutePath": "src/vendor/AddressAliasHelper.sol", "file": "src/vendor/AddressAliasHelper.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 111914, "symbolAliases": [{ "foreign": { "id": 86456, "name": "AddressAliasHelper", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111913, "src": "623:18:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86459, "nodeType": "ImportDirective", "src": "686:63:134", "nodes": [], "absolutePath": "src/L1/ResourceMetering.sol", "file": "src/L1/ResourceMetering.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 88582, "symbolAliases": [{ "foreign": { "id": 86458, "name": "ResourceMetering", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 88581, "src": "695:16:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86461, "nodeType": "ImportDirective", "src": "750:52:134", "nodes": [], "absolutePath": "src/universal/ISemver.sol", "file": "src/universal/ISemver.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 109418, "symbolAliases": [{ "foreign": { "id": 86460, "name": "ISemver", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 109417, "src": "759:7:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86463, "nodeType": "ImportDirective", "src": "803:56:134", "nodes": [], "absolutePath": "src/libraries/Constants.sol", "file": "src/libraries/Constants.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 103097, "symbolAliases": [{ "foreign": { "id": 86462, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103096, "src": "812:9:134", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" }], "unitAlias": "" }, { "id": 86464, "nodeType": "ImportDirective", "src": "860:40:134", "nodes": [], "absolutePath": "src/libraries/PortalErrors.sol", "file": "src/libraries/PortalErrors.sol", "nameLocation": "-1:-1:-1", "scope": 87105, "sourceUnit": 103994, "symbolAliases": [], "unitAlias": "" }, { "id": 87104, "nodeType": "ContractDefinition", "src": "1240:19301:134", "nodes": [{ "id": 86478, "nodeType": "StructDefinition", "src": "1608:117:134", "nodes": [], "canonicalName": "OptimismPortal.ProvenWithdrawal", "members": [{ "constant": false, "id": 86473, "mutability": "mutable", "name": "outputRoot", "nameLocation": "1650:10:134", "nodeType": "VariableDeclaration", "scope": 86478, "src": "1642:18:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 86472, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1642:7:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" }, { "constant": false, "id": 86475, "mutability": "mutable", "name": "timestamp", "nameLocation": "1678:9:134", "nodeType": "VariableDeclaration", "scope": 86478, "src": "1670:17:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" }, "typeName": { "id": 86474, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "1670:7:134", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, "visibility": "internal" }, { "constant": false, "id": 86477, "mutability": "mutable", "name": "l2OutputIndex", "nameLocation": "1705:13:134", "nodeType": "VariableDeclaration", "scope": 86478, "src": "1697:21:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" }, "typeName": { "id": 86476, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "1697:7:134", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, "visibility": "internal" }], "name": "ProvenWithdrawal", "nameLocation": "1615:16:134", "scope": 87104, "visibility": "public" }, { "id": 86482, "nodeType": "VariableDeclaration", "src": "1777:45:134", "nodes": [], "constant": true, "documentation": { "id": 86479, "nodeType": "StructuredDocumentation", "src": "1731:41:134", "text": "@notice Version of the deposit event." }, "mutability": "constant", "name": "DEPOSIT_VERSION", "nameLocation": "1803:15:134", "scope": 87104, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86480, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1777:7:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": { "hexValue": "30", "id": 86481, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1821:1:134", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "visibility": "internal" }, { "id": 86486, "nodeType": "VariableDeclaration", "src": "1918:60:134", "nodes": [], "constant": true, "documentation": { "id": 86483, "nodeType": "StructuredDocumentation", "src": "1829:84:134", "text": "@notice The L2 gas limit set when eth is deposited using the receive() function." }, "mutability": "constant", "name": "RECEIVE_DEFAULT_GAS_LIMIT", "nameLocation": "1943:25:134", "scope": 87104, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 86484, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "1918:6:134", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "value": { "hexValue": "3130305f303030", "id": 86485, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1971:7:134", "typeDescriptions": { "typeIdentifier": "t_rational_100000_by_1", "typeString": "int_const 100000" }, "value": "100_000" }, "visibility": "internal" }, { "id": 86489, "nodeType": "VariableDeclaration", "src": "2234:23:134", "nodes": [], "constant": false, "documentation": { "id": 86487, "nodeType": "StructuredDocumentation", "src": "1985:244:134", "text": "@notice Address of the L2 account which initiated a withdrawal in this transaction.\n         If the of this variable is the default L2 sender address, then we are NOT inside of\n         a call to finalizeWithdrawalTransaction." }, "functionSelector": "9bf62d82", "mutability": "mutable", "name": "l2Sender", "nameLocation": "2249:8:134", "scope": 87104, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86488, "name": "address", "nodeType": "ElementaryTypeName", "src": "2234:7:134", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "public" }, { "id": 86494, "nodeType": "VariableDeclaration", "src": "2348:52:134", "nodes": [], "constant": false, "documentation": { "id": 86490, "nodeType": "StructuredDocumentation", "src": "2264:79:134", "text": "@notice A list of withdrawal hashes which have been successfully finalized." }, "functionSelector": "a14238e7", "mutability": "mutable", "name": "finalizedWithdrawals", "nameLocation": "2380:20:134", "scope": 87104, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "typeName": { "id": 86493, "keyType": { "id": 86491, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2356:7:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "2348:24:134", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { "id": 86492, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2367:4:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "visibility": "public" }, { "id": 86500, "nodeType": "VariableDeclaration", "src": "2482:61:134", "nodes": [], "constant": false, "documentation": { "id": 86495, "nodeType": "StructuredDocumentation", "src": "2407:70:134", "text": "@notice A mapping of withdrawal hashes to `ProvenWithdrawal` data." }, "functionSelector": "e965084c", "mutability": "mutable", "name": "provenWithdrawals", "nameLocation": "2526:17:134", "scope": 87104, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ProvenWithdrawal_$86478_storage_$", "typeString": "mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal)" }, "typeName": { "id": 86499, "keyType": { "id": 86496, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2490:7:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "2482:36:134", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ProvenWithdrawal_$86478_storage_$", "typeString": "mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal)" }, "valueType": { "id": 86498, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86497, "name": "ProvenWithdrawal", "nodeType": "IdentifierPath", "referencedDeclaration": 86478, "src": "2501:16:134" }, "referencedDeclaration": 86478, "src": "2501:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_storage_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal" } } }, "visibility": "public" }, { "id": 86503, "nodeType": "VariableDeclaration", "src": "2655:26:134", "nodes": [], "constant": false, "documentation": { "id": 86501, "nodeType": "StructuredDocumentation", "src": "2550:100:134", "text": "@custom:legacy\n @custom:spacer paused\n @notice Spacer for backwards compatibility." }, "mutability": "mutable", "name": "spacer_53_0_1", "nameLocation": "2668:13:134", "scope": 87104, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 86502, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2655:4:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "private" }, { "id": 86507, "nodeType": "VariableDeclaration", "src": "2739:40:134", "nodes": [], "constant": false, "documentation": { "id": 86504, "nodeType": "StructuredDocumentation", "src": "2688:46:134", "text": "@notice Contract of the Superchain Config." }, "functionSelector": "35e80ab3", "mutability": "mutable", "name": "superchainConfig", "nameLocation": "2763:16:134", "scope": 87104, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" }, "typeName": { "id": 86506, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86505, "name": "SuperchainConfig", "nodeType": "IdentifierPath", "referencedDeclaration": 88793, "src": "2739:16:134" }, "referencedDeclaration": 88793, "src": "2739:16:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "visibility": "public" }, { "id": 86511, "nodeType": "VariableDeclaration", "src": "2867:30:134", "nodes": [], "constant": false, "documentation": { "id": 86508, "nodeType": "StructuredDocumentation", "src": "2786:76:134", "text": "@notice Contract of the L2OutputOracle.\n @custom:network-specific" }, "functionSelector": "9b5f694a", "mutability": "mutable", "name": "l2Oracle", "nameLocation": "2889:8:134", "scope": 87104, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" }, "typeName": { "id": 86510, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86509, "name": "L2OutputOracle", "nodeType": "IdentifierPath", "referencedDeclaration": 86435, "src": "2867:14:134" }, "referencedDeclaration": 86435, "src": "2867:14:134", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" } }, "visibility": "public" }, { "id": 86515, "nodeType": "VariableDeclaration", "src": "2983:32:134", "nodes": [], "constant": false, "documentation": { "id": 86512, "nodeType": "StructuredDocumentation", "src": "2904:74:134", "text": "@notice Contract of the SystemConfig.\n @custom:network-specific" }, "functionSelector": "33d7e2bd", "mutability": "mutable", "name": "systemConfig", "nameLocation": "3003:12:134", "scope": 87104, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SystemConfig_$89607", "typeString": "contract SystemConfig" }, "typeName": { "id": 86514, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86513, "name": "SystemConfig", "nodeType": "IdentifierPath", "referencedDeclaration": 89607, "src": "2983:12:134" }, "referencedDeclaration": 89607, "src": "2983:12:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SystemConfig_$89607", "typeString": "contract SystemConfig" } }, "visibility": "public" }, { "id": 86526, "nodeType": "EventDefinition", "src": "3526:112:134", "nodes": [], "anonymous": false, "documentation": { "id": 86516, "nodeType": "StructuredDocumentation", "src": "3022:499:134", "text": "@notice Emitted when a transaction is deposited from L1 to L2.\n         The parameters of this event are read by the rollup node and used to derive deposit\n         transactions on L2.\n @param from       Address that triggered the deposit transaction.\n @param to         Address that the deposit transaction is directed to.\n @param version    Version of this deposit transaction event.\n @param opaqueData ABI encoded deposit data to be parsed off-chain." }, "eventSelector": "b3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32", "name": "TransactionDeposited", "nameLocation": "3532:20:134", "parameters": { "id": 86525, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86518, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "3569:4:134", "nodeType": "VariableDeclaration", "scope": 86526, "src": "3553:20:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86517, "name": "address", "nodeType": "ElementaryTypeName", "src": "3553:7:134", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 86520, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "3591:2:134", "nodeType": "VariableDeclaration", "scope": 86526, "src": "3575:18:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86519, "name": "address", "nodeType": "ElementaryTypeName", "src": "3575:7:134", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 86522, "indexed": true, "mutability": "mutable", "name": "version", "nameLocation": "3611:7:134", "nodeType": "VariableDeclaration", "scope": 86526, "src": "3595:23:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86521, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3595:7:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 86524, "indexed": false, "mutability": "mutable", "name": "opaqueData", "nameLocation": "3626:10:134", "nodeType": "VariableDeclaration", "scope": 86526, "src": "3620:16:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 86523, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3620:5:134", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "src": "3552:85:134" } }, { "id": 86535, "nodeType": "EventDefinition", "src": "3942:97:134", "nodes": [], "anonymous": false, "documentation": { "id": 86527, "nodeType": "StructuredDocumentation", "src": "3644:293:134", "text": "@notice Emitted when a withdrawal transaction is proven.\n @param withdrawalHash Hash of the withdrawal transaction.\n @param from           Address that triggered the withdrawal transaction.\n @param to             Address that the withdrawal transaction is directed to." }, "eventSelector": "67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f62", "name": "WithdrawalProven", "nameLocation": "3948:16:134", "parameters": { "id": 86534, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86529, "indexed": true, "mutability": "mutable", "name": "withdrawalHash", "nameLocation": "3981:14:134", "nodeType": "VariableDeclaration", "scope": 86535, "src": "3965:30:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 86528, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3965:7:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" }, { "constant": false, "id": 86531, "indexed": true, "mutability": "mutable", "name": "from", "nameLocation": "4013:4:134", "nodeType": "VariableDeclaration", "scope": 86535, "src": "3997:20:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86530, "name": "address", "nodeType": "ElementaryTypeName", "src": "3997:7:134", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 86533, "indexed": true, "mutability": "mutable", "name": "to", "nameLocation": "4035:2:134", "nodeType": "VariableDeclaration", "scope": 86535, "src": "4019:18:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86532, "name": "address", "nodeType": "ElementaryTypeName", "src": "4019:7:134", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "3964:74:134" } }, { "id": 86542, "nodeType": "EventDefinition", "src": "4260:72:134", "nodes": [], "anonymous": false, "documentation": { "id": 86536, "nodeType": "StructuredDocumentation", "src": "4045:210:134", "text": "@notice Emitted when a withdrawal transaction is finalized.\n @param withdrawalHash Hash of the withdrawal transaction.\n @param success        Whether the withdrawal transaction was successful." }, "eventSelector": "db5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b", "name": "WithdrawalFinalized", "nameLocation": "4266:19:134", "parameters": { "id": 86541, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86538, "indexed": true, "mutability": "mutable", "name": "withdrawalHash", "nameLocation": "4302:14:134", "nodeType": "VariableDeclaration", "scope": 86542, "src": "4286:30:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 86537, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "4286:7:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" }, { "constant": false, "id": 86540, "indexed": false, "mutability": "mutable", "name": "success", "nameLocation": "4323:7:134", "nodeType": "VariableDeclaration", "scope": 86542, "src": "4318:12:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 86539, "name": "bool", "nodeType": "ElementaryTypeName", "src": "4318:4:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "src": "4285:46:134" } }, { "id": 86553, "nodeType": "ModifierDefinition", "src": "4375:86:134", "nodes": [], "body": { "id": 86552, "nodeType": "Block", "src": "4400:61:134", "nodes": [], "statements": [{ "condition": { "arguments": [], "expression": { "argumentTypes": [], "id": 86545, "name": "paused", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86651, "src": "4414:6:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", "typeString": "function () view returns (bool)" } }, "id": 86546, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4414:8:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 86550, "nodeType": "IfStatement", "src": "4410:33:134", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 86547, "name": "CallPaused", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103990, "src": "4431:10:134", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 86548, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4431:12:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86549, "nodeType": "RevertStatement", "src": "4424:19:134" } }, { "id": 86551, "nodeType": "PlaceholderStatement", "src": "4453:1:134" }] }, "documentation": { "id": 86543, "nodeType": "StructuredDocumentation", "src": "4338:32:134", "text": "@notice Reverts when paused." }, "name": "whenNotPaused", "nameLocation": "4384:13:134", "parameters": { "id": 86544, "nodeType": "ParameterList", "parameters": [], "src": "4397:2:134" }, "virtual": false, "visibility": "internal" }, { "id": 86557, "nodeType": "VariableDeclaration", "src": "4530:40:134", "nodes": [], "baseFunctions": [109416], "constant": true, "documentation": { "id": 86554, "nodeType": "StructuredDocumentation", "src": "4467:58:134", "text": "@notice Semantic version.\n @custom:semver 2.6.0" }, "functionSelector": "54fd4d50", "mutability": "constant", "name": "version", "nameLocation": "4553:7:134", "scope": 87104, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 86555, "name": "string", "nodeType": "ElementaryTypeName", "src": "4530:6:134", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": { "hexValue": "322e362e30", "id": 86556, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4563:7:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_ad12b1ea91991aacd9b7a7ba82f559ec1ebe6024b70cee19177a7d0d7932dda1", "typeString": "literal_string \"2.6.0\"" }, "value": "2.6.0" }, "visibility": "public" }, { "id": 86583, "nodeType": "FunctionDefinition", "src": "4633:218:134", "nodes": [], "body": { "id": 86582, "nodeType": "Block", "src": "4647:204:134", "nodes": [], "statements": [{ "expression": { "arguments": [{ "arguments": [{ "arguments": [{ "hexValue": "30", "id": 86565, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4716:1:134", "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": 86564, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4708:7:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 86563, "name": "address", "nodeType": "ElementaryTypeName", "src": "4708:7:134", "typeDescriptions": {} } }, "id": 86566, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4708:10:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 86562, "name": "L2OutputOracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86435, "src": "4693:14:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_L2OutputOracle_$86435_$", "typeString": "type(contract L2OutputOracle)" } }, "id": 86567, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4693:26:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" } }, { "arguments": [{ "arguments": [{ "hexValue": "30", "id": 86571, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4769:1:134", "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": 86570, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4761:7:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 86569, "name": "address", "nodeType": "ElementaryTypeName", "src": "4761:7:134", "typeDescriptions": {} } }, "id": 86572, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4761:10:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 86568, "name": "SystemConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 89607, "src": "4748:12:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SystemConfig_$89607_$", "typeString": "type(contract SystemConfig)" } }, "id": 86573, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4748:24:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_SystemConfig_$89607", "typeString": "contract SystemConfig" } }, { "arguments": [{ "arguments": [{ "hexValue": "30", "id": 86577, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4830:1:134", "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": 86576, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4822:7:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 86575, "name": "address", "nodeType": "ElementaryTypeName", "src": "4822:7:134", "typeDescriptions": {} } }, "id": 86578, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4822:10:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "id": 86574, "name": "SuperchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 88793, "src": "4805:16:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SuperchainConfig_$88793_$", "typeString": "type(contract SuperchainConfig)" } }, "id": 86579, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4805:28:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" }, { "typeIdentifier": "t_contract$_SystemConfig_$89607", "typeString": "contract SystemConfig" }, { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" }], "id": 86561, "name": "initialize", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86627, "src": "4657:10:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_L2OutputOracle_$86435_$_t_contract$_SystemConfig_$89607_$_t_contract$_SuperchainConfig_$88793_$returns$__$", "typeString": "function (contract L2OutputOracle,contract SystemConfig,contract SuperchainConfig)" } }, "id": 86580, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": ["_l2Oracle", "_systemConfig", "_superchainConfig"], "nodeType": "FunctionCall", "src": "4657:187:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86581, "nodeType": "ExpressionStatement", "src": "4657:187:134" }] }, "documentation": { "id": 86558, "nodeType": "StructuredDocumentation", "src": "4577:51:134", "text": "@notice Constructs the OptimismPortal contract." }, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 86559, "nodeType": "ParameterList", "parameters": [], "src": "4644:2:134" }, "returnParameters": { "id": 86560, "nodeType": "ParameterList", "parameters": [], "src": "4647:0:134" }, "scope": 87104, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 86627, "nodeType": "FunctionDefinition", "src": "5069:435:134", "nodes": [], "body": { "id": 86626, "nodeType": "Block", "src": "5248:256:134", "nodes": [], "statements": [{ "expression": { "id": 86600, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86598, "name": "l2Oracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86511, "src": "5258:8:134", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 86599, "name": "_l2Oracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86587, "src": "5269:9:134", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" } }, "src": "5258:20:134", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" } }, "id": 86601, "nodeType": "ExpressionStatement", "src": "5258:20:134" }, { "expression": { "id": 86604, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86602, "name": "systemConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86515, "src": "5288:12:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SystemConfig_$89607", "typeString": "contract SystemConfig" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 86603, "name": "_systemConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86590, "src": "5303:13:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SystemConfig_$89607", "typeString": "contract SystemConfig" } }, "src": "5288:28:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SystemConfig_$89607", "typeString": "contract SystemConfig" } }, "id": 86605, "nodeType": "ExpressionStatement", "src": "5288:28:134" }, { "expression": { "id": 86608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86606, "name": "superchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86507, "src": "5326:16:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 86607, "name": "_superchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86593, "src": "5345:17:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "src": "5326:36:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "id": 86609, "nodeType": "ExpressionStatement", "src": "5326:36:134" }, { "condition": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 86615, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86610, "name": "l2Sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86489, "src": "5376:8:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [{ "hexValue": "30", "id": 86613, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5396:1:134", "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": 86612, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5388:7:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 86611, "name": "address", "nodeType": "ElementaryTypeName", "src": "5388:7:134", "typeDescriptions": {} } }, "id": 86614, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5388:10:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "5376:22:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 86622, "nodeType": "IfStatement", "src": "5372:91:134", "trueBody": { "id": 86621, "nodeType": "Block", "src": "5400:63:134", "statements": [{ "expression": { "id": 86619, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86616, "name": "l2Sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86489, "src": "5414:8:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 86617, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103096, "src": "5425:9:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Constants_$103096_$", "typeString": "type(library Constants)" } }, "id": 86618, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DEFAULT_L2_SENDER", "nodeType": "MemberAccess", "referencedDeclaration": 103058, "src": "5425:27:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "5414:38:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 86620, "nodeType": "ExpressionStatement", "src": "5414:38:134" }] } }, { "expression": { "arguments": [], "expression": { "argumentTypes": [], "id": 86623, "name": "__ResourceMetering_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 88580, "src": "5472:23:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 86624, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5472:25:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86625, "nodeType": "ExpressionStatement", "src": "5472:25:134" }] }, "documentation": { "id": 86584, "nodeType": "StructuredDocumentation", "src": "4857:207:134", "text": "@notice Initializer.\n @param _l2Oracle Contract of the L2OutputOracle.\n @param _systemConfig Contract of the SystemConfig.\n @param _superchainConfig Contract of the SuperchainConfig." }, "functionSelector": "c0c53b8b", "implemented": true, "kind": "function", "modifiers": [{ "id": 86596, "kind": "modifierInvocation", "modifierName": { "id": 86595, "name": "initializer", "nodeType": "IdentifierPath", "referencedDeclaration": 49598, "src": "5232:11:134" }, "nodeType": "ModifierInvocation", "src": "5232:11:134" }], "name": "initialize", "nameLocation": "5078:10:134", "parameters": { "id": 86594, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86587, "mutability": "mutable", "name": "_l2Oracle", "nameLocation": "5113:9:134", "nodeType": "VariableDeclaration", "scope": 86627, "src": "5098:24:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" }, "typeName": { "id": 86586, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86585, "name": "L2OutputOracle", "nodeType": "IdentifierPath", "referencedDeclaration": 86435, "src": "5098:14:134" }, "referencedDeclaration": 86435, "src": "5098:14:134", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" } }, "visibility": "internal" }, { "constant": false, "id": 86590, "mutability": "mutable", "name": "_systemConfig", "nameLocation": "5145:13:134", "nodeType": "VariableDeclaration", "scope": 86627, "src": "5132:26:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SystemConfig_$89607", "typeString": "contract SystemConfig" }, "typeName": { "id": 86589, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86588, "name": "SystemConfig", "nodeType": "IdentifierPath", "referencedDeclaration": 89607, "src": "5132:12:134" }, "referencedDeclaration": 89607, "src": "5132:12:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SystemConfig_$89607", "typeString": "contract SystemConfig" } }, "visibility": "internal" }, { "constant": false, "id": 86593, "mutability": "mutable", "name": "_superchainConfig", "nameLocation": "5185:17:134", "nodeType": "VariableDeclaration", "scope": 86627, "src": "5168:34:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" }, "typeName": { "id": 86592, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86591, "name": "SuperchainConfig", "nodeType": "IdentifierPath", "referencedDeclaration": 88793, "src": "5168:16:134" }, "referencedDeclaration": 88793, "src": "5168:16:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "visibility": "internal" }], "src": "5088:120:134" }, "returnParameters": { "id": 86597, "nodeType": "ParameterList", "parameters": [], "src": "5248:0:134" }, "scope": 87104, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 86638, "nodeType": "FunctionDefinition", "src": "5757:101:134", "nodes": [], "body": { "id": 86637, "nodeType": "Block", "src": "5807:51:134", "nodes": [], "statements": [{ "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 86633, "name": "superchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86507, "src": "5824:16:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "id": 86634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "guardian", "nodeType": "MemberAccess", "referencedDeclaration": 88693, "src": "5824:25:134", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", "typeString": "function () view external returns (address)" } }, "id": 86635, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5824:27:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "functionReturnParameters": 86632, "id": 86636, "nodeType": "Return", "src": "5817:34:134" }] }, "documentation": { "id": 86628, "nodeType": "StructuredDocumentation", "src": "5510:242:134", "text": "@notice Getter function for the address of the guardian.\n         Public getter is legacy and will be removed in the future. Use `SuperchainConfig.guardian()` instead.\n @return Address of the guardian.\n @custom:legacy" }, "functionSelector": "452a9320", "implemented": true, "kind": "function", "modifiers": [], "name": "guardian", "nameLocation": "5766:8:134", "parameters": { "id": 86629, "nodeType": "ParameterList", "parameters": [], "src": "5774:2:134" }, "returnParameters": { "id": 86632, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86631, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86638, "src": "5798:7:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86630, "name": "address", "nodeType": "ElementaryTypeName", "src": "5798:7:134", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "src": "5797:9:134" }, "scope": 87104, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 86651, "nodeType": "FunctionDefinition", "src": "5981:105:134", "nodes": [], "body": { "id": 86650, "nodeType": "Block", "src": "6034:52:134", "nodes": [], "statements": [{ "expression": { "id": 86648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86644, "name": "paused_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86642, "src": "6044:7:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 86645, "name": "superchainConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86507, "src": "6054:16:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SuperchainConfig_$88793", "typeString": "contract SuperchainConfig" } }, "id": 86646, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "paused", "nodeType": "MemberAccess", "referencedDeclaration": 88707, "src": "6054:23:134", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$", "typeString": "function () view external returns (bool)" } }, "id": 86647, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6054:25:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "6044:35:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 86649, "nodeType": "ExpressionStatement", "src": "6044:35:134" }] }, "documentation": { "id": 86639, "nodeType": "StructuredDocumentation", "src": "5864:112:134", "text": "@notice Getter for the current paused status.\n @return paused_ Whether or not the contract is paused." }, "functionSelector": "5c975abb", "implemented": true, "kind": "function", "modifiers": [], "name": "paused", "nameLocation": "5990:6:134", "parameters": { "id": 86640, "nodeType": "ParameterList", "parameters": [], "src": "5996:2:134" }, "returnParameters": { "id": 86643, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86642, "mutability": "mutable", "name": "paused_", "nameLocation": "6025:7:134", "nodeType": "VariableDeclaration", "scope": 86651, "src": "6020:12:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 86641, "name": "bool", "nodeType": "ElementaryTypeName", "src": "6020:4:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "src": "6019:14:134" }, "scope": 87104, "stateMutability": "view", "virtual": false, "visibility": "public" }, { "id": 86666, "nodeType": "FunctionDefinition", "src": "6579:120:134", "nodes": [], "body": { "id": 86665, "nodeType": "Block", "src": "6652:47:134", "nodes": [], "statements": [{ "expression": { "commonType": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "id": 86663, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "id": 86661, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86659, "name": "_byteCount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86654, "src": "6669:10:134", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "hexValue": "3136", "id": 86660, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6682:2:134", "typeDescriptions": { "typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16" }, "value": "16" }, "src": "6669:15:134", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "hexValue": "3231303030", "id": 86662, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6687:5:134", "typeDescriptions": { "typeIdentifier": "t_rational_21000_by_1", "typeString": "int_const 21000" }, "value": "21000" }, "src": "6669:23:134", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "functionReturnParameters": 86658, "id": 86664, "nodeType": "Return", "src": "6662:30:134" }] }, "documentation": { "id": 86652, "nodeType": "StructuredDocumentation", "src": "6092:482:134", "text": "@notice Computes the minimum gas limit for a deposit.\n         The minimum gas limit linearly increases based on the size of the calldata.\n         This is to prevent users from creating L2 resource usage without paying for it.\n         This function can be used when interacting with the portal to ensure forwards\n         compatibility.\n @param _byteCount Number of bytes in the calldata.\n @return The minimum gas limit for a deposit." }, "functionSelector": "a35d99df", "implemented": true, "kind": "function", "modifiers": [], "name": "minimumGasLimit", "nameLocation": "6588:15:134", "parameters": { "id": 86655, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86654, "mutability": "mutable", "name": "_byteCount", "nameLocation": "6611:10:134", "nodeType": "VariableDeclaration", "scope": 86666, "src": "6604:17:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 86653, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6604:6:134", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "visibility": "internal" }], "src": "6603:19:134" }, "returnParameters": { "id": 86658, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86657, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86666, "src": "6644:6:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 86656, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6644:6:134", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "visibility": "internal" }], "src": "6643:8:134" }, "scope": 87104, "stateMutability": "pure", "virtual": false, "visibility": "public" }, { "id": 86684, "nodeType": "FunctionDefinition", "src": "7078:130:134", "nodes": [], "body": { "id": 86683, "nodeType": "Block", "src": "7105:103:134", "nodes": [], "statements": [{ "expression": { "arguments": [{ "expression": { "id": 86671, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7134:3:134", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 86672, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "7134:10:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "expression": { "id": 86673, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "7146:3:134", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 86674, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "src": "7146:9:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 86675, "name": "RECEIVE_DEFAULT_GAS_LIMIT", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86486, "src": "7157:25:134", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { "hexValue": "66616c7365", "id": 86676, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7184:5:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, { "arguments": [{ "hexValue": "", "id": 86679, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7197:2:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }, "value": "" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", "typeString": "literal_string \"\"" }], "id": 86678, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "7191:5:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 86677, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "7191:5:134", "typeDescriptions": {} } }, "id": 86680, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7191:9:134", "tryCall": false, "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" }], "id": 86670, "name": "depositTransaction", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 87068, "src": "7115:18:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint64_$_t_bool_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,uint256,uint64,bool,bytes memory)" } }, "id": 86681, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7115:86:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86682, "nodeType": "ExpressionStatement", "src": "7115:86:134" }] }, "documentation": { "id": 86667, "nodeType": "StructuredDocumentation", "src": "6705:368:134", "text": "@notice Accepts value so that users can send ETH directly to this contract and have the\n         funds be deposited to their address on L2. This is intended as a convenience\n         function for EOAs. Contracts should call the depositTransaction() function directly\n         otherwise any deposited funds will be lost due to address aliasing." }, "implemented": true, "kind": "receive", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "parameters": { "id": 86668, "nodeType": "ParameterList", "parameters": [], "src": "7085:2:134" }, "returnParameters": { "id": 86669, "nodeType": "ParameterList", "parameters": [], "src": "7105:0:134" }, "scope": 87104, "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "id": 86689, "nodeType": "FunctionDefinition", "src": "7422:77:134", "nodes": [], "body": { "id": 86688, "nodeType": "Block", "src": "7460:39:134", "nodes": [], "statements": [] }, "documentation": { "id": 86685, "nodeType": "StructuredDocumentation", "src": "7214:203:134", "text": "@notice Accepts ETH value without triggering a deposit to L2.\n         This function mainly exists for the sake of the migration between the legacy\n         Optimism system and Bedrock." }, "functionSelector": "8b4c40b0", "implemented": true, "kind": "function", "modifiers": [], "name": "donateETH", "nameLocation": "7431:9:134", "parameters": { "id": 86686, "nodeType": "ParameterList", "parameters": [], "src": "7440:2:134" }, "returnParameters": { "id": 86687, "nodeType": "ParameterList", "parameters": [], "src": "7460:0:134" }, "scope": 87104, "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "id": 86702, "nodeType": "FunctionDefinition", "src": "7748:152:134", "nodes": [], "body": { "id": 86701, "nodeType": "Block", "src": "7847:53:134", "nodes": [], "statements": [{ "expression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 86697, "name": "systemConfig", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86515, "src": "7864:12:134", "typeDescriptions": { "typeIdentifier": "t_contract$_SystemConfig_$89607", "typeString": "contract SystemConfig" } }, "id": 86698, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "resourceConfig", "nodeType": "MemberAccess", "referencedDeclaration": 89527, "src": "7864:27:134", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_struct$_ResourceConfig_$88258_memory_ptr_$", "typeString": "function () view external returns (struct ResourceMetering.ResourceConfig memory)" } }, "id": 86699, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7864:29:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_ResourceConfig_$88258_memory_ptr", "typeString": "struct ResourceMetering.ResourceConfig memory" } }, "functionReturnParameters": 86696, "id": 86700, "nodeType": "Return", "src": "7857:36:134" }] }, "baseFunctions": [88555], "documentation": { "id": 86690, "nodeType": "StructuredDocumentation", "src": "7505:238:134", "text": "@notice Getter for the resource config.\n         Used internally by the ResourceMetering contract.\n         The SystemConfig is the source of truth for the resource config.\n @return ResourceMetering ResourceConfig" }, "implemented": true, "kind": "function", "modifiers": [], "name": "_resourceConfig", "nameLocation": "7757:15:134", "overrides": { "id": 86692, "nodeType": "OverrideSpecifier", "overrides": [], "src": "7789:8:134" }, "parameters": { "id": 86691, "nodeType": "ParameterList", "parameters": [], "src": "7772:2:134" }, "returnParameters": { "id": 86696, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86695, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 86702, "src": "7807:38:134", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_ResourceConfig_$88258_memory_ptr", "typeString": "struct ResourceMetering.ResourceConfig" }, "typeName": { "id": 86694, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86693, "name": "ResourceMetering.ResourceConfig", "nodeType": "IdentifierPath", "referencedDeclaration": 88258, "src": "7807:31:134" }, "referencedDeclaration": 88258, "src": "7807:31:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ResourceConfig_$88258_storage_ptr", "typeString": "struct ResourceMetering.ResourceConfig" } }, "visibility": "internal" }], "src": "7806:40:134" }, "scope": 87104, "stateMutability": "view", "virtual": false, "visibility": "internal" }, { "id": 86834, "nodeType": "FunctionDefinition", "src": "8288:3825:134", "nodes": [], "body": { "id": 86833, "nodeType": "Block", "src": "8553:3560:134", "nodes": [], "statements": [{ "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 86726, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86720, "name": "_tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86706, "src": "8798:3:134", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction memory" } }, "id": 86721, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "target", "nodeType": "MemberAccess", "referencedDeclaration": 104341, "src": "8798:10:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [{ "id": 86724, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8820:4:134", "typeDescriptions": { "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_contract$_OptimismPortal_$87104", "typeString": "contract OptimismPortal" }], "id": 86723, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8812:7:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 86722, "name": "address", "nodeType": "ElementaryTypeName", "src": "8812:7:134", "typeDescriptions": {} } }, "id": 86725, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8812:13:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "8798:27:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e64206d6573736167657320746f2074686520706f7274616c20636f6e7472616374", "id": 86727, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "8827:65:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_57e41062e2e7b97ddf730827f5249d28f602a3846dfe107ce36292fb1c029eb8", "typeString": "literal_string \"OptimismPortal: you cannot send messages to the portal contract\"" }, "value": "OptimismPortal: you cannot send messages to the portal contract" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_57e41062e2e7b97ddf730827f5249d28f602a3846dfe107ce36292fb1c029eb8", "typeString": "literal_string \"OptimismPortal: you cannot send messages to the portal contract\"" }], "id": 86719, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "8790:7:134", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86728, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8790:103:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86729, "nodeType": "ExpressionStatement", "src": "8790:103:134" }, { "assignments": [86731], "declarations": [{ "constant": false, "id": 86731, "mutability": "mutable", "name": "outputRoot", "nameLocation": "9078:10:134", "nodeType": "VariableDeclaration", "scope": 86833, "src": "9070:18:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 86730, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9070:7:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" }], "id": 86737, "initialValue": { "expression": { "arguments": [{ "id": 86734, "name": "_l2OutputIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86708, "src": "9112:14:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "expression": { "id": 86732, "name": "l2Oracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86511, "src": "9091:8:134", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" } }, "id": 86733, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getL2Output", "nodeType": "MemberAccess", "referencedDeclaration": 86275, "src": "9091:20:134", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_OutputProposal_$104307_memory_ptr_$", "typeString": "function (uint256) view external returns (struct Types.OutputProposal memory)" } }, "id": 86735, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9091:36:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_memory_ptr", "typeString": "struct Types.OutputProposal memory" } }, "id": 86736, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "outputRoot", "nodeType": "MemberAccess", "referencedDeclaration": 104302, "src": "9091:47:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "9070:68:134" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "id": 86744, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86739, "name": "outputRoot", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86731, "src": "9258:10:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "arguments": [{ "id": 86742, "name": "_outputRootProof", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86711, "src": "9300:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputRootProof_$104316_calldata_ptr", "typeString": "struct Types.OutputRootProof calldata" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_struct$_OutputRootProof_$104316_calldata_ptr", "typeString": "struct Types.OutputRootProof calldata" }], "expression": { "id": 86740, "name": "Hashing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103936, "src": "9272:7:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Hashing_$103936_$", "typeString": "type(library Hashing)" } }, "id": 86741, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "hashOutputRootProof", "nodeType": "MemberAccess", "referencedDeclaration": 103935, "src": "9272:27:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_struct$_OutputRootProof_$104316_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (struct Types.OutputRootProof memory) pure returns (bytes32)" } }, "id": 86743, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9272:45:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "9258:59:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4f7074696d69736d506f7274616c3a20696e76616c6964206f757470757420726f6f742070726f6f66", "id": 86745, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9319:43:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_490ec653897228799e7e4c4af8b1fd3b4a0688df98d026b46afa352ce9876996", "typeString": "literal_string \"OptimismPortal: invalid output root proof\"" }, "value": "OptimismPortal: invalid output root proof" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_490ec653897228799e7e4c4af8b1fd3b4a0688df98d026b46afa352ce9876996", "typeString": "literal_string \"OptimismPortal: invalid output root proof\"" }], "id": 86738, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9237:7:134", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86746, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9237:135:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86747, "nodeType": "ExpressionStatement", "src": "9237:135:134" }, { "assignments": [86749], "declarations": [{ "constant": false, "id": 86749, "mutability": "mutable", "name": "withdrawalHash", "nameLocation": "9491:14:134", "nodeType": "VariableDeclaration", "scope": 86833, "src": "9483:22:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 86748, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9483:7:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" }], "id": 86754, "initialValue": { "arguments": [{ "id": 86752, "name": "_tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86706, "src": "9531:3:134", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction memory" }], "expression": { "id": 86750, "name": "Hashing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103936, "src": "9508:7:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Hashing_$103936_$", "typeString": "type(library Hashing)" } }, "id": 86751, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "hashWithdrawal", "nodeType": "MemberAccess", "referencedDeclaration": 103911, "src": "9508:22:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_struct$_WithdrawalTransaction_$104348_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (struct Types.WithdrawalTransaction memory) pure returns (bytes32)" } }, "id": 86753, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9508:27:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "9483:52:134" }, { "assignments": [86757], "declarations": [{ "constant": false, "id": 86757, "mutability": "mutable", "name": "provenWithdrawal", "nameLocation": "9569:16:134", "nodeType": "VariableDeclaration", "scope": 86833, "src": "9545:40:134", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_memory_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal" }, "typeName": { "id": 86756, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86755, "name": "ProvenWithdrawal", "nodeType": "IdentifierPath", "referencedDeclaration": 86478, "src": "9545:16:134" }, "referencedDeclaration": 86478, "src": "9545:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_storage_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal" } }, "visibility": "internal" }], "id": 86761, "initialValue": { "baseExpression": { "id": 86758, "name": "provenWithdrawals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86500, "src": "9588:17:134", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ProvenWithdrawal_$86478_storage_$", "typeString": "mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal storage ref)" } }, "id": 86760, "indexExpression": { "id": 86759, "name": "withdrawalHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86749, "src": "9606:14:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "9588:33:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_storage", "typeString": "struct OptimismPortal.ProvenWithdrawal storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "9545:76:134" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 86776, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint128", "typeString": "uint128" }, "id": 86766, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86763, "name": "provenWithdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86757, "src": "10175:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_memory_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal memory" } }, "id": 86764, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": 86475, "src": "10175:26:134", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "30", "id": 86765, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10205:1:134", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "10175:31:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "id": 86775, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "arguments": [{ "expression": { "id": 86769, "name": "provenWithdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86757, "src": "10247:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_memory_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal memory" } }, "id": 86770, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "l2OutputIndex", "nodeType": "MemberAccess", "referencedDeclaration": 86477, "src": "10247:30:134", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint128", "typeString": "uint128" }], "expression": { "id": 86767, "name": "l2Oracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86511, "src": "10226:8:134", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" } }, "id": 86768, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getL2Output", "nodeType": "MemberAccess", "referencedDeclaration": 86275, "src": "10226:20:134", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_OutputProposal_$104307_memory_ptr_$", "typeString": "function (uint256) view external returns (struct Types.OutputProposal memory)" } }, "id": 86771, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10226:52:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_memory_ptr", "typeString": "struct Types.OutputProposal memory" } }, "id": 86772, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "outputRoot", "nodeType": "MemberAccess", "referencedDeclaration": 104302, "src": "10226:63:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "expression": { "id": 86773, "name": "provenWithdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86757, "src": "10293:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_memory_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal memory" } }, "id": 86774, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "outputRoot", "nodeType": "MemberAccess", "referencedDeclaration": 86473, "src": "10293:27:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "10226:94:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "10175:145:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4f7074696d69736d506f7274616c3a207769746864726177616c20686173682068617320616c7265616479206265656e2070726f76656e", "id": 86777, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "10334:57:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5238e365e021f6fd781c2264a5a09100f0670031b56dacfc224b453789ac1dd0", "typeString": "literal_string \"OptimismPortal: withdrawal hash has already been proven\"" }, "value": "OptimismPortal: withdrawal hash has already been proven" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_5238e365e021f6fd781c2264a5a09100f0670031b56dacfc224b453789ac1dd0", "typeString": "literal_string \"OptimismPortal: withdrawal hash has already been proven\"" }], "id": 86762, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "10154:7:134", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86778, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10154:247:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86779, "nodeType": "ExpressionStatement", "src": "10154:247:134" }, { "assignments": [86781], "declarations": [{ "constant": false, "id": 86781, "mutability": "mutable", "name": "storageKey", "nameLocation": "10645:10:134", "nodeType": "VariableDeclaration", "scope": 86833, "src": "10637:18:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 86780, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "10637:7:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" }], "id": 86792, "initialValue": { "arguments": [{ "arguments": [{ "id": 86785, "name": "withdrawalHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86749, "src": "10709:14:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "arguments": [{ "hexValue": "30", "id": 86788, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "10749:1:134", "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": 86787, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "10741:7:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 86786, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10741:7:134", "typeDescriptions": {} } }, "id": 86789, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10741:10:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }], "expression": { "id": 86783, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "10681:3:134", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 86784, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encode", "nodeType": "MemberAccess", "src": "10681:10:134", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 86790, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10681:147:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }], "id": 86782, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "10658:9:134", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 86791, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "10658:180:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "10637:201:134" }, { "expression": { "arguments": [{ "arguments": [{ "arguments": [{ "id": 86798, "name": "storageKey", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86781, "src": "11264:10:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }], "expression": { "id": 86796, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "11253:3:134", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 86797, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encode", "nodeType": "MemberAccess", "src": "11253:10:134", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 86799, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11253:22:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, { "hexValue": "01", "id": 86800, "isConstant": false, "isLValue": false, "isPure": true, "kind": "hexString", "lValueRequested": false, "nodeType": "Literal", "src": "11301:7:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2", "typeString": "literal_string hex\"01\"" }, "value": "\u0001" }, { "id": 86801, "name": "_withdrawalProof", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86714, "src": "11334:16:134", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" } }, { "expression": { "id": 86802, "name": "_outputRootProof", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86711, "src": "11375:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputRootProof_$104316_calldata_ptr", "typeString": "struct Types.OutputRootProof calldata" } }, "id": 86803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "messagePasserStorageRoot", "nodeType": "MemberAccess", "referencedDeclaration": 104313, "src": "11375:41:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }, { "typeIdentifier": "t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2", "typeString": "literal_string hex\"01\"" }, { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }], "expression": { "id": 86794, "name": "SecureMerkleTrie", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 106033, "src": "11191:16:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SecureMerkleTrie_$106033_$", "typeString": "type(library SecureMerkleTrie)" } }, "id": 86795, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "verifyInclusionProof", "nodeType": "MemberAccess", "referencedDeclaration": 105985, "src": "11191:37:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes memory,bytes memory,bytes memory[] memory,bytes32) pure returns (bool)" } }, "id": 86804, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": ["_key", "_value", "_proof", "_root"], "nodeType": "FunctionCall", "src": "11191:240:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4f7074696d69736d506f7274616c3a20696e76616c6964207769746864726177616c20696e636c7573696f6e2070726f6f66", "id": 86805, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "11445:52:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_11b666636981dad70da1c1a9e87589eb7d9c042eacd4d25e887aac557f6cd6b9", "typeString": "literal_string \"OptimismPortal: invalid withdrawal inclusion proof\"" }, "value": "OptimismPortal: invalid withdrawal inclusion proof" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_11b666636981dad70da1c1a9e87589eb7d9c042eacd4d25e887aac557f6cd6b9", "typeString": "literal_string \"OptimismPortal: invalid withdrawal inclusion proof\"" }], "id": 86793, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "11170:7:134", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86806, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11170:337:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86807, "nodeType": "ExpressionStatement", "src": "11170:337:134" }, { "expression": { "id": 86823, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 86808, "name": "provenWithdrawals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86500, "src": "11789:17:134", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ProvenWithdrawal_$86478_storage_$", "typeString": "mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal storage ref)" } }, "id": 86810, "indexExpression": { "id": 86809, "name": "withdrawalHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86749, "src": "11807:14:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "11789:33:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_storage", "typeString": "struct OptimismPortal.ProvenWithdrawal storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [{ "id": 86812, "name": "outputRoot", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86731, "src": "11868:10:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "arguments": [{ "expression": { "id": 86815, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "11911:5:134", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 86816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "src": "11911:15:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 86814, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11903:7:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint128_$", "typeString": "type(uint128)" }, "typeName": { "id": 86813, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "11903:7:134", "typeDescriptions": {} } }, "id": 86817, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11903:24:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, { "arguments": [{ "id": 86820, "name": "_l2OutputIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86708, "src": "11964:14:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 86819, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "11956:7:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint128_$", "typeString": "type(uint128)" }, "typeName": { "id": 86818, "name": "uint128", "nodeType": "ElementaryTypeName", "src": "11956:7:134", "typeDescriptions": {} } }, "id": 86821, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "11956:23:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint128", "typeString": "uint128" }, { "typeIdentifier": "t_uint128", "typeString": "uint128" }], "id": 86811, "name": "ProvenWithdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86478, "src": "11825:16:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_ProvenWithdrawal_$86478_storage_ptr_$", "typeString": "type(struct OptimismPortal.ProvenWithdrawal storage pointer)" } }, "id": 86822, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "names": ["outputRoot", "timestamp", "l2OutputIndex"], "nodeType": "FunctionCall", "src": "11825:165:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_memory_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal memory" } }, "src": "11789:201:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_storage", "typeString": "struct OptimismPortal.ProvenWithdrawal storage ref" } }, "id": 86824, "nodeType": "ExpressionStatement", "src": "11789:201:134" }, { "eventCall": { "arguments": [{ "id": 86826, "name": "withdrawalHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86749, "src": "12067:14:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "expression": { "id": 86827, "name": "_tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86706, "src": "12083:3:134", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction memory" } }, "id": 86828, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": 104339, "src": "12083:10:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "expression": { "id": 86829, "name": "_tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86706, "src": "12095:3:134", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction memory" } }, "id": 86830, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "target", "nodeType": "MemberAccess", "referencedDeclaration": 104341, "src": "12095:10:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }], "id": 86825, "name": "WithdrawalProven", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86535, "src": "12050:16:134", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", "typeString": "function (bytes32,address,address)" } }, "id": 86831, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12050:56:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86832, "nodeType": "EmitStatement", "src": "12045:61:134" }] }, "documentation": { "id": 86703, "nodeType": "StructuredDocumentation", "src": "7906:377:134", "text": "@notice Proves a withdrawal transaction.\n @param _tx              Withdrawal transaction to finalize.\n @param _l2OutputIndex   L2 output index to prove against.\n @param _outputRootProof Inclusion proof of the L2ToL1MessagePasser contract's storage root.\n @param _withdrawalProof Inclusion proof of the withdrawal in L2ToL1MessagePasser contract." }, "functionSelector": "4870496f", "implemented": true, "kind": "function", "modifiers": [{ "id": 86717, "kind": "modifierInvocation", "modifierName": { "id": 86716, "name": "whenNotPaused", "nodeType": "IdentifierPath", "referencedDeclaration": 86553, "src": "8535:13:134" }, "nodeType": "ModifierInvocation", "src": "8535:13:134" }], "name": "proveWithdrawalTransaction", "nameLocation": "8297:26:134", "parameters": { "id": 86715, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86706, "mutability": "mutable", "name": "_tx", "nameLocation": "8368:3:134", "nodeType": "VariableDeclaration", "scope": 86834, "src": "8333:38:134", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction" }, "typeName": { "id": 86705, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86704, "name": "Types.WithdrawalTransaction", "nodeType": "IdentifierPath", "referencedDeclaration": 104348, "src": "8333:27:134" }, "referencedDeclaration": 104348, "src": "8333:27:134", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_storage_ptr", "typeString": "struct Types.WithdrawalTransaction" } }, "visibility": "internal" }, { "constant": false, "id": 86708, "mutability": "mutable", "name": "_l2OutputIndex", "nameLocation": "8389:14:134", "nodeType": "VariableDeclaration", "scope": 86834, "src": "8381:22:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86707, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8381:7:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 86711, "mutability": "mutable", "name": "_outputRootProof", "nameLocation": "8444:16:134", "nodeType": "VariableDeclaration", "scope": 86834, "src": "8413:47:134", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputRootProof_$104316_calldata_ptr", "typeString": "struct Types.OutputRootProof" }, "typeName": { "id": 86710, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86709, "name": "Types.OutputRootProof", "nodeType": "IdentifierPath", "referencedDeclaration": 104316, "src": "8413:21:134" }, "referencedDeclaration": 104316, "src": "8413:21:134", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputRootProof_$104316_storage_ptr", "typeString": "struct Types.OutputRootProof" } }, "visibility": "internal" }, { "constant": false, "id": 86714, "mutability": "mutable", "name": "_withdrawalProof", "nameLocation": "8487:16:134", "nodeType": "VariableDeclaration", "scope": 86834, "src": "8470:33:134", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes[]" }, "typeName": { "baseType": { "id": 86712, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "8470:5:134", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "id": 86713, "nodeType": "ArrayTypeName", "src": "8470:7:134", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]" } }, "visibility": "internal" }], "src": "8323:186:134" }, "returnParameters": { "id": 86718, "nodeType": "ParameterList", "parameters": [], "src": "8553:0:134" }, "scope": 87104, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 86978, "nodeType": "FunctionDefinition", "src": "12226:4818:134", "nodes": [], "body": { "id": 86977, "nodeType": "Block", "src": "12328:4716:134", "nodes": [], "statements": [{ "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 86847, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86844, "name": "l2Sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86489, "src": "12594:8:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 86845, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103096, "src": "12606:9:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Constants_$103096_$", "typeString": "type(library Constants)" } }, "id": 86846, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DEFAULT_L2_SENDER", "nodeType": "MemberAccess", "referencedDeclaration": 103058, "src": "12606:27:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "12594:39:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4f7074696d69736d506f7274616c3a2063616e206f6e6c792074726967676572206f6e65207769746864726177616c20706572207472616e73616374696f6e", "id": 86848, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "12635:65:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_452e6500a4013b85635a7a9b231d68a5197c7f7579d0b96d0b2f2e5fe6b5995b", "typeString": "literal_string \"OptimismPortal: can only trigger one withdrawal per transaction\"" }, "value": "OptimismPortal: can only trigger one withdrawal per transaction" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_452e6500a4013b85635a7a9b231d68a5197c7f7579d0b96d0b2f2e5fe6b5995b", "typeString": "literal_string \"OptimismPortal: can only trigger one withdrawal per transaction\"" }], "id": 86843, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "12573:7:134", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86849, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12573:137:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86850, "nodeType": "ExpressionStatement", "src": "12573:137:134" }, { "assignments": [86852], "declarations": [{ "constant": false, "id": 86852, "mutability": "mutable", "name": "withdrawalHash", "nameLocation": "12801:14:134", "nodeType": "VariableDeclaration", "scope": 86977, "src": "12793:22:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 86851, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "12793:7:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "visibility": "internal" }], "id": 86857, "initialValue": { "arguments": [{ "id": 86855, "name": "_tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86838, "src": "12841:3:134", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction memory" }], "expression": { "id": 86853, "name": "Hashing", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103936, "src": "12818:7:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Hashing_$103936_$", "typeString": "type(library Hashing)" } }, "id": 86854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "hashWithdrawal", "nodeType": "MemberAccess", "referencedDeclaration": 103911, "src": "12818:22:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_struct$_WithdrawalTransaction_$104348_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (struct Types.WithdrawalTransaction memory) pure returns (bytes32)" } }, "id": 86856, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "12818:27:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "12793:52:134" }, { "assignments": [86860], "declarations": [{ "constant": false, "id": 86860, "mutability": "mutable", "name": "provenWithdrawal", "nameLocation": "12879:16:134", "nodeType": "VariableDeclaration", "scope": 86977, "src": "12855:40:134", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_memory_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal" }, "typeName": { "id": 86859, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86858, "name": "ProvenWithdrawal", "nodeType": "IdentifierPath", "referencedDeclaration": 86478, "src": "12855:16:134" }, "referencedDeclaration": 86478, "src": "12855:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_storage_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal" } }, "visibility": "internal" }], "id": 86864, "initialValue": { "baseExpression": { "id": 86861, "name": "provenWithdrawals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86500, "src": "12898:17:134", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_ProvenWithdrawal_$86478_storage_$", "typeString": "mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal storage ref)" } }, "id": 86863, "indexExpression": { "id": 86862, "name": "withdrawalHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86852, "src": "12916:14:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "12898:33:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_storage", "typeString": "struct OptimismPortal.ProvenWithdrawal storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "12855:76:134" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_uint128", "typeString": "uint128" }, "id": 86869, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86866, "name": "provenWithdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86860, "src": "13181:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_memory_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal memory" } }, "id": 86867, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": 86475, "src": "13181:26:134", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "hexValue": "30", "id": 86868, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "13211:1:134", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "13181:31:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e6f74206265656e2070726f76656e20796574", "id": 86870, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "13214:52:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_bc94f9f4f2ecd47ddd807efca122bcc34325481f7fe9d60687e25c709aff1610", "typeString": "literal_string \"OptimismPortal: withdrawal has not been proven yet\"" }, "value": "OptimismPortal: withdrawal has not been proven yet" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_bc94f9f4f2ecd47ddd807efca122bcc34325481f7fe9d60687e25c709aff1610", "typeString": "literal_string \"OptimismPortal: withdrawal has not been proven yet\"" }], "id": 86865, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "13173:7:134", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86871, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13173:94:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86872, "nodeType": "ExpressionStatement", "src": "13173:94:134" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 86879, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86874, "name": "provenWithdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86860, "src": "13554:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_memory_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal memory" } }, "id": 86875, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": 86475, "src": "13554:26:134", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }, "nodeType": "BinaryOperation", "operator": ">=", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 86876, "name": "l2Oracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86511, "src": "13584:8:134", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" } }, "id": 86877, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "startingTimestamp", "nodeType": "MemberAccess", "referencedDeclaration": 85942, "src": "13584:26:134", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", "typeString": "function () view external returns (uint256)" } }, "id": 86878, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13584:28:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "13554:58:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657374616d70206c657373207468616e204c32204f7261636c65207374617274696e672074696d657374616d70", "id": 86880, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "13626:77:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_5c7c78dd7f8d5d79f2ff5ac1a4442209661a78fffa24392f88331b760a60bedd", "typeString": "literal_string \"OptimismPortal: withdrawal timestamp less than L2 Oracle starting timestamp\"" }, "value": "OptimismPortal: withdrawal timestamp less than L2 Oracle starting timestamp" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_5c7c78dd7f8d5d79f2ff5ac1a4442209661a78fffa24392f88331b760a60bedd", "typeString": "literal_string \"OptimismPortal: withdrawal timestamp less than L2 Oracle starting timestamp\"" }], "id": 86873, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "13533:7:134", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86881, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "13533:180:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86882, "nodeType": "ExpressionStatement", "src": "13533:180:134" }, { "expression": { "arguments": [{ "arguments": [{ "expression": { "id": 86885, "name": "provenWithdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86860, "src": "14132:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_memory_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal memory" } }, "id": 86886, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": 86475, "src": "14132:26:134", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint128", "typeString": "uint128" }], "id": 86884, "name": "_isFinalizationPeriodElapsed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 87103, "src": "14103:28:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, "id": 86887, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14103:56:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4f7074696d69736d506f7274616c3a2070726f76656e207769746864726177616c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c6170736564", "id": 86888, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "14173:71:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_98a66ca0d4a8e5a839585f0aa5b4b8fc94a946382443fc5580ee1ed6e6237f70", "typeString": "literal_string \"OptimismPortal: proven withdrawal finalization period has not elapsed\"" }, "value": "OptimismPortal: proven withdrawal finalization period has not elapsed" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_98a66ca0d4a8e5a839585f0aa5b4b8fc94a946382443fc5580ee1ed6e6237f70", "typeString": "literal_string \"OptimismPortal: proven withdrawal finalization period has not elapsed\"" }], "id": 86883, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "14082:7:134", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86889, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14082:172:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86890, "nodeType": "ExpressionStatement", "src": "14082:172:134" }, { "assignments": [86895], "declarations": [{ "constant": false, "id": 86895, "mutability": "mutable", "name": "proposal", "nameLocation": "14453:8:134", "nodeType": "VariableDeclaration", "scope": 86977, "src": "14425:36:134", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_memory_ptr", "typeString": "struct Types.OutputProposal" }, "typeName": { "id": 86894, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86893, "name": "Types.OutputProposal", "nodeType": "IdentifierPath", "referencedDeclaration": 104307, "src": "14425:20:134" }, "referencedDeclaration": 104307, "src": "14425:20:134", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_storage_ptr", "typeString": "struct Types.OutputProposal" } }, "visibility": "internal" }], "id": 86901, "initialValue": { "arguments": [{ "expression": { "id": 86898, "name": "provenWithdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86860, "src": "14485:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_memory_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal memory" } }, "id": 86899, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "l2OutputIndex", "nodeType": "MemberAccess", "referencedDeclaration": 86477, "src": "14485:30:134", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint128", "typeString": "uint128" }], "expression": { "id": 86896, "name": "l2Oracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86511, "src": "14464:8:134", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" } }, "id": 86897, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getL2Output", "nodeType": "MemberAccess", "referencedDeclaration": 86275, "src": "14464:20:134", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_OutputProposal_$104307_memory_ptr_$", "typeString": "function (uint256) view external returns (struct Types.OutputProposal memory)" } }, "id": 86900, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14464:52:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_memory_ptr", "typeString": "struct Types.OutputProposal memory" } }, "nodeType": "VariableDeclarationStatement", "src": "14425:91:134" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "id": 86907, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86903, "name": "proposal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86895, "src": "14804:8:134", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_memory_ptr", "typeString": "struct Types.OutputProposal memory" } }, "id": 86904, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "outputRoot", "nodeType": "MemberAccess", "referencedDeclaration": 104302, "src": "14804:19:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 86905, "name": "provenWithdrawal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86860, "src": "14827:16:134", "typeDescriptions": { "typeIdentifier": "t_struct$_ProvenWithdrawal_$86478_memory_ptr", "typeString": "struct OptimismPortal.ProvenWithdrawal memory" } }, "id": 86906, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "outputRoot", "nodeType": "MemberAccess", "referencedDeclaration": 86473, "src": "14827:27:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "14804:50:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f76656e206973206e6f74207468652073616d652061732063757272656e74206f757470757420726f6f74", "id": 86908, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "14868:75:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2bee9e90a055fc3fdea28727a1d039ffb281ae00c8962ca3262d0dabb187a280", "typeString": "literal_string \"OptimismPortal: output root proven is not the same as current output root\"" }, "value": "OptimismPortal: output root proven is not the same as current output root" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_2bee9e90a055fc3fdea28727a1d039ffb281ae00c8962ca3262d0dabb187a280", "typeString": "literal_string \"OptimismPortal: output root proven is not the same as current output root\"" }], "id": 86902, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "14783:7:134", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86909, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "14783:170:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86910, "nodeType": "ExpressionStatement", "src": "14783:170:134" }, { "expression": { "arguments": [{ "arguments": [{ "expression": { "id": 86913, "name": "proposal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86895, "src": "15081:8:134", "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_memory_ptr", "typeString": "struct Types.OutputProposal memory" } }, "id": 86914, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": 104304, "src": "15081:18:134", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint128", "typeString": "uint128" }], "id": 86912, "name": "_isFinalizationPeriodElapsed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 87103, "src": "15052:28:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, "id": 86915, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15052:48:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c6170736564", "id": 86916, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "15114:69:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e2e53e5f2e5c146290963511529e48aa3e1570a42475ccc1fb3eba5190175c74", "typeString": "literal_string \"OptimismPortal: output proposal finalization period has not elapsed\"" }, "value": "OptimismPortal: output proposal finalization period has not elapsed" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_e2e53e5f2e5c146290963511529e48aa3e1570a42475ccc1fb3eba5190175c74", "typeString": "literal_string \"OptimismPortal: output proposal finalization period has not elapsed\"" }], "id": 86911, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "15031:7:134", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86917, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15031:162:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86918, "nodeType": "ExpressionStatement", "src": "15031:162:134" }, { "expression": { "arguments": [{ "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 86924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "baseExpression": { "id": 86920, "name": "finalizedWithdrawals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86494, "src": "15309:20:134", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 86922, "indexExpression": { "id": 86921, "name": "withdrawalHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86852, "src": "15330:14:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "15309:36:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "66616c7365", "id": 86923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "15349:5:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "src": "15309:45:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4f7074696d69736d506f7274616c3a207769746864726177616c2068617320616c7265616479206265656e2066696e616c697a6564", "id": 86925, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "15356:55:134", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2a1157cbf4171a399f26106a5211324151853c78d2faca1fb1d3acbf755aa485", "typeString": "literal_string \"OptimismPortal: withdrawal has already been finalized\"" }, "value": "OptimismPortal: withdrawal has already been finalized" }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_2a1157cbf4171a399f26106a5211324151853c78d2faca1fb1d3acbf755aa485", "typeString": "literal_string \"OptimismPortal: withdrawal has already been finalized\"" }], "id": 86919, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "15301:7:134", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 86926, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "15301:111:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86927, "nodeType": "ExpressionStatement", "src": "15301:111:134" }, { "expression": { "id": 86932, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 86928, "name": "finalizedWithdrawals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86494, "src": "15492:20:134", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 86930, "indexExpression": { "id": 86929, "name": "withdrawalHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86852, "src": "15513:14:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "15492:36:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "hexValue": "74727565", "id": 86931, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "15531:4:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "15492:43:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 86933, "nodeType": "ExpressionStatement", "src": "15492:43:134" }, { "expression": { "id": 86937, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86934, "name": "l2Sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86489, "src": "15629:8:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 86935, "name": "_tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86838, "src": "15640:3:134", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction memory" } }, "id": 86936, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": 104339, "src": "15640:10:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "15629:21:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 86938, "nodeType": "ExpressionStatement", "src": "15629:21:134" }, { "assignments": [86940], "declarations": [{ "constant": false, "id": 86940, "mutability": "mutable", "name": "success", "nameLocation": "16275:7:134", "nodeType": "VariableDeclaration", "scope": 86977, "src": "16270:12:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 86939, "name": "bool", "nodeType": "ElementaryTypeName", "src": "16270:4:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "id": 86952, "initialValue": { "arguments": [{ "expression": { "id": 86943, "name": "_tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86838, "src": "16309:3:134", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction memory" } }, "id": 86944, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "target", "nodeType": "MemberAccess", "referencedDeclaration": 104341, "src": "16309:10:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "expression": { "id": 86945, "name": "_tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86838, "src": "16321:3:134", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction memory" } }, "id": 86946, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "gasLimit", "nodeType": "MemberAccess", "referencedDeclaration": 104345, "src": "16321:12:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "expression": { "id": 86947, "name": "_tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86838, "src": "16335:3:134", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction memory" } }, "id": 86948, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": 104343, "src": "16335:9:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "expression": { "id": 86949, "name": "_tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86838, "src": "16346:3:134", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction memory" } }, "id": 86950, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "data", "nodeType": "MemberAccess", "referencedDeclaration": 104347, "src": "16346:8:134", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }], "expression": { "id": 86941, "name": "SafeCall", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104213, "src": "16285:8:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SafeCall_$104213_$", "typeString": "type(library SafeCall)" } }, "id": 86942, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "callWithMinGas", "nodeType": "MemberAccess", "referencedDeclaration": 104212, "src": "16285:23:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,uint256,uint256,bytes memory) returns (bool)" } }, "id": 86951, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16285:70:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", "src": "16270:85:134" }, { "expression": { "id": 86956, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 86953, "name": "l2Sender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86489, "src": "16423:8:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "expression": { "id": 86954, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103096, "src": "16434:9:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Constants_$103096_$", "typeString": "type(library Constants)" } }, "id": 86955, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "DEFAULT_L2_SENDER", "nodeType": "MemberAccess", "referencedDeclaration": 103058, "src": "16434:27:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "16423:38:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 86957, "nodeType": "ExpressionStatement", "src": "16423:38:134" }, { "eventCall": { "arguments": [{ "id": 86959, "name": "withdrawalHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86852, "src": "16640:14:134", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "id": 86960, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86940, "src": "16656:7:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bool", "typeString": "bool" }], "id": 86958, "name": "WithdrawalFinalized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86542, "src": "16620:19:134", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$", "typeString": "function (bytes32,bool)" } }, "id": 86961, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "16620:44:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86962, "nodeType": "EmitStatement", "src": "16615:49:134" }, { "condition": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 86971, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 86965, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86963, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86940, "src": "16928:7:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "hexValue": "66616c7365", "id": 86964, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "16939:5:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, "src": "16928:16:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 86970, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 86966, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -26, "src": "16948:2:134", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, "id": 86967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "origin", "nodeType": "MemberAccess", "src": "16948:9:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "id": 86968, "name": "Constants", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103096, "src": "16961:9:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Constants_$103096_$", "typeString": "type(library Constants)" } }, "id": 86969, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "ESTIMATION_ADDRESS", "nodeType": "MemberAccess", "referencedDeclaration": 103054, "src": "16961:28:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "16948:41:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "16928:61:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 86976, "nodeType": "IfStatement", "src": "16924:114:134", "trueBody": { "id": 86975, "nodeType": "Block", "src": "16991:47:134", "statements": [{ "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 86972, "name": "GasEstimation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103993, "src": "17012:13:134", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 86973, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "17012:15:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 86974, "nodeType": "RevertStatement", "src": "17005:22:134" }] } }] }, "documentation": { "id": 86835, "nodeType": "StructuredDocumentation", "src": "12119:102:134", "text": "@notice Finalizes a withdrawal transaction.\n @param _tx Withdrawal transaction to finalize." }, "functionSelector": "8c3152e9", "implemented": true, "kind": "function", "modifiers": [{ "id": 86841, "kind": "modifierInvocation", "modifierName": { "id": 86840, "name": "whenNotPaused", "nodeType": "IdentifierPath", "referencedDeclaration": 86553, "src": "12314:13:134" }, "nodeType": "ModifierInvocation", "src": "12314:13:134" }], "name": "finalizeWithdrawalTransaction", "nameLocation": "12235:29:134", "parameters": { "id": 86839, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86838, "mutability": "mutable", "name": "_tx", "nameLocation": "12300:3:134", "nodeType": "VariableDeclaration", "scope": 86978, "src": "12265:38:134", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_memory_ptr", "typeString": "struct Types.WithdrawalTransaction" }, "typeName": { "id": 86837, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 86836, "name": "Types.WithdrawalTransaction", "nodeType": "IdentifierPath", "referencedDeclaration": 104348, "src": "12265:27:134" }, "referencedDeclaration": 104348, "src": "12265:27:134", "typeDescriptions": { "typeIdentifier": "t_struct$_WithdrawalTransaction_$104348_storage_ptr", "typeString": "struct Types.WithdrawalTransaction" } }, "visibility": "internal" }], "src": "12264:40:134" }, "returnParameters": { "id": 86842, "nodeType": "ParameterList", "parameters": [], "src": "12328:0:134" }, "scope": 87104, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 87068, "nodeType": "FunctionDefinition", "src": "17774:1855:134", "nodes": [], "body": { "id": 87067, "nodeType": "Block", "src": "17995:1634:134", "nodes": [], "statements": [{ "condition": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 87002, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86995, "name": "_isCreation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86987, "src": "18134:11:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "&&", "rightExpression": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 87001, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 86996, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86981, "src": "18149:3:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [{ "hexValue": "30", "id": 86999, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "18164:1:134", "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": 86998, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "18156:7:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 86997, "name": "address", "nodeType": "ElementaryTypeName", "src": "18156:7:134", "typeDescriptions": {} } }, "id": 87000, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18156:10:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "18149:17:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "18134:32:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 87006, "nodeType": "IfStatement", "src": "18130:56:134", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 87003, "name": "BadTarget", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103969, "src": "18175:9:134", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 87004, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18175:11:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 87005, "nodeType": "RevertStatement", "src": "18168:18:134" } }, { "condition": { "commonType": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "id": 87015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 87007, "name": "_gasLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86985, "src": "18338:9:134", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "arguments": [{ "arguments": [{ "expression": { "id": 87011, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86989, "src": "18373:5:134", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 87012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "18373:12:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "id": 87010, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "18366:6:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint64_$", "typeString": "type(uint64)" }, "typeName": { "id": 87009, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "18366:6:134", "typeDescriptions": {} } }, "id": 87013, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18366:20:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint64", "typeString": "uint64" }], "id": 87008, "name": "minimumGasLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86666, "src": "18350:15:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint64_$returns$_t_uint64_$", "typeString": "function (uint64) pure returns (uint64)" } }, "id": 87014, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18350:37:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "src": "18338:49:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 87019, "nodeType": "IfStatement", "src": "18334:77:134", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 87016, "name": "SmallGasLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103975, "src": "18396:13:134", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 87017, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18396:15:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 87018, "nodeType": "RevertStatement", "src": "18389:22:134" } }, { "condition": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 87023, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 87020, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86989, "src": "18786:5:134", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 87021, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "src": "18786:12:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "hexValue": "3132305f303030", "id": 87022, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "18801:7:134", "typeDescriptions": { "typeIdentifier": "t_rational_120000_by_1", "typeString": "int_const 120000" }, "value": "120_000" }, "src": "18786:22:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 87027, "nodeType": "IfStatement", "src": "18782:50:134", "trueBody": { "errorCall": { "arguments": [], "expression": { "argumentTypes": [], "id": 87024, "name": "LargeCalldata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 103972, "src": "18817:13:134", "typeDescriptions": { "typeIdentifier": "t_function_error_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 87025, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "18817:15:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 87026, "nodeType": "RevertStatement", "src": "18810:22:134" } }, { "assignments": [87029], "declarations": [{ "constant": false, "id": 87029, "mutability": "mutable", "name": "from", "nameLocation": "18931:4:134", "nodeType": "VariableDeclaration", "scope": 87067, "src": "18923:12:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 87028, "name": "address", "nodeType": "ElementaryTypeName", "src": "18923:7:134", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }], "id": 87032, "initialValue": { "expression": { "id": 87030, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "18938:3:134", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 87031, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "18938:10:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "18923:25:134" }, { "condition": { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 87037, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 87033, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "18962:3:134", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 87034, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "18962:10:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "expression": { "id": 87035, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -26, "src": "18976:2:134", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, "id": 87036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "origin", "nodeType": "MemberAccess", "src": "18976:9:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "18962:23:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 87047, "nodeType": "IfStatement", "src": "18958:108:134", "trueBody": { "id": 87046, "nodeType": "Block", "src": "18987:79:134", "statements": [{ "expression": { "id": 87044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 87038, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 87029, "src": "19001:4:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [{ "expression": { "id": 87041, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "19044:3:134", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 87042, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "src": "19044:10:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }], "expression": { "id": 87039, "name": "AddressAliasHelper", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 111913, "src": "19008:18:134", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_AddressAliasHelper_$111913_$", "typeString": "type(library AddressAliasHelper)" } }, "id": 87040, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "applyL1ToL2Alias", "nodeType": "MemberAccess", "referencedDeclaration": 111890, "src": "19008:35:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_address_$", "typeString": "function (address) pure returns (address)" } }, "id": 87043, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "19008:47:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "19001:54:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 87045, "nodeType": "ExpressionStatement", "src": "19001:54:134" }] } }, { "assignments": [87049], "declarations": [{ "constant": false, "id": 87049, "mutability": "mutable", "name": "opaqueData", "nameLocation": "19336:10:134", "nodeType": "VariableDeclaration", "scope": 87067, "src": "19323:23:134", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 87048, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "19323:5:134", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "id": 87059, "initialValue": { "arguments": [{ "expression": { "id": 87052, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "19366:3:134", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 87053, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "src": "19366:9:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 87054, "name": "_value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86983, "src": "19377:6:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 87055, "name": "_gasLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86985, "src": "19385:9:134", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { "id": 87056, "name": "_isCreation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86987, "src": "19396:11:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "id": 87057, "name": "_data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86989, "src": "19409:5:134", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "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": 87050, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "19349:3:134", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 87051, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "src": "19349:16:134", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 87058, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "19349:66:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", "src": "19323:92:134" }, { "eventCall": { "arguments": [{ "id": 87061, "name": "from", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 87029, "src": "19583:4:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 87062, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86981, "src": "19589:3:134", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 87063, "name": "DEPOSIT_VERSION", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86482, "src": "19594:15:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "id": 87064, "name": "opaqueData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 87049, "src": "19611:10:134", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" }], "id": 87060, "name": "TransactionDeposited", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86526, "src": "19562:20:134", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,address,uint256,bytes memory)" } }, "id": 87065, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "19562:60:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 87066, "nodeType": "EmitStatement", "src": "19557:65:134" }] }, "documentation": { "id": 86979, "nodeType": "StructuredDocumentation", "src": "17050:719:134", "text": "@notice Accepts deposits of ETH and data, and emits a TransactionDeposited event for use in\n         deriving deposit transactions. Note that if a deposit is made by a contract, its\n         address will be aliased when retrieved using `tx.origin` or `msg.sender`. Consider\n         using the CrossDomainMessenger contracts for a simpler developer experience.\n @param _to         Target address on L2.\n @param _value      ETH value to send to the recipient.\n @param _gasLimit   Amount of L2 gas to purchase by burning gas on L1.\n @param _isCreation Whether or not the transaction is a contract creation.\n @param _data       Data to trigger the recipient with." }, "functionSelector": "e9e05c42", "implemented": true, "kind": "function", "modifiers": [{ "arguments": [{ "id": 86992, "name": "_gasLimit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86985, "src": "17980:9:134", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }], "id": 86993, "kind": "modifierInvocation", "modifierName": { "id": 86991, "name": "metered", "nodeType": "IdentifierPath", "referencedDeclaration": 88284, "src": "17972:7:134" }, "nodeType": "ModifierInvocation", "src": "17972:18:134" }], "name": "depositTransaction", "nameLocation": "17783:18:134", "parameters": { "id": 86990, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 86981, "mutability": "mutable", "name": "_to", "nameLocation": "17819:3:134", "nodeType": "VariableDeclaration", "scope": 87068, "src": "17811:11:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 86980, "name": "address", "nodeType": "ElementaryTypeName", "src": "17811:7:134", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 86983, "mutability": "mutable", "name": "_value", "nameLocation": "17840:6:134", "nodeType": "VariableDeclaration", "scope": 87068, "src": "17832:14:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 86982, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "17832:7:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }, { "constant": false, "id": 86985, "mutability": "mutable", "name": "_gasLimit", "nameLocation": "17863:9:134", "nodeType": "VariableDeclaration", "scope": 87068, "src": "17856:16:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 86984, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "17856:6:134", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "visibility": "internal" }, { "constant": false, "id": 86987, "mutability": "mutable", "name": "_isCreation", "nameLocation": "17887:11:134", "nodeType": "VariableDeclaration", "scope": 87068, "src": "17882:16:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 86986, "name": "bool", "nodeType": "ElementaryTypeName", "src": "17882:4:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }, { "constant": false, "id": 86989, "mutability": "mutable", "name": "_data", "nameLocation": "17921:5:134", "nodeType": "VariableDeclaration", "scope": 87068, "src": "17908:18:134", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 86988, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "17908:5:134", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" }], "src": "17801:131:134" }, "returnParameters": { "id": 86994, "nodeType": "ParameterList", "parameters": [], "src": "17995:0:134" }, "scope": 87104, "stateMutability": "payable", "virtual": false, "visibility": "public" }, { "id": 87085, "nodeType": "FunctionDefinition", "src": "19926:180:134", "nodes": [], "body": { "id": 87084, "nodeType": "Block", "src": "20006:100:134", "nodes": [], "statements": [{ "expression": { "arguments": [{ "expression": { "arguments": [{ "id": 87079, "name": "_l2OutputIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 87071, "src": "20073:14:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint256", "typeString": "uint256" }], "expression": { "id": 87077, "name": "l2Oracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86511, "src": "20052:8:134", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" } }, "id": 87078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getL2Output", "nodeType": "MemberAccess", "referencedDeclaration": 86275, "src": "20052:20:134", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_OutputProposal_$104307_memory_ptr_$", "typeString": "function (uint256) view external returns (struct Types.OutputProposal memory)" } }, "id": 87080, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "20052:36:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_OutputProposal_$104307_memory_ptr", "typeString": "struct Types.OutputProposal memory" } }, "id": 87081, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": 104304, "src": "20052:46:134", "typeDescriptions": { "typeIdentifier": "t_uint128", "typeString": "uint128" } }], "expression": { "argumentTypes": [{ "typeIdentifier": "t_uint128", "typeString": "uint128" }], "id": 87076, "name": "_isFinalizationPeriodElapsed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 87103, "src": "20023:28:134", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", "typeString": "function (uint256) view returns (bool)" } }, "id": 87082, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "20023:76:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 87075, "id": 87083, "nodeType": "Return", "src": "20016:83:134" }] }, "documentation": { "id": 87069, "nodeType": "StructuredDocumentation", "src": "19635:286:134", "text": "@notice Determine if a given output is finalized.\n         Reverts if the call to l2Oracle.getL2Output reverts.\n         Returns a boolean otherwise.\n @param _l2OutputIndex Index of the L2 output to check.\n @return Whether or not the output is finalized." }, "functionSelector": "6dbffb78", "implemented": true, "kind": "function", "modifiers": [], "name": "isOutputFinalized", "nameLocation": "19935:17:134", "parameters": { "id": 87072, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 87071, "mutability": "mutable", "name": "_l2OutputIndex", "nameLocation": "19961:14:134", "nodeType": "VariableDeclaration", "scope": 87085, "src": "19953:22:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 87070, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "19953:7:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "19952:24:134" }, "returnParameters": { "id": 87075, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 87074, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 87085, "src": "20000:4:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 87073, "name": "bool", "nodeType": "ElementaryTypeName", "src": "20000:4:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "src": "19999:6:134" }, "scope": 87104, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 87103, "nodeType": "FunctionDefinition", "src": "20359:180:134", "nodes": [], "body": { "id": 87102, "nodeType": "Block", "src": "20446:93:134", "nodes": [], "statements": [{ "expression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 87100, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "expression": { "id": 87093, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "20463:5:134", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 87094, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "src": "20463:15:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 87099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 87095, "name": "_timestamp", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 87088, "src": "20481:10:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 87096, "name": "l2Oracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86511, "src": "20494:8:134", "typeDescriptions": { "typeIdentifier": "t_contract$_L2OutputOracle_$86435", "typeString": "contract L2OutputOracle" } }, "id": 87097, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "FINALIZATION_PERIOD_SECONDS", "nodeType": "MemberAccess", "referencedDeclaration": 86121, "src": "20494:36:134", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", "typeString": "function () view external returns (uint256)" } }, "id": 87098, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "20494:38:134", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "20481:51:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "20463:69:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 87092, "id": 87101, "nodeType": "Return", "src": "20456:76:134" }] }, "documentation": { "id": 87086, "nodeType": "StructuredDocumentation", "src": "20112:242:134", "text": "@notice Determines whether the finalization period has elapsed with respect to\n         the provided block timestamp.\n @param _timestamp Timestamp to check.\n @return Whether or not the finalization period has elapsed." }, "implemented": true, "kind": "function", "modifiers": [], "name": "_isFinalizationPeriodElapsed", "nameLocation": "20368:28:134", "parameters": { "id": 87089, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 87088, "mutability": "mutable", "name": "_timestamp", "nameLocation": "20405:10:134", "nodeType": "VariableDeclaration", "scope": 87103, "src": "20397:18:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 87087, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "20397:7:134", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" }], "src": "20396:20:134" }, "returnParameters": { "id": 87092, "nodeType": "ParameterList", "parameters": [{ "constant": false, "id": 87091, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 87103, "src": "20440:4:134", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 87090, "name": "bool", "nodeType": "ElementaryTypeName", "src": "20440:4:134", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }], "src": "20439:6:134" }, "scope": 87104, "stateMutability": "view", "virtual": false, "visibility": "internal" }], "abstract": false, "baseContracts": [{ "baseName": { "id": 86466, "name": "Initializable", "nodeType": "IdentifierPath", "referencedDeclaration": 49678, "src": "1267:13:134" }, "id": 86467, "nodeType": "InheritanceSpecifier", "src": "1267:13:134" }, { "baseName": { "id": 86468, "name": "ResourceMetering", "nodeType": "IdentifierPath", "referencedDeclaration": 88581, "src": "1282:16:134" }, "id": 86469, "nodeType": "InheritanceSpecifier", "src": "1282:16:134" }, { "baseName": { "id": 86470, "name": "ISemver", "nodeType": "IdentifierPath", "referencedDeclaration": 109417, "src": "1300:7:134" }, "id": 86471, "nodeType": "InheritanceSpecifier", "src": "1300:7:134" }], "canonicalName": "OptimismPortal", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 86465, "nodeType": "StructuredDocumentation", "src": "902:338:134", "text": "@custom:proxied\n @title OptimismPortal\n @notice The OptimismPortal is a low-level contract responsible for passing messages between L1\n         and L2. Messages sent directly to the OptimismPortal have no form of replayability.\n         Users are encouraged to use the L1CrossDomainMessenger for a higher-level interface." }, "fullyImplemented": true, "linearizedBaseContracts": [87104, 109417, 88581, 49678], "name": "OptimismPortal", "nameLocation": "1249:14:134", "scope": 87105, "usedErrors": [88238, 103969, 103972, 103975, 103990, 103993] }], "license": "MIT" }, "id": 134 }
