Commit 8a3074ab authored by smartcontracts's avatar smartcontracts Committed by GitHub

fix(ctb): minor L1 semver/init cleanup (#2998)

Minor L1 contract semver/initialization cleanup after spotting an
inconsistency with ResourceMetering.
parent 2bea4f96
---
'@eth-optimism/contracts-bedrock': patch
---
Minor cleanups to initialization and semver for L1 contracts
......@@ -39,7 +39,7 @@ type HashingOutputRootProof struct {
// OptimismPortalMetaData contains all meta data concerning the OptimismPortal contract.
var OptimismPortalMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2Oracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_finalizationPeriodSeconds\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":false,\"internalType\":\"uint256\",\"name\":\"mint\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"gasLimit\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isCreation\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"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\"},{\"inputs\":[],\"name\":\"BASE_FEE_MAX_CHANGE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ELASTICITY_MULTIPLIER\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FINALIZATION_PERIOD_SECONDS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIAL_BASE_FEE\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAJOR_VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_RESOURCE_LIMIT\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_BASE_FEE\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINOR_VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PATCH_VERSION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TARGET_RESOURCE_LIMIT\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":[{\"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\":\"_l2BlockNumber\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"withdrawerStorageRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"latestBlockhash\",\"type\":\"bytes32\"}],\"internalType\":\"structHashing.OutputRootProof\",\"name\":\"_outputRootProof\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_withdrawalProof\",\"type\":\"bytes\"}],\"name\":\"finalizeWithdrawalTransaction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"finalizedWithdrawals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2BlockNumber\",\"type\":\"uint256\"}],\"name\":\"isOutputFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Sender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]",
Bin: "0x6101206040523480156200001257600080fd5b5060405162003f2b38038062003f2b833981016040819052620000359162000285565b60008060016200007460408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b60809290925260a05260c0526001600160a01b0382166101005260e08190526200009d620000a5565b5050620002c1565b6000620000b3600162000164565b90508015620000cc576000805461ff0019166101001790555b603380546001600160a01b03191661dead1790556200011a60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b801562000161576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008054610100900460ff1615620001fd578160ff1660011480156200019d57506200019b306200027660201b620014801760201c565b155b620001f55760405162461bcd60e51b815260206004820152602e602482015260008051602062003f0b83398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b506000919050565b60005460ff8084169116106200025c5760405162461bcd60e51b815260206004820152602e602482015260008051602062003f0b83398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620001ec565b506000805460ff191660ff92909216919091179055600190565b6001600160a01b03163b151590565b600080604083850312156200029957600080fd5b82516001600160a01b0381168114620002b157600080fd5b6020939093015192949293505050565b60805160a05160c05160e05161010051613bd4620003376000396000818161016a0152818161099101528181610a0801528181610a9b01528181610b6d0152610f0a01526000818161044c01528181610c1f0152610f8d0152600061023b01526000610327015260006104800152613bd46000f3fe60806040526004361061012c5760003560e01c8063a14238e7116100a5578063cff0ab9611610074578063eecf1c3611610059578063eecf1c3614610427578063f4daa2911461043a578063f786becd1461046e57600080fd5b8063cff0ab9614610373578063e9e05c421461041457600080fd5b8063a14238e7146102e5578063c8b9153114610315578063ca3e99ba14610349578063cd7c97891461035e57600080fd5b80636bf2606a116100fc5780638129fc1c116100e15780638129fc1c1461028d578063867ead13146102a25780639bf62d82146102b857600080fd5b80636bf2606a146102295780636dbffb781461025d57600080fd5b80621c2ff61461015857806313620abd146101b657806364b79208146101ef5780636bb0291e1461021457600080fd5b36610153576101513334620186a06000604051806020016040528060008152506104a2565b005b600080fd5b34801561016457600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c257600080fd5b506101ce633b9aca0081565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ad565b3480156101fb57600080fd5b50610206627a120081565b6040519081526020016101ad565b34801561022057600080fd5b50610206600481565b34801561023557600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561026957600080fd5b5061027d6102783660046132bd565b610948565b60405190151581526020016101ad565b34801561029957600080fd5b50610151610c56565b3480156102ae57600080fd5b5061020661271081565b3480156102c457600080fd5b5060335461018c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102f157600080fd5b5061027d6103003660046132bd565b60346020526000908152604090205460ff1681565b34801561032157600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561035557600080fd5b50610206610d78565b34801561036a57600080fd5b50610206600881565b34801561037f57600080fd5b506001546103db906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101ad565b610151610422366004613378565b6104a2565b6101516104353660046134c2565b610d89565b34801561044657600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561047a57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b8260005a905083156105595773ffffffffffffffffffffffffffffffffffffffff87161561055957604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b3332811461057a575033731111000000000000000000000000000000001111015b8773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f78231ae6eb73366f912bb1d64351601fb76344c537bbab635ce14d0f376f0195348a8a8a8a6040516105df95949392919061362d565b60405180910390a35060015460009061061e907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643613693565b905080156107a75760006106366004627a12006136d9565b6001546106619190700100000000000000000000000000000000900467ffffffffffffffff16613741565b9050600060086106756004627a12006136d9565b6001546106959085906fffffffffffffffffffffffffffffffff166137b5565b61069f91906136d9565b6106a991906136d9565b6001549091506000906106f5906106df906106d79085906fffffffffffffffffffffffffffffffff16613871565b61271061149c565b6fffffffffffffffffffffffffffffffff6114b7565b90506001841115610768576107656106df670de0b6b3a764000061075161071d6008836136d9565b61072f90670de0b6b3a7640000613741565b61073a60018a613693565b61074c90670de0b6b3a76400006138e5565b6114c6565b61075b90856137b5565b6106d791906136d9565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b600180548491906010906107da908490700100000000000000000000000000000000900467ffffffffffffffff16613922565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550627a1200600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156108b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4f7074696d69736d506f7274616c3a2063616e6e6f7420627579206d6f72652060448201527f676173207468616e20617661696c61626c6520676173206c696d6974000000006064820152608401610550565b6001546000906108e2906fffffffffffffffffffffffffffffffff1667ffffffffffffffff861661394e565b6fffffffffffffffffffffffffffffffff169050600061090648633b9aca006114f7565b6109109083613986565b905060005a61091f9086613693565b90508082111561093b5761093b6109368284613693565b611507565b5050505050505050505050565b6040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101829052600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae557906024016040805180830381865afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb919061399a565b8051909150610c1d5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663529933df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9591906139e9565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634ab65d736040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2891906139e9565b905084811115610b3d57506000949350505050565b600082610b4a8388613693565b610b549190613a02565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae557610b9c8386613693565b610ba69089613a16565b6040518263ffffffff1660e01b8152600401610bc491815260200190565b6040805180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c04919061399a565b8051909450610c195750600095945050505050565b5050505b7f00000000000000000000000000000000000000000000000000000000000000008160200151610c4d9190613a16565b42119392505050565b6000610c626001611535565b90508015610c9757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055610d1260408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b8015610d7557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610d866004627a12006136d9565b81565b60335473ffffffffffffffffffffffffffffffffffffffff1661dead14610e32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610550565b73ffffffffffffffffffffffffffffffffffffffff8916301415610ed8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e7472616374006064820152608401610550565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae557906024016040805180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f89919061399a565b90507f00000000000000000000000000000000000000000000000000000000000000008160200151610fbb9190613a16565b4211611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f7074696d69736d506f7274616c3a2070726f706f73616c206973206e6f742060448201527f7965742066696e616c697a6564000000000000000000000000000000000000006064820152608401610550565b61106061105b36869003860186613a2e565b6116c0565b8151146110ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610550565b60006111358d8d8d8d8d8d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061171c92505050565b905061117c81866040013586868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061175b92505050565b611208576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610550565b60008181526034602052604090205460ff16156112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610550565b600081815260346020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112ea614e208a613a16565b5a1015611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a20696e73756666696369656e742067617360448201527f20746f2066696e616c697a65207769746864726177616c0000000000000000006064820152608401610550565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8e16179055604080516020601f8a01819004810282018101909252888152600091611402918e918d918f918691908f908f908190840183828082843760009201919091525061182492505050565b50603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061146890841515815260200190565b60405180910390a25050505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6000818312156114ac57816114ae565b825b90505b92915050565b60008183126114ac57816114ae565b60006114ae670de0b6b3a7640000836114de866118af565b6114e891906137b5565b6114f291906136d9565b611af3565b6000818310156114ac57816114ae565b6000805a90505b825a61151a9083613693565b10156115305761152982613a94565b915061150e565b505050565b60008054610100900460ff16156115ec578160ff1660011480156115585750303b155b6115e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b506000919050565b60005460ff808416911610611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600081600001518260200151836040015184606001516040516020016116ff949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600086868686868660405160200161173996959493929190613acd565b6040516020818303038152906040528051906020012090509695505050505050565b604080516020810185905260009181018290528190606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506118199101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152908587611d32565b9150505b9392505050565b6000606060008060008661ffff1667ffffffffffffffff81111561184a5761184a6132fa565b6040519080825280601f01601f191660200182016040528015611874576020820181803683370190505b5090506000808751602089018b8e8ef191503d925086831115611895578692505b828152826000602083013e90999098509650505050505050565b600080821361191a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b6000606061192784611d56565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213611b2457506000919050565b680755bf798b4a1bf1e58212611b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610550565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600080611d3e86611e2c565b9050611d4c81868686611e5e565b9695505050505050565b6000808211611dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60608180519060200120604051602001611e4891815260200190565b6040516020818303038152906040529050919050565b6000806000611e6e878686611e9b565b91509150818015611e9057508051602080830191909120875191880191909120145b979650505050505050565b600060606000611eaa85611f90565b90506000806000611ebc848a8961208b565b81519295509093509150158080611ed05750815b611f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610550565b600081611f525760405180602001604052806000815250611f7e565b611f7e86611f61600188613693565b81518110611f7157611f71613b24565b60200260200101516125a8565b919b919a509098505050505050505050565b60606000611f9d836125d2565b90506000815167ffffffffffffffff811115611fbb57611fbb6132fa565b60405190808252806020026020018201604052801561200057816020015b6040805180820190915260608082526020820152815260200190600190039081611fd95790505b50905060005b825181101561208357600061203384838151811061202657612026613b24565b6020026020010151612605565b9050604051806040016040528082815260200161204f836125d2565b81525083838151811061206457612064613b24565b602002602001018190525050808061207b90613a94565b915050612006565b509392505050565b6000606081808061209b876126af565b905060008690506000806120c2604051806040016040528060608152602001606081525090565b60005b8c51811015612564578c81815181106120e0576120e0613b24565b6020026020010151915082846120f69190613a16565b9350612103600188613a16565b9650836121815781518051602090910120851461217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c696420726f6f7420686173680000000000000000000000000000006044820152606401610550565b612272565b8151516020116121fd5781518051602090910120851461217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610550565b8461220b8360000151612832565b14612272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610550565b61227e60106001613a16565b82602001515114156122f757855184141561229857612564565b60008685815181106122ac576122ac613b24565b602001015160f81c60f81b60f81c9050600083602001518260ff16815181106122d7576122d7613b24565b602002602001015190506122ea8161285a565b9650600194505050612552565b600282602001515114156124f057600061231083612890565b905060008160008151811061232757612327613b24565b016020015160f81c9050600061233e600283613b53565b612349906002613b75565b9050600061235a848360ff166128b4565b905060006123688b8a6128b4565b9050600061237683836128ea565b905060ff85166002148061238d575060ff85166003145b156123e3578083511480156123a25750808251145b156123b4576123b1818b613a16565b99505b507f80000000000000000000000000000000000000000000000000000000000000009950612564945050505050565b60ff851615806123f6575060ff85166001145b15612468578251811461243257507f80000000000000000000000000000000000000000000000000000000000000009950612564945050505050565b612459886020015160018151811061244c5761244c613b24565b602002602001015161285a565b9a509750612552945050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e2060448201527f70726566697800000000000000000000000000000000000000000000000000006064820152608401610550565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610550565b8061255c81613a94565b9150506120c5565b507f800000000000000000000000000000000000000000000000000000000000000084148661259387866128b4565b909e909d50909b509950505050505050505050565b602081015180516060916114b1916125c290600190613693565b8151811061202657612026613b24565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906114b190612996565b6060600080600061261585612bc9565b91945092509050600081600181111561263057612630613b98565b14612697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610550565b6126a685602001518484612fd0565b95945050505050565b60606000825160026126c191906138e5565b67ffffffffffffffff8111156126d9576126d96132fa565b6040519080825280601f01601f191660200182016040528015612703576020820181803683370190505b50905060005b835181101561282b57600484828151811061272657612726613b24565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c8261275b8360026138e5565b8151811061276b5761276b613b24565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060108482815181106127ae576127ae613b24565b01602001516127c0919060f81c613b53565b60f81b826127cf8360026138e5565b6127da906001613a16565b815181106127ea576127ea613b24565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061282381613a94565b915050612709565b5092915050565b600060208251101561284657506020015190565b818060200190518101906114b191906139e9565b6000606060208360000151101561287b57612874836130af565b9050612887565b61288483612605565b90505b61181d81612832565b60606114b16128af836020015160008151811061202657612026613b24565b6126af565b6060825182106128d357506040805160208101909152600081526114b1565b6114ae83838486516128e59190613693565b6130ba565b6000805b8084511180156128fe5750808351115b801561297f575082818151811061291757612917613b24565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684828151811061295657612956613b24565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156114ae578061298e81613a94565b9150506128ee565b60606000806129a484612bc9565b919350909150600190508160018111156129c0576129c0613b98565b14612a27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610550565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081612a405790505090506000835b8651811015612bbe5760208210612b06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e000000000000000000000000000000000000000000006064820152608401610550565b600080612b436040518060400160405280858c60000151612b279190613693565b8152602001858c60200151612b3c9190613a16565b9052612bc9565b509150915060405180604001604052808383612b5f9190613a16565b8152602001848b60200151612b749190613a16565b815250858581518110612b8957612b89613b24565b6020908102919091010152612b9f600185613a16565b9350612bab8183613a16565b612bb59084613a16565b92505050612a6d565b508152949350505050565b600080600080846000015111612c3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610550565b6020840151805160001a607f8111612c60576000600160009450945094505050612fc9565b60b78111612cf6576000612c75608083613693565b905080876000015111612ce4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610550565b60019550935060009250612fc9915050565b60bf8111612e19576000612d0b60b783613693565b905080876000015111612d7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610550565b600183015160208290036101000a9004612d948183613a16565b885111612dfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610550565b612e08826001613a16565b9650945060009350612fc992505050565b60f78111612eae576000612e2e60c083613693565b905080876000015111612e9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610550565b600195509350849250612fc9915050565b6000612ebb60f783613693565b905080876000015111612f2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610550565b600183015160208290036101000a9004612f448183613a16565b885111612fad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e000000000000000000006044820152606401610550565b612fb8826001613a16565b9650945060019350612fc992505050565b9193909250565b606060008267ffffffffffffffff811115612fed57612fed6132fa565b6040519080825280601f01601f191660200182016040528015613017576020820181803683370190505b50905080516000141561302b57905061181d565b60006130378587613a16565b90506020820160005b61304b602087613986565b8110156130825782518252613061602084613a16565b925061306e602083613a16565b91508061307a81613a94565b915050613040565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60606114b1826132a7565b6060816130c881601f613a16565b1015613130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b8261313b8382613a16565b10156131a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b6131ad8284613a16565b84511015613217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610550565b606082158015613236576040519150600082526020820160405261329e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561326f578051835260209283019201613257565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60606114b1826020015160008460000151612fd0565b6000602082840312156132cf57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146116bb57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613370576133706132fa565b604052919050565b600080600080600060a0868803121561339057600080fd5b613399866132d6565b94506020808701359450604087013567ffffffffffffffff80821682146133bf57600080fd5b90945060608801359081151582146133d657600080fd5b909350608088013590808211156133ec57600080fd5b818901915089601f83011261340057600080fd5b813581811115613412576134126132fa565b613442847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613329565b91508082528a8482850101111561345857600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008083601f84011261348b57600080fd5b50813567ffffffffffffffff8111156134a357600080fd5b6020830191508360208285010111156134bb57600080fd5b9250929050565b60008060008060008060008060008060006101808c8e0312156134e457600080fd5b8b359a506134f460208d016132d6565b995061350260408d016132d6565b985060608c0135975060808c0135965067ffffffffffffffff60a08d0135111561352b57600080fd5b61353b8d60a08e01358e01613479565b909650945060c08c0135935060808c8e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561357957600080fd5b60e08c01925067ffffffffffffffff6101608d0135111561359957600080fd5b6135aa8d6101608e01358e01613479565b81935080925050509295989b509295989b9093969950565b6000815180845260005b818110156135e8576020818501810151868301820152016135cc565b818111156135fa576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b85815284602082015267ffffffffffffffff84166040820152821515606082015260a060808201526000611e9060a08301846135c2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156136a5576136a5613664565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826136e8576136e86136aa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561373c5761373c613664565b500590565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561377b5761377b613664565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156137af576137af613664565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156137f6576137f6613664565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561383157613831613664565b6000871292508782058712848416161561384d5761384d613664565b8785058712818416161561386357613863613664565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156138ab576138ab613664565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156138df576138df613664565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561391d5761391d613664565b500290565b600067ffffffffffffffff80831681851680830382111561394557613945613664565b01949350505050565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561397d5761397d613664565b02949350505050565b600082613995576139956136aa565b500490565b6000604082840312156139ac57600080fd5b6040516040810181811067ffffffffffffffff821117156139cf576139cf6132fa565b604052825181526020928301519281019290925250919050565b6000602082840312156139fb57600080fd5b5051919050565b600082613a1157613a116136aa565b500690565b60008219821115613a2957613a29613664565b500190565b600060808284031215613a4057600080fd5b6040516080810181811067ffffffffffffffff82111715613a6357613a636132fa565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613ac657613ac6613664565b5060010190565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152613b1860c08301846135c2565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff831680613b6657613b666136aa565b8060ff84160691505092915050565b600060ff821660ff841680821015613b8f57613b8f613664565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080a000a496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
Bin: "0x6101206040523480156200001257600080fd5b5060405162003ffe38038062003ffe8339810160408190526200003591620002bc565b6000608081905260a052600160c0526001600160a01b0382166101005260e08190526200006162000069565b5050620002f8565b6000620000776001620000f8565b9050801562000090576000805461ff0019166101001790555b603380546001600160a01b03191661dead179055620000ae6200020a565b8015620000f5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008054610100900460ff161562000191578160ff1660011480156200013157506200012f30620002ad60201b620014391760201c565b155b620001895760405162461bcd60e51b815260206004820152602e602482015260008051602062003fde83398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b506000919050565b60005460ff808416911610620001f05760405162461bcd60e51b815260206004820152602e602482015260008051602062003fde83398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000180565b506000805460ff191660ff92909216919091179055600190565b600054610100900460ff16620002775760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000180565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b6001600160a01b03163b151590565b60008060408385031215620002d057600080fd5b82516001600160a01b0381168114620002e857600080fd5b6020939093015192949293505050565b60805160a05160c05160e05161010051613c706200036e6000396000818161016a0152818161099101528181610a0801528181610a9b01528181610b6d0152610ec301526000818161044c01528181610c1f0152610f460152600061023b01526000610327015260006104800152613c706000f3fe60806040526004361061012c5760003560e01c8063a14238e7116100a5578063cff0ab9611610074578063eecf1c3611610059578063eecf1c3614610427578063f4daa2911461043a578063f786becd1461046e57600080fd5b8063cff0ab9614610373578063e9e05c421461041457600080fd5b8063a14238e7146102e5578063c8b9153114610315578063ca3e99ba14610349578063cd7c97891461035e57600080fd5b80636bf2606a116100fc5780638129fc1c116100e15780638129fc1c1461028d578063867ead13146102a25780639bf62d82146102b857600080fd5b80636bf2606a146102295780636dbffb781461025d57600080fd5b80621c2ff61461015857806313620abd146101b657806364b79208146101ef5780636bb0291e1461021457600080fd5b36610153576101513334620186a06000604051806020016040528060008152506104a2565b005b600080fd5b34801561016457600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c257600080fd5b506101ce633b9aca0081565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ad565b3480156101fb57600080fd5b50610206627a120081565b6040519081526020016101ad565b34801561022057600080fd5b50610206600481565b34801561023557600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561026957600080fd5b5061027d610278366004613359565b610948565b60405190151581526020016101ad565b34801561029957600080fd5b50610151610c56565b3480156102ae57600080fd5b5061020661271081565b3480156102c457600080fd5b5060335461018c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102f157600080fd5b5061027d610300366004613359565b60346020526000908152604090205460ff1681565b34801561032157600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561035557600080fd5b50610206610d31565b34801561036a57600080fd5b50610206600881565b34801561037f57600080fd5b506001546103db906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101ad565b610151610422366004613414565b6104a2565b61015161043536600461355e565b610d42565b34801561044657600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561047a57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b8260005a905083156105595773ffffffffffffffffffffffffffffffffffffffff87161561055957604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b3332811461057a575033731111000000000000000000000000000000001111015b8773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f78231ae6eb73366f912bb1d64351601fb76344c537bbab635ce14d0f376f0195348a8a8a8a6040516105df9594939291906136c9565b60405180910390a35060015460009061061e907801000000000000000000000000000000000000000000000000900467ffffffffffffffff164361372f565b905080156107a75760006106366004627a1200613775565b6001546106619190700100000000000000000000000000000000900467ffffffffffffffff166137dd565b9050600060086106756004627a1200613775565b6001546106959085906fffffffffffffffffffffffffffffffff16613851565b61069f9190613775565b6106a99190613775565b6001549091506000906106f5906106df906106d79085906fffffffffffffffffffffffffffffffff1661390d565b612710611455565b6fffffffffffffffffffffffffffffffff611470565b90506001841115610768576107656106df670de0b6b3a764000061075161071d600883613775565b61072f90670de0b6b3a76400006137dd565b61073a60018a61372f565b61074c90670de0b6b3a7640000613981565b61147f565b61075b9085613851565b6106d79190613775565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b600180548491906010906107da908490700100000000000000000000000000000000900467ffffffffffffffff166139be565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550627a1200600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156108b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4f7074696d69736d506f7274616c3a2063616e6e6f7420627579206d6f72652060448201527f676173207468616e20617661696c61626c6520676173206c696d6974000000006064820152608401610550565b6001546000906108e2906fffffffffffffffffffffffffffffffff1667ffffffffffffffff86166139ea565b6fffffffffffffffffffffffffffffffff169050600061090648633b9aca006114b0565b6109109083613a22565b905060005a61091f908661372f565b90508082111561093b5761093b610936828461372f565b6114c0565b5050505050505050505050565b6040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101829052600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae557906024016040805180830381865afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb9190613a36565b8051909150610c1d5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663529933df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a959190613a85565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634ab65d736040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b289190613a85565b905084811115610b3d57506000949350505050565b600082610b4a838861372f565b610b549190613a9e565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae557610b9c838661372f565b610ba69089613ab2565b6040518263ffffffff1660e01b8152600401610bc491815260200190565b6040805180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c049190613a36565b8051909450610c195750600095945050505050565b5050505b7f00000000000000000000000000000000000000000000000000000000000000008160200151610c4d9190613ab2565b42119392505050565b6000610c6260016114ee565b90508015610c9757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055610ccb611679565b8015610d2e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610d3f6004627a1200613775565b81565b60335473ffffffffffffffffffffffffffffffffffffffff1661dead14610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610550565b73ffffffffffffffffffffffffffffffffffffffff8916301415610e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e7472616374006064820152608401610550565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae557906024016040805180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f429190613a36565b90507f00000000000000000000000000000000000000000000000000000000000000008160200151610f749190613ab2565b4211611002576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f7074696d69736d506f7274616c3a2070726f706f73616c206973206e6f742060448201527f7965742066696e616c697a6564000000000000000000000000000000000000006064820152608401610550565b61101961101436869003860186613aca565b61175c565b8151146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610550565b60006110ee8d8d8d8d8d8d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117b892505050565b905061113581866040013586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117f792505050565b6111c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610550565b60008181526034602052604090205460ff1615611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610550565b600081815260346020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a3614e208a613ab2565b5a1015611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a20696e73756666696369656e742067617360448201527f20746f2066696e616c697a65207769746864726177616c0000000000000000006064820152608401610550565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8e16179055604080516020601f8a018190048102820181019092528881526000916113bb918e918d918f918691908f908f90819084018382808284376000920191909152506118c092505050565b50603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061142190841515815260200190565b60405180910390a25050505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6000818312156114655781611467565b825b90505b92915050565b60008183126114655781611467565b6000611467670de0b6b3a7640000836114978661194b565b6114a19190613851565b6114ab9190613775565b611b8f565b6000818310156114655781611467565b6000805a90505b825a6114d3908361372f565b10156114e9576114e282613b30565b91506114c7565b505050565b60008054610100900460ff16156115a5578160ff1660011480156115115750303b155b61159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b506000919050565b60005460ff80841691161061163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610550565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6000816000015182602001518360400151846060015160405160200161179b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b60008686868686866040516020016117d596959493929190613b69565b6040516020818303038152906040528051906020012090509695505050505050565b604080516020810185905260009181018290528190606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506118b59101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152908587611dce565b9150505b9392505050565b6000606060008060008661ffff1667ffffffffffffffff8111156118e6576118e6613396565b6040519080825280601f01601f191660200182016040528015611910576020820181803683370190505b5090506000808751602089018b8e8ef191503d925086831115611931578692505b828152826000602083013e90999098509650505050505050565b60008082136119b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b600060606119c384611df2565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213611bc057506000919050565b680755bf798b4a1bf1e58212611c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610550565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600080611dda86611ec8565b9050611de881868686611efa565b9695505050505050565b6000808211611e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60608180519060200120604051602001611ee491815260200190565b6040516020818303038152906040529050919050565b6000806000611f0a878686611f37565b91509150818015611f2c57508051602080830191909120875191880191909120145b979650505050505050565b600060606000611f468561202c565b90506000806000611f58848a89612127565b81519295509093509150158080611f6c5750815b611fd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610550565b600081611fee576040518060200160405280600081525061201a565b61201a86611ffd60018861372f565b8151811061200d5761200d613bc0565b6020026020010151612644565b919b919a509098505050505050505050565b606060006120398361266e565b90506000815167ffffffffffffffff81111561205757612057613396565b60405190808252806020026020018201604052801561209c57816020015b60408051808201909152606080825260208201528152602001906001900390816120755790505b50905060005b825181101561211f5760006120cf8483815181106120c2576120c2613bc0565b60200260200101516126a1565b905060405180604001604052808281526020016120eb8361266e565b81525083838151811061210057612100613bc0565b602002602001018190525050808061211790613b30565b9150506120a2565b509392505050565b600060608180806121378761274b565b9050600086905060008061215e604051806040016040528060608152602001606081525090565b60005b8c51811015612600578c818151811061217c5761217c613bc0565b6020026020010151915082846121929190613ab2565b935061219f600188613ab2565b96508361221d57815180516020909101208514612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c696420726f6f7420686173680000000000000000000000000000006044820152606401610550565b61230e565b81515160201161229957815180516020909101208514612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610550565b846122a783600001516128ce565b1461230e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610550565b61231a60106001613ab2565b826020015151141561239357855184141561233457612600565b600086858151811061234857612348613bc0565b602001015160f81c60f81b60f81c9050600083602001518260ff168151811061237357612373613bc0565b60200260200101519050612386816128f6565b96506001945050506125ee565b6002826020015151141561258c5760006123ac8361292c565b90506000816000815181106123c3576123c3613bc0565b016020015160f81c905060006123da600283613bef565b6123e5906002613c11565b905060006123f6848360ff16612950565b905060006124048b8a612950565b905060006124128383612986565b905060ff851660021480612429575060ff85166003145b1561247f5780835114801561243e5750808251145b156124505761244d818b613ab2565b99505b507f80000000000000000000000000000000000000000000000000000000000000009950612600945050505050565b60ff85161580612492575060ff85166001145b1561250457825181146124ce57507f80000000000000000000000000000000000000000000000000000000000000009950612600945050505050565b6124f588602001516001815181106124e8576124e8613bc0565b60200260200101516128f6565b9a5097506125ee945050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e2060448201527f70726566697800000000000000000000000000000000000000000000000000006064820152608401610550565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610550565b806125f881613b30565b915050612161565b507f800000000000000000000000000000000000000000000000000000000000000084148661262f8786612950565b909e909d50909b509950505050505050505050565b6020810151805160609161146a9161265e9060019061372f565b815181106120c2576120c2613bc0565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061146a90612a32565b606060008060006126b185612c65565b9194509250905060008160018111156126cc576126cc613c34565b14612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610550565b6127428560200151848461306c565b95945050505050565b606060008251600261275d9190613981565b67ffffffffffffffff81111561277557612775613396565b6040519080825280601f01601f19166020018201604052801561279f576020820181803683370190505b50905060005b83518110156128c75760048482815181106127c2576127c2613bc0565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c826127f7836002613981565b8151811061280757612807613bc0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350601084828151811061284a5761284a613bc0565b016020015161285c919060f81c613bef565b60f81b8261286b836002613981565b612876906001613ab2565b8151811061288657612886613bc0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806128bf81613b30565b9150506127a5565b5092915050565b60006020825110156128e257506020015190565b8180602001905181019061146a9190613a85565b60006060602083600001511015612917576129108361314b565b9050612923565b612920836126a1565b90505b6118b9816128ce565b606061146a61294b83602001516000815181106120c2576120c2613bc0565b61274b565b60608251821061296f575060408051602081019091526000815261146a565b6114678383848651612981919061372f565b613156565b6000805b80845111801561299a5750808351115b8015612a1b57508281815181106129b3576129b3613bc0565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181106129f2576129f2613bc0565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156114675780612a2a81613b30565b91505061298a565b6060600080612a4084612c65565b91935090915060019050816001811115612a5c57612a5c613c34565b14612ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610550565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081612adc5790505090506000835b8651811015612c5a5760208210612ba2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e000000000000000000000000000000000000000000006064820152608401610550565b600080612bdf6040518060400160405280858c60000151612bc3919061372f565b8152602001858c60200151612bd89190613ab2565b9052612c65565b509150915060405180604001604052808383612bfb9190613ab2565b8152602001848b60200151612c109190613ab2565b815250858581518110612c2557612c25613bc0565b6020908102919091010152612c3b600185613ab2565b9350612c478183613ab2565b612c519084613ab2565b92505050612b09565b508152949350505050565b600080600080846000015111612cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610550565b6020840151805160001a607f8111612cfc576000600160009450945094505050613065565b60b78111612d92576000612d1160808361372f565b905080876000015111612d80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610550565b60019550935060009250613065915050565b60bf8111612eb5576000612da760b78361372f565b905080876000015111612e16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610550565b600183015160208290036101000a9004612e308183613ab2565b885111612e99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610550565b612ea4826001613ab2565b965094506000935061306592505050565b60f78111612f4a576000612eca60c08361372f565b905080876000015111612f39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610550565b600195509350849250613065915050565b6000612f5760f78361372f565b905080876000015111612fc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610550565b600183015160208290036101000a9004612fe08183613ab2565b885111613049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e000000000000000000006044820152606401610550565b613054826001613ab2565b965094506001935061306592505050565b9193909250565b606060008267ffffffffffffffff81111561308957613089613396565b6040519080825280601f01601f1916602001820160405280156130b3576020820181803683370190505b5090508051600014156130c75790506118b9565b60006130d38587613ab2565b90506020820160005b6130e7602087613a22565b81101561311e57825182526130fd602084613ab2565b925061310a602083613ab2565b91508061311681613b30565b9150506130dc565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b606061146a82613343565b60608161316481601f613ab2565b10156131cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b826131d78382613ab2565b101561323f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b6132498284613ab2565b845110156132b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610550565b6060821580156132d2576040519150600082526020820160405261333a565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561330b5780518352602092830192016132f3565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b606061146a82602001516000846000015161306c565b60006020828403121561336b57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461167457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561340c5761340c613396565b604052919050565b600080600080600060a0868803121561342c57600080fd5b61343586613372565b94506020808701359450604087013567ffffffffffffffff808216821461345b57600080fd5b909450606088013590811515821461347257600080fd5b9093506080880135908082111561348857600080fd5b818901915089601f83011261349c57600080fd5b8135818111156134ae576134ae613396565b6134de847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016133c5565b91508082528a848285010111156134f457600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008083601f84011261352757600080fd5b50813567ffffffffffffffff81111561353f57600080fd5b60208301915083602082850101111561355757600080fd5b9250929050565b60008060008060008060008060008060006101808c8e03121561358057600080fd5b8b359a5061359060208d01613372565b995061359e60408d01613372565b985060608c0135975060808c0135965067ffffffffffffffff60a08d013511156135c757600080fd5b6135d78d60a08e01358e01613515565b909650945060c08c0135935060808c8e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561361557600080fd5b60e08c01925067ffffffffffffffff6101608d0135111561363557600080fd5b6136468d6101608e01358e01613515565b81935080925050509295989b509295989b9093969950565b6000815180845260005b8181101561368457602081850181015186830182015201613668565b81811115613696576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b85815284602082015267ffffffffffffffff84166040820152821515606082015260a060808201526000611f2c60a083018461365e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561374157613741613700565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261378457613784613746565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156137d8576137d8613700565b500590565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561381757613817613700565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561384b5761384b613700565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561389257613892613700565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156138cd576138cd613700565b600087129250878205871284841616156138e9576138e9613700565b878505871281841616156138ff576138ff613700565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561394757613947613700565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561397b5761397b613700565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139b9576139b9613700565b500290565b600067ffffffffffffffff8083168185168083038211156139e1576139e1613700565b01949350505050565b60006fffffffffffffffffffffffffffffffff80831681851681830481118215151615613a1957613a19613700565b02949350505050565b600082613a3157613a31613746565b500490565b600060408284031215613a4857600080fd5b6040516040810181811067ffffffffffffffff82111715613a6b57613a6b613396565b604052825181526020928301519281019290925250919050565b600060208284031215613a9757600080fd5b5051919050565b600082613aad57613aad613746565b500690565b60008219821115613ac557613ac5613700565b500190565b600060808284031215613adc57600080fd5b6040516080810181811067ffffffffffffffff82111715613aff57613aff613396565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b6257613b62613700565b5060010190565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152613bb460c083018461365e565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff831680613c0257613c02613746565b8060ff84160691505092915050565b600060ff821660ff841680821015613c2b57613c2b613700565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080a000a496e697469616c697a61626c653a20636f6e747261637420697320616c726561",
}
// OptimismPortalABI is the input ABI used to generate the binding from.
......
......@@ -2,4 +2,4 @@
// This file is a generated binding and any manual changes will be lost.
package bindings
var OptimismPortalDeployedBin = "0x60806040526004361061012c5760003560e01c8063a14238e7116100a5578063cff0ab9611610074578063eecf1c3611610059578063eecf1c3614610427578063f4daa2911461043a578063f786becd1461046e57600080fd5b8063cff0ab9614610373578063e9e05c421461041457600080fd5b8063a14238e7146102e5578063c8b9153114610315578063ca3e99ba14610349578063cd7c97891461035e57600080fd5b80636bf2606a116100fc5780638129fc1c116100e15780638129fc1c1461028d578063867ead13146102a25780639bf62d82146102b857600080fd5b80636bf2606a146102295780636dbffb781461025d57600080fd5b80621c2ff61461015857806313620abd146101b657806364b79208146101ef5780636bb0291e1461021457600080fd5b36610153576101513334620186a06000604051806020016040528060008152506104a2565b005b600080fd5b34801561016457600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c257600080fd5b506101ce633b9aca0081565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ad565b3480156101fb57600080fd5b50610206627a120081565b6040519081526020016101ad565b34801561022057600080fd5b50610206600481565b34801561023557600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561026957600080fd5b5061027d6102783660046132bd565b610948565b60405190151581526020016101ad565b34801561029957600080fd5b50610151610c56565b3480156102ae57600080fd5b5061020661271081565b3480156102c457600080fd5b5060335461018c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102f157600080fd5b5061027d6103003660046132bd565b60346020526000908152604090205460ff1681565b34801561032157600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561035557600080fd5b50610206610d78565b34801561036a57600080fd5b50610206600881565b34801561037f57600080fd5b506001546103db906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101ad565b610151610422366004613378565b6104a2565b6101516104353660046134c2565b610d89565b34801561044657600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561047a57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b8260005a905083156105595773ffffffffffffffffffffffffffffffffffffffff87161561055957604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b3332811461057a575033731111000000000000000000000000000000001111015b8773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f78231ae6eb73366f912bb1d64351601fb76344c537bbab635ce14d0f376f0195348a8a8a8a6040516105df95949392919061362d565b60405180910390a35060015460009061061e907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643613693565b905080156107a75760006106366004627a12006136d9565b6001546106619190700100000000000000000000000000000000900467ffffffffffffffff16613741565b9050600060086106756004627a12006136d9565b6001546106959085906fffffffffffffffffffffffffffffffff166137b5565b61069f91906136d9565b6106a991906136d9565b6001549091506000906106f5906106df906106d79085906fffffffffffffffffffffffffffffffff16613871565b61271061149c565b6fffffffffffffffffffffffffffffffff6114b7565b90506001841115610768576107656106df670de0b6b3a764000061075161071d6008836136d9565b61072f90670de0b6b3a7640000613741565b61073a60018a613693565b61074c90670de0b6b3a76400006138e5565b6114c6565b61075b90856137b5565b6106d791906136d9565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b600180548491906010906107da908490700100000000000000000000000000000000900467ffffffffffffffff16613922565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550627a1200600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156108b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4f7074696d69736d506f7274616c3a2063616e6e6f7420627579206d6f72652060448201527f676173207468616e20617661696c61626c6520676173206c696d6974000000006064820152608401610550565b6001546000906108e2906fffffffffffffffffffffffffffffffff1667ffffffffffffffff861661394e565b6fffffffffffffffffffffffffffffffff169050600061090648633b9aca006114f7565b6109109083613986565b905060005a61091f9086613693565b90508082111561093b5761093b6109368284613693565b611507565b5050505050505050505050565b6040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101829052600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae557906024016040805180830381865afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb919061399a565b8051909150610c1d5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663529933df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9591906139e9565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634ab65d736040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2891906139e9565b905084811115610b3d57506000949350505050565b600082610b4a8388613693565b610b549190613a02565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae557610b9c8386613693565b610ba69089613a16565b6040518263ffffffff1660e01b8152600401610bc491815260200190565b6040805180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c04919061399a565b8051909450610c195750600095945050505050565b5050505b7f00000000000000000000000000000000000000000000000000000000000000008160200151610c4d9190613a16565b42119392505050565b6000610c626001611535565b90508015610c9757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055610d1260408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b8015610d7557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610d866004627a12006136d9565b81565b60335473ffffffffffffffffffffffffffffffffffffffff1661dead14610e32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610550565b73ffffffffffffffffffffffffffffffffffffffff8916301415610ed8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e7472616374006064820152608401610550565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae557906024016040805180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f89919061399a565b90507f00000000000000000000000000000000000000000000000000000000000000008160200151610fbb9190613a16565b4211611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f7074696d69736d506f7274616c3a2070726f706f73616c206973206e6f742060448201527f7965742066696e616c697a6564000000000000000000000000000000000000006064820152608401610550565b61106061105b36869003860186613a2e565b6116c0565b8151146110ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610550565b60006111358d8d8d8d8d8d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061171c92505050565b905061117c81866040013586868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061175b92505050565b611208576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610550565b60008181526034602052604090205460ff16156112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610550565b600081815260346020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112ea614e208a613a16565b5a1015611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a20696e73756666696369656e742067617360448201527f20746f2066696e616c697a65207769746864726177616c0000000000000000006064820152608401610550565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8e16179055604080516020601f8a01819004810282018101909252888152600091611402918e918d918f918691908f908f908190840183828082843760009201919091525061182492505050565b50603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061146890841515815260200190565b60405180910390a25050505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6000818312156114ac57816114ae565b825b90505b92915050565b60008183126114ac57816114ae565b60006114ae670de0b6b3a7640000836114de866118af565b6114e891906137b5565b6114f291906136d9565b611af3565b6000818310156114ac57816114ae565b6000805a90505b825a61151a9083613693565b10156115305761152982613a94565b915061150e565b505050565b60008054610100900460ff16156115ec578160ff1660011480156115585750303b155b6115e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b506000919050565b60005460ff808416911610611683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600081600001518260200151836040015184606001516040516020016116ff949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600086868686868660405160200161173996959493929190613acd565b6040516020818303038152906040528051906020012090509695505050505050565b604080516020810185905260009181018290528190606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506118199101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152908587611d32565b9150505b9392505050565b6000606060008060008661ffff1667ffffffffffffffff81111561184a5761184a6132fa565b6040519080825280601f01601f191660200182016040528015611874576020820181803683370190505b5090506000808751602089018b8e8ef191503d925086831115611895578692505b828152826000602083013e90999098509650505050505050565b600080821361191a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b6000606061192784611d56565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213611b2457506000919050565b680755bf798b4a1bf1e58212611b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610550565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600080611d3e86611e2c565b9050611d4c81868686611e5e565b9695505050505050565b6000808211611dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60608180519060200120604051602001611e4891815260200190565b6040516020818303038152906040529050919050565b6000806000611e6e878686611e9b565b91509150818015611e9057508051602080830191909120875191880191909120145b979650505050505050565b600060606000611eaa85611f90565b90506000806000611ebc848a8961208b565b81519295509093509150158080611ed05750815b611f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610550565b600081611f525760405180602001604052806000815250611f7e565b611f7e86611f61600188613693565b81518110611f7157611f71613b24565b60200260200101516125a8565b919b919a509098505050505050505050565b60606000611f9d836125d2565b90506000815167ffffffffffffffff811115611fbb57611fbb6132fa565b60405190808252806020026020018201604052801561200057816020015b6040805180820190915260608082526020820152815260200190600190039081611fd95790505b50905060005b825181101561208357600061203384838151811061202657612026613b24565b6020026020010151612605565b9050604051806040016040528082815260200161204f836125d2565b81525083838151811061206457612064613b24565b602002602001018190525050808061207b90613a94565b915050612006565b509392505050565b6000606081808061209b876126af565b905060008690506000806120c2604051806040016040528060608152602001606081525090565b60005b8c51811015612564578c81815181106120e0576120e0613b24565b6020026020010151915082846120f69190613a16565b9350612103600188613a16565b9650836121815781518051602090910120851461217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c696420726f6f7420686173680000000000000000000000000000006044820152606401610550565b612272565b8151516020116121fd5781518051602090910120851461217c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610550565b8461220b8360000151612832565b14612272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610550565b61227e60106001613a16565b82602001515114156122f757855184141561229857612564565b60008685815181106122ac576122ac613b24565b602001015160f81c60f81b60f81c9050600083602001518260ff16815181106122d7576122d7613b24565b602002602001015190506122ea8161285a565b9650600194505050612552565b600282602001515114156124f057600061231083612890565b905060008160008151811061232757612327613b24565b016020015160f81c9050600061233e600283613b53565b612349906002613b75565b9050600061235a848360ff166128b4565b905060006123688b8a6128b4565b9050600061237683836128ea565b905060ff85166002148061238d575060ff85166003145b156123e3578083511480156123a25750808251145b156123b4576123b1818b613a16565b99505b507f80000000000000000000000000000000000000000000000000000000000000009950612564945050505050565b60ff851615806123f6575060ff85166001145b15612468578251811461243257507f80000000000000000000000000000000000000000000000000000000000000009950612564945050505050565b612459886020015160018151811061244c5761244c613b24565b602002602001015161285a565b9a509750612552945050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e2060448201527f70726566697800000000000000000000000000000000000000000000000000006064820152608401610550565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610550565b8061255c81613a94565b9150506120c5565b507f800000000000000000000000000000000000000000000000000000000000000084148661259387866128b4565b909e909d50909b509950505050505050505050565b602081015180516060916114b1916125c290600190613693565b8151811061202657612026613b24565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906114b190612996565b6060600080600061261585612bc9565b91945092509050600081600181111561263057612630613b98565b14612697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610550565b6126a685602001518484612fd0565b95945050505050565b60606000825160026126c191906138e5565b67ffffffffffffffff8111156126d9576126d96132fa565b6040519080825280601f01601f191660200182016040528015612703576020820181803683370190505b50905060005b835181101561282b57600484828151811061272657612726613b24565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c8261275b8360026138e5565b8151811061276b5761276b613b24565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060108482815181106127ae576127ae613b24565b01602001516127c0919060f81c613b53565b60f81b826127cf8360026138e5565b6127da906001613a16565b815181106127ea576127ea613b24565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508061282381613a94565b915050612709565b5092915050565b600060208251101561284657506020015190565b818060200190518101906114b191906139e9565b6000606060208360000151101561287b57612874836130af565b9050612887565b61288483612605565b90505b61181d81612832565b60606114b16128af836020015160008151811061202657612026613b24565b6126af565b6060825182106128d357506040805160208101909152600081526114b1565b6114ae83838486516128e59190613693565b6130ba565b6000805b8084511180156128fe5750808351115b801561297f575082818151811061291757612917613b24565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684828151811061295657612956613b24565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156114ae578061298e81613a94565b9150506128ee565b60606000806129a484612bc9565b919350909150600190508160018111156129c0576129c0613b98565b14612a27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610550565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081612a405790505090506000835b8651811015612bbe5760208210612b06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e000000000000000000000000000000000000000000006064820152608401610550565b600080612b436040518060400160405280858c60000151612b279190613693565b8152602001858c60200151612b3c9190613a16565b9052612bc9565b509150915060405180604001604052808383612b5f9190613a16565b8152602001848b60200151612b749190613a16565b815250858581518110612b8957612b89613b24565b6020908102919091010152612b9f600185613a16565b9350612bab8183613a16565b612bb59084613a16565b92505050612a6d565b508152949350505050565b600080600080846000015111612c3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610550565b6020840151805160001a607f8111612c60576000600160009450945094505050612fc9565b60b78111612cf6576000612c75608083613693565b905080876000015111612ce4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610550565b60019550935060009250612fc9915050565b60bf8111612e19576000612d0b60b783613693565b905080876000015111612d7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610550565b600183015160208290036101000a9004612d948183613a16565b885111612dfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610550565b612e08826001613a16565b9650945060009350612fc992505050565b60f78111612eae576000612e2e60c083613693565b905080876000015111612e9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610550565b600195509350849250612fc9915050565b6000612ebb60f783613693565b905080876000015111612f2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610550565b600183015160208290036101000a9004612f448183613a16565b885111612fad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e000000000000000000006044820152606401610550565b612fb8826001613a16565b9650945060019350612fc992505050565b9193909250565b606060008267ffffffffffffffff811115612fed57612fed6132fa565b6040519080825280601f01601f191660200182016040528015613017576020820181803683370190505b50905080516000141561302b57905061181d565b60006130378587613a16565b90506020820160005b61304b602087613986565b8110156130825782518252613061602084613a16565b925061306e602083613a16565b91508061307a81613a94565b915050613040565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60606114b1826132a7565b6060816130c881601f613a16565b1015613130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b8261313b8382613a16565b10156131a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b6131ad8284613a16565b84511015613217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610550565b606082158015613236576040519150600082526020820160405261329e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561326f578051835260209283019201613257565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60606114b1826020015160008460000151612fd0565b6000602082840312156132cf57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146116bb57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613370576133706132fa565b604052919050565b600080600080600060a0868803121561339057600080fd5b613399866132d6565b94506020808701359450604087013567ffffffffffffffff80821682146133bf57600080fd5b90945060608801359081151582146133d657600080fd5b909350608088013590808211156133ec57600080fd5b818901915089601f83011261340057600080fd5b813581811115613412576134126132fa565b613442847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613329565b91508082528a8482850101111561345857600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008083601f84011261348b57600080fd5b50813567ffffffffffffffff8111156134a357600080fd5b6020830191508360208285010111156134bb57600080fd5b9250929050565b60008060008060008060008060008060006101808c8e0312156134e457600080fd5b8b359a506134f460208d016132d6565b995061350260408d016132d6565b985060608c0135975060808c0135965067ffffffffffffffff60a08d0135111561352b57600080fd5b61353b8d60a08e01358e01613479565b909650945060c08c0135935060808c8e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561357957600080fd5b60e08c01925067ffffffffffffffff6101608d0135111561359957600080fd5b6135aa8d6101608e01358e01613479565b81935080925050509295989b509295989b9093969950565b6000815180845260005b818110156135e8576020818501810151868301820152016135cc565b818111156135fa576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b85815284602082015267ffffffffffffffff84166040820152821515606082015260a060808201526000611e9060a08301846135c2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156136a5576136a5613664565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826136e8576136e86136aa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561373c5761373c613664565b500590565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561377b5761377b613664565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156137af576137af613664565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156137f6576137f6613664565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561383157613831613664565b6000871292508782058712848416161561384d5761384d613664565b8785058712818416161561386357613863613664565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156138ab576138ab613664565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156138df576138df613664565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561391d5761391d613664565b500290565b600067ffffffffffffffff80831681851680830382111561394557613945613664565b01949350505050565b60006fffffffffffffffffffffffffffffffff8083168185168183048111821515161561397d5761397d613664565b02949350505050565b600082613995576139956136aa565b500490565b6000604082840312156139ac57600080fd5b6040516040810181811067ffffffffffffffff821117156139cf576139cf6132fa565b604052825181526020928301519281019290925250919050565b6000602082840312156139fb57600080fd5b5051919050565b600082613a1157613a116136aa565b500690565b60008219821115613a2957613a29613664565b500190565b600060808284031215613a4057600080fd5b6040516080810181811067ffffffffffffffff82111715613a6357613a636132fa565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613ac657613ac6613664565b5060010190565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152613b1860c08301846135c2565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff831680613b6657613b666136aa565b8060ff84160691505092915050565b600060ff821660ff841680821015613b8f57613b8f613664565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080a000a"
var OptimismPortalDeployedBin = "0x60806040526004361061012c5760003560e01c8063a14238e7116100a5578063cff0ab9611610074578063eecf1c3611610059578063eecf1c3614610427578063f4daa2911461043a578063f786becd1461046e57600080fd5b8063cff0ab9614610373578063e9e05c421461041457600080fd5b8063a14238e7146102e5578063c8b9153114610315578063ca3e99ba14610349578063cd7c97891461035e57600080fd5b80636bf2606a116100fc5780638129fc1c116100e15780638129fc1c1461028d578063867ead13146102a25780639bf62d82146102b857600080fd5b80636bf2606a146102295780636dbffb781461025d57600080fd5b80621c2ff61461015857806313620abd146101b657806364b79208146101ef5780636bb0291e1461021457600080fd5b36610153576101513334620186a06000604051806020016040528060008152506104a2565b005b600080fd5b34801561016457600080fd5b5061018c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c257600080fd5b506101ce633b9aca0081565b6040516fffffffffffffffffffffffffffffffff90911681526020016101ad565b3480156101fb57600080fd5b50610206627a120081565b6040519081526020016101ad565b34801561022057600080fd5b50610206600481565b34801561023557600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561026957600080fd5b5061027d610278366004613359565b610948565b60405190151581526020016101ad565b34801561029957600080fd5b50610151610c56565b3480156102ae57600080fd5b5061020661271081565b3480156102c457600080fd5b5060335461018c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102f157600080fd5b5061027d610300366004613359565b60346020526000908152604090205460ff1681565b34801561032157600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561035557600080fd5b50610206610d31565b34801561036a57600080fd5b50610206600881565b34801561037f57600080fd5b506001546103db906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101ad565b610151610422366004613414565b6104a2565b61015161043536600461355e565b610d42565b34801561044657600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b34801561047a57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b8260005a905083156105595773ffffffffffffffffffffffffffffffffffffffff87161561055957604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b3332811461057a575033731111000000000000000000000000000000001111015b8773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f78231ae6eb73366f912bb1d64351601fb76344c537bbab635ce14d0f376f0195348a8a8a8a6040516105df9594939291906136c9565b60405180910390a35060015460009061061e907801000000000000000000000000000000000000000000000000900467ffffffffffffffff164361372f565b905080156107a75760006106366004627a1200613775565b6001546106619190700100000000000000000000000000000000900467ffffffffffffffff166137dd565b9050600060086106756004627a1200613775565b6001546106959085906fffffffffffffffffffffffffffffffff16613851565b61069f9190613775565b6106a99190613775565b6001549091506000906106f5906106df906106d79085906fffffffffffffffffffffffffffffffff1661390d565b612710611455565b6fffffffffffffffffffffffffffffffff611470565b90506001841115610768576107656106df670de0b6b3a764000061075161071d600883613775565b61072f90670de0b6b3a76400006137dd565b61073a60018a61372f565b61074c90670de0b6b3a7640000613981565b61147f565b61075b9085613851565b6106d79190613775565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b600180548491906010906107da908490700100000000000000000000000000000000900467ffffffffffffffff166139be565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550627a1200600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156108b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603c60248201527f4f7074696d69736d506f7274616c3a2063616e6e6f7420627579206d6f72652060448201527f676173207468616e20617661696c61626c6520676173206c696d6974000000006064820152608401610550565b6001546000906108e2906fffffffffffffffffffffffffffffffff1667ffffffffffffffff86166139ea565b6fffffffffffffffffffffffffffffffff169050600061090648633b9aca006114b0565b6109109083613a22565b905060005a61091f908661372f565b90508082111561093b5761093b610936828461372f565b6114c0565b5050505050505050505050565b6040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101829052600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae557906024016040805180830381865afa1580156109d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fb9190613a36565b8051909150610c1d5760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663529933df6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a959190613a85565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634ab65d736040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b289190613a85565b905084811115610b3d57506000949350505050565b600082610b4a838861372f565b610b549190613a9e565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae557610b9c838661372f565b610ba69089613ab2565b6040518263ffffffff1660e01b8152600401610bc491815260200190565b6040805180830381865afa158015610be0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c049190613a36565b8051909450610c195750600095945050505050565b5050505b7f00000000000000000000000000000000000000000000000000000000000000008160200151610c4d9190613ab2565b42119392505050565b6000610c6260016114ee565b90508015610c9757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055610ccb611679565b8015610d2e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610d3f6004627a1200613775565b81565b60335473ffffffffffffffffffffffffffffffffffffffff1661dead14610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e006064820152608401610550565b73ffffffffffffffffffffffffffffffffffffffff8916301415610e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e7472616374006064820152608401610550565b6040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018590526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a25ae557906024016040805180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f429190613a36565b90507f00000000000000000000000000000000000000000000000000000000000000008160200151610f749190613ab2565b4211611002576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4f7074696d69736d506f7274616c3a2070726f706f73616c206973206e6f742060448201527f7965742066696e616c697a6564000000000000000000000000000000000000006064820152608401610550565b61101961101436869003860186613aca565b61175c565b8151146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f6600000000000000000000000000000000000000000000006064820152608401610550565b60006110ee8d8d8d8d8d8d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117b892505050565b905061113581866040013586868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117f792505050565b6111c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f6600000000000000000000000000006064820152608401610550565b60008181526034602052604090205460ff1615611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a656400000000000000000000006064820152608401610550565b600081815260346020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556112a3614e208a613ab2565b5a1015611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a20696e73756666696369656e742067617360448201527f20746f2066696e616c697a65207769746864726177616c0000000000000000006064820152608401610550565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8e16179055604080516020601f8a018190048102820181019092528881526000916113bb918e918d918f918691908f908f90819084018382808284376000920191909152506118c092505050565b50603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061142190841515815260200190565b60405180910390a25050505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6000818312156114655781611467565b825b90505b92915050565b60008183126114655781611467565b6000611467670de0b6b3a7640000836114978661194b565b6114a19190613851565b6114ab9190613775565b611b8f565b6000818310156114655781611467565b6000805a90505b825a6114d3908361372f565b10156114e9576114e282613b30565b91506114c7565b505050565b60008054610100900460ff16156115a5578160ff1660011480156115115750303b155b61159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b506000919050565b60005460ff80841691161061163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610550565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610550565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6000816000015182602001518360400151846060015160405160200161179b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b60008686868686866040516020016117d596959493929190613b69565b6040516020818303038152906040528051906020012090509695505050505050565b604080516020810185905260009181018290528190606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506118b59101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152908587611dce565b9150505b9392505050565b6000606060008060008661ffff1667ffffffffffffffff8111156118e6576118e6613396565b6040519080825280601f01601f191660200182016040528015611910576020820181803683370190505b5090506000808751602089018b8e8ef191503d925086831115611931578692505b828152826000602083013e90999098509650505050505050565b60008082136119b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b600060606119c384611df2565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c18213611bc057506000919050565b680755bf798b4a1bf1e58212611c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f5700000000000000000000000000000000000000006044820152606401610550565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b600080611dda86611ec8565b9050611de881868686611efa565b9695505050505050565b6000808211611e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e454400000000000000000000000000000000000000000000006044820152606401610550565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60608180519060200120604051602001611ee491815260200190565b6040516020818303038152906040529050919050565b6000806000611f0a878686611f37565b91509150818015611f2c57508051602080830191909120875191880191909120145b979650505050505050565b600060606000611f468561202c565b90506000806000611f58848a89612127565b81519295509093509150158080611f6c5750815b611fd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610550565b600081611fee576040518060200160405280600081525061201a565b61201a86611ffd60018861372f565b8151811061200d5761200d613bc0565b6020026020010151612644565b919b919a509098505050505050505050565b606060006120398361266e565b90506000815167ffffffffffffffff81111561205757612057613396565b60405190808252806020026020018201604052801561209c57816020015b60408051808201909152606080825260208201528152602001906001900390816120755790505b50905060005b825181101561211f5760006120cf8483815181106120c2576120c2613bc0565b60200260200101516126a1565b905060405180604001604052808281526020016120eb8361266e565b81525083838151811061210057612100613bc0565b602002602001018190525050808061211790613b30565b9150506120a2565b509392505050565b600060608180806121378761274b565b9050600086905060008061215e604051806040016040528060608152602001606081525090565b60005b8c51811015612600578c818151811061217c5761217c613bc0565b6020026020010151915082846121929190613ab2565b935061219f600188613ab2565b96508361221d57815180516020909101208514612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c696420726f6f7420686173680000000000000000000000000000006044820152606401610550565b61230e565b81515160201161229957815180516020909101208514612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610550565b846122a783600001516128ce565b1461230e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610550565b61231a60106001613ab2565b826020015151141561239357855184141561233457612600565b600086858151811061234857612348613bc0565b602001015160f81c60f81b60f81c9050600083602001518260ff168151811061237357612373613bc0565b60200260200101519050612386816128f6565b96506001945050506125ee565b6002826020015151141561258c5760006123ac8361292c565b90506000816000815181106123c3576123c3613bc0565b016020015160f81c905060006123da600283613bef565b6123e5906002613c11565b905060006123f6848360ff16612950565b905060006124048b8a612950565b905060006124128383612986565b905060ff851660021480612429575060ff85166003145b1561247f5780835114801561243e5750808251145b156124505761244d818b613ab2565b99505b507f80000000000000000000000000000000000000000000000000000000000000009950612600945050505050565b60ff85161580612492575060ff85166001145b1561250457825181146124ce57507f80000000000000000000000000000000000000000000000000000000000000009950612600945050505050565b6124f588602001516001815181106124e8576124e8613bc0565b60200260200101516128f6565b9a5097506125ee945050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e2060448201527f70726566697800000000000000000000000000000000000000000000000000006064820152608401610550565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610550565b806125f881613b30565b915050612161565b507f800000000000000000000000000000000000000000000000000000000000000084148661262f8786612950565b909e909d50909b509950505050505050505050565b6020810151805160609161146a9161265e9060019061372f565b815181106120c2576120c2613bc0565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061146a90612a32565b606060008060006126b185612c65565b9194509250905060008160018111156126cc576126cc613c34565b14612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e00000000000000006044820152606401610550565b6127428560200151848461306c565b95945050505050565b606060008251600261275d9190613981565b67ffffffffffffffff81111561277557612775613396565b6040519080825280601f01601f19166020018201604052801561279f576020820181803683370190505b50905060005b83518110156128c75760048482815181106127c2576127c2613bc0565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016901c826127f7836002613981565b8151811061280757612807613bc0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350601084828151811061284a5761284a613bc0565b016020015161285c919060f81c613bef565b60f81b8261286b836002613981565b612876906001613ab2565b8151811061288657612886613bc0565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806128bf81613b30565b9150506127a5565b5092915050565b60006020825110156128e257506020015190565b8180602001905181019061146a9190613a85565b60006060602083600001511015612917576129108361314b565b9050612923565b612920836126a1565b90505b6118b9816128ce565b606061146a61294b83602001516000815181106120c2576120c2613bc0565b61274b565b60608251821061296f575060408051602081019091526000815261146a565b6114678383848651612981919061372f565b613156565b6000805b80845111801561299a5750808351115b8015612a1b57508281815181106129b3576129b3613bc0565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181106129f2576129f2613bc0565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156114675780612a2a81613b30565b91505061298a565b6060600080612a4084612c65565b91935090915060019050816001811115612a5c57612a5c613c34565b14612ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e0000000000000000006044820152606401610550565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081612adc5790505090506000835b8651811015612c5a5760208210612ba2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201527f7374206c656e6774682e000000000000000000000000000000000000000000006064820152608401610550565b600080612bdf6040518060400160405280858c60000151612bc3919061372f565b8152602001858c60200151612bd89190613ab2565b9052612c65565b509150915060405180604001604052808383612bfb9190613ab2565b8152602001848b60200151612c109190613ab2565b815250858581518110612c2557612c25613bc0565b6020908102919091010152612c3b600185613ab2565b9350612c478183613ab2565b612c519084613ab2565b92505050612b09565b508152949350505050565b600080600080846000015111612cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e00000000000000006044820152606401610550565b6020840151805160001a607f8111612cfc576000600160009450945094505050613065565b60b78111612d92576000612d1160808361372f565b905080876000015111612d80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e000000000000006044820152606401610550565b60019550935060009250613065915050565b60bf8111612eb5576000612da760b78361372f565b905080876000015111612e16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610550565b600183015160208290036101000a9004612e308183613ab2565b885111612e99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e00000000000000006044820152606401610550565b612ea4826001613ab2565b965094506000935061306592505050565b60f78111612f4a576000612eca60c08361372f565b905080876000015111612f39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e0000000000000000006044820152606401610550565b600195509350849250613065915050565b6000612f5760f78361372f565b905080876000015111612fc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610550565b600183015160208290036101000a9004612fe08183613ab2565b885111613049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c696420524c50206c6f6e67206c6973742e000000000000000000006044820152606401610550565b613054826001613ab2565b965094506001935061306592505050565b9193909250565b606060008267ffffffffffffffff81111561308957613089613396565b6040519080825280601f01601f1916602001820160405280156130b3576020820181803683370190505b5090508051600014156130c75790506118b9565b60006130d38587613ab2565b90506020820160005b6130e7602087613a22565b81101561311e57825182526130fd602084613ab2565b925061310a602083613ab2565b91508061311681613b30565b9150506130dc565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b606061146a82613343565b60608161316481601f613ab2565b10156131cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b826131d78382613ab2565b101561323f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610550565b6132498284613ab2565b845110156132b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610550565b6060821580156132d2576040519150600082526020820160405261333a565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561330b5780518352602092830192016132f3565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b606061146a82602001516000846000015161306c565b60006020828403121561336b57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461167457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561340c5761340c613396565b604052919050565b600080600080600060a0868803121561342c57600080fd5b61343586613372565b94506020808701359450604087013567ffffffffffffffff808216821461345b57600080fd5b909450606088013590811515821461347257600080fd5b9093506080880135908082111561348857600080fd5b818901915089601f83011261349c57600080fd5b8135818111156134ae576134ae613396565b6134de847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016133c5565b91508082528a848285010111156134f457600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008083601f84011261352757600080fd5b50813567ffffffffffffffff81111561353f57600080fd5b60208301915083602082850101111561355757600080fd5b9250929050565b60008060008060008060008060008060006101808c8e03121561358057600080fd5b8b359a5061359060208d01613372565b995061359e60408d01613372565b985060608c0135975060808c0135965067ffffffffffffffff60a08d013511156135c757600080fd5b6135d78d60a08e01358e01613515565b909650945060c08c0135935060808c8e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2001121561361557600080fd5b60e08c01925067ffffffffffffffff6101608d0135111561363557600080fd5b6136468d6101608e01358e01613515565b81935080925050509295989b509295989b9093969950565b6000815180845260005b8181101561368457602081850181015186830182015201613668565b81811115613696576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b85815284602082015267ffffffffffffffff84166040820152821515606082015260a060808201526000611f2c60a083018461365e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561374157613741613700565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261378457613784613746565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156137d8576137d8613700565b500590565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561381757613817613700565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01831381161561384b5761384b613700565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561389257613892613700565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156138cd576138cd613700565b600087129250878205871284841616156138e9576138e9613700565b878505871281841616156138ff576138ff613700565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0384138115161561394757613947613700565b827f800000000000000000000000000000000000000000000000000000000000000003841281161561397b5761397b613700565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139b9576139b9613700565b500290565b600067ffffffffffffffff8083168185168083038211156139e1576139e1613700565b01949350505050565b60006fffffffffffffffffffffffffffffffff80831681851681830481118215151615613a1957613a19613700565b02949350505050565b600082613a3157613a31613746565b500490565b600060408284031215613a4857600080fd5b6040516040810181811067ffffffffffffffff82111715613a6b57613a6b613396565b604052825181526020928301519281019290925250919050565b600060208284031215613a9757600080fd5b5051919050565b600082613aad57613aad613746565b500690565b60008219821115613ac557613ac5613700565b500190565b600060808284031215613adc57600080fd5b6040516080810181811067ffffffffffffffff82111715613aff57613aff613396565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b6257613b62613700565b5060010190565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152613bb460c083018461365e565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff831680613c0257613c02613746565b8060ff84160691505092915050565b600060ff821660ff841680821015613c2b57613c2b613700565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080a000a"
......@@ -254,13 +254,13 @@ RLPWriter_Test:test_writeUint_smallint3() (gas: 7372)
RLPWriter_Test:test_writeUint_smallint4() (gas: 7351)
RLPWriter_Test:test_writeUint_zero() (gas: 7798)
ResourceMetering_Test:test_initialResourceParams() (gas: 8964)
ResourceMetering_Test:test_updateNoGasDelta() (gas: 2008269)
ResourceMetering_Test:test_updateOneEmptyBlock() (gas: 18123)
ResourceMetering_Test:test_updateParamsNoChange() (gas: 13860)
ResourceMetering_Test:test_updateTenEmptyBlocks() (gas: 20523)
ResourceMetering_Test:test_updateTwoEmptyBlocks() (gas: 20546)
ResourceMetering_Test:test_useMaxSucceeds() (gas: 8017023)
ResourceMetering_Test:test_useMoreThanMaxReverts() (gas: 16002)
ResourceMetering_Test:test_updateNoGasDelta() (gas: 2008317)
ResourceMetering_Test:test_updateOneEmptyBlock() (gas: 18171)
ResourceMetering_Test:test_updateParamsNoChange() (gas: 13956)
ResourceMetering_Test:test_updateTenEmptyBlocks() (gas: 20571)
ResourceMetering_Test:test_updateTwoEmptyBlocks() (gas: 20594)
ResourceMetering_Test:test_useMaxSucceeds() (gas: 8017119)
ResourceMetering_Test:test_useMoreThanMaxReverts() (gas: 16047)
Semver_Test:test_behindProxy() (gas: 504908)
Semver_Test:test_major() (gas: 5406)
Semver_Test:test_minor() (gas: 5430)
......
......@@ -86,6 +86,8 @@ contract L1StandardBridge is StandardBridge, Semver {
);
/**
* @custom:semver 0.0.1
*
* @param _messenger Address of the L1CrossDomainMessenger.
*/
constructor(address payable _messenger) Semver(0, 0, 1) {
......
......@@ -99,12 +99,11 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver {
constructor(L2OutputOracle _l2Oracle, uint256 _finalizationPeriodSeconds) Semver(0, 0, 1) {
L2_ORACLE = _l2Oracle;
FINALIZATION_PERIOD_SECONDS = _finalizationPeriodSeconds;
initialize();
}
/**
* @notice Intializes mutable variables.
* @notice Initializer;
*/
function initialize() public initializer {
l2Sender = DEFAULT_L2_SENDER;
......
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;
import { Initializable } from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
import { Math } from "@openzeppelin/contracts/utils/math/Math.sol";
import { SignedMath } from "@openzeppelin/contracts/utils/math/SignedMath.sol";
import { FixedPointMathLib } from "@rari-capital/solmate/src/utils/FixedPointMathLib.sol";
......@@ -11,7 +12,7 @@ import { Burn } from "../libraries/Burn.sol";
* @notice ResourceMetering implements an EIP-1559 style resource metering system where pricing
* updates automatically based on current demand.
*/
contract ResourceMetering {
abstract contract ResourceMetering is Initializable {
/**
* @notice Represents the various parameters that control the way in which resources are
* metered. Corresponds to the EIP-1559 resource metering system.
......@@ -62,19 +63,11 @@ contract ResourceMetering {
*/
uint256[49] private __gap;
/**
* @notice Set the initial values. In order to enable this contract to be used in an upgradable
* context, the constructor calls a separate init function.
*/
constructor() {
__ResourceMetering_init();
}
/**
* @notice Sets initial resource parameter values. This function must either be called by the
* initializer function of an upgradeable child contract.
*/
function __ResourceMetering_init() internal {
function __ResourceMetering_init() internal onlyInitializing {
params = ResourceParams({
prevBaseFee: INITIAL_BASE_FEE,
prevBoughtGas: 0,
......
......@@ -7,6 +7,10 @@ import { Proxy } from "../universal/Proxy.sol";
contract MeterUser is ResourceMetering {
constructor() {
initialize();
}
function initialize() public initializer {
__ResourceMetering_init();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment