diff --git a/.gitignore b/.gitignore index 5fc9712a..cea8f969 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ dist .idea + test/gethData +test/coverage.out diff --git a/cmd/main.go b/cmd/main.go index 70875a22..05b1e3e9 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -83,7 +83,7 @@ func start(cliCtx *cli.Context) error { } // Load EtherMan - etherman, err := etherman.New(c.L1) + etm, err := etherman.New(c.L1) if err != nil { log.Fatal(err) } @@ -92,14 +92,14 @@ func start(cliCtx *cli.Context) error { selfAddr := crypto.PubkeyToAddress(pk.PublicKey) // ensure synchro/reorg start block is set - err = synchronizer.InitStartBlock(storage, &types.EthClientFactoryImpl{}, c.L1) + err = synchronizer.InitStartBlock(storage, types.NewEthClientFactory(), c.L1) if err != nil { log.Fatal(err) } var cancelFuncs []context.CancelFunc - sequencerTracker, err := sequencer.NewTracker(c.L1, etherman) + sequencerTracker, err := sequencer.NewTracker(c.L1, etm) if err != nil { log.Fatal(err) } @@ -119,7 +119,7 @@ func start(cliCtx *cli.Context) error { cancelFuncs = append(cancelFuncs, detector.Stop) batchSynchronizer, err := synchronizer.NewBatchSynchronizer(c.L1, selfAddr, - storage, detector.Subscribe(), etherman, sequencerTracker, client.NewFactory()) + storage, detector.Subscribe(), etm, sequencerTracker, client.NewFactory()) if err != nil { log.Fatal(err) } diff --git a/config/config.go b/config/config.go index 43e9f17a..b87cc51c 100644 --- a/config/config.go +++ b/config/config.go @@ -32,13 +32,13 @@ type Config struct { // L1Config is a struct that defines L1 contract and service settings type L1Config struct { - WsURL string `mapstructure:"WsURL"` - RpcURL string `mapstructure:"RpcURL"` - CDKValidiumAddress string `mapstructure:"CDKValidiumAddress"` - DataCommitteeAddress string `mapstructure:"DataCommitteeAddress"` - Timeout types.Duration `mapstructure:"Timeout"` - RetryPeriod types.Duration `mapstructure:"RetryPeriod"` - BlockBatchSize uint `mapstructure:"BlockBatchSize"` + WsURL string `mapstructure:"WsURL"` + RpcURL string `mapstructure:"RpcURL"` + PolygonValidiumAddress string `mapstructure:"PolygonValidiumAddress"` + DataCommitteeAddress string `mapstructure:"DataCommitteeAddress"` + Timeout types.Duration `mapstructure:"Timeout"` + RetryPeriod types.Duration `mapstructure:"RetryPeriod"` + BlockBatchSize uint `mapstructure:"BlockBatchSize"` } // Load loads the configuration baseed on the cli context @@ -47,6 +47,12 @@ func Load(ctx *cli.Context) (*Config, error) { if err != nil { return nil, err } + + viper.AutomaticEnv() + replacer := strings.NewReplacer(".", "_") + viper.SetEnvKeyReplacer(replacer) + viper.SetEnvPrefix("DATA_NODE") + configFilePath := ctx.String(FlagCfg) if configFilePath != "" { dirName, fileName := filepath.Split(configFilePath) @@ -57,18 +63,8 @@ func Load(ctx *cli.Context) (*Config, error) { viper.AddConfigPath(dirName) viper.SetConfigName(fileNameWithoutExtension) viper.SetConfigType(fileExtension) - } - viper.AutomaticEnv() - replacer := strings.NewReplacer(".", "_") - viper.SetEnvKeyReplacer(replacer) - viper.SetEnvPrefix("DATA_NODE") - err = viper.ReadInConfig() - if err != nil { - _, ok := err.(viper.ConfigFileNotFoundError) - if ok { - log.Infof("config file not found") - } else { - log.Infof("error reading config file: ", err) + err = viper.ReadInConfig() + if err != nil { return nil, err } } diff --git a/config/config_test.go b/config/config_test.go index f5a9ee73..b0178fd1 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -1,6 +1,9 @@ package config import ( + "flag" + "os" + "path/filepath" "reflect" "strings" "testing" @@ -25,8 +28,8 @@ func Test_Defaults(t *testing.T) { expectedValue: "http://127.0.0.1:8545", }, { - path: "L1.CDKValidiumAddress", - expectedValue: "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", + path: "L1.PolygonValidiumAddress", + expectedValue: "0x8dAF17A20c9DBA35f005b6324F493785D239719d", }, { path: "L1.Timeout", @@ -56,6 +59,32 @@ func Test_Defaults(t *testing.T) { } } +func Test_ConfigFileNotFound(t *testing.T) { + flags := flag.FlagSet{} + flags.String("cfg", "/fictitious-file/foo.cfg", "") + + ctx := cli.NewContext(cli.NewApp(), &flags, nil) + _, err := Load(ctx) + require.Error(t, err) +} + +func Test_ConfigFileOverride(t *testing.T) { + tempDir := t.TempDir() + overrides := filepath.Join(tempDir, "overrides.toml") + f, err := os.Create(overrides) + require.NoError(t, err) + _, err = f.WriteString("[L1]\n") + require.NoError(t, err) + _, err = f.WriteString("PolygonValidiumAddress = \"0xDEADBEEF\"") + require.NoError(t, err) + flags := flag.FlagSet{} + flags.String("cfg", overrides, "") + ctx := cli.NewContext(cli.NewApp(), &flags, nil) + cfg, err := Load(ctx) + require.NoError(t, err) + require.Equal(t, "0xDEADBEEF", cfg.L1.PolygonValidiumAddress) +} + func getValueFromStruct(path string, object interface{}) interface{} { keySlice := strings.Split(path, ".") v := reflect.ValueOf(object) diff --git a/config/default.go b/config/default.go index 710d2ec6..a0606240 100644 --- a/config/default.go +++ b/config/default.go @@ -14,8 +14,8 @@ PrivateKey = {Path = "/pk/test-member.keystore", Password = "testonly"} [L1] WsURL = "ws://127.0.0.1:8546" RpcURL = "http://127.0.0.1:8545" -CDKValidiumAddress = "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82" -DataCommitteeAddress = "0x0" +PolygonValidiumAddress = "0x8dAF17A20c9DBA35f005b6324F493785D239719d" +DataCommitteeAddress = "0x68B1D87F95878fE05B998F19b66F4baba5De1aed" Timeout = "1m" RetryPeriod = "5s" BlockBatchSize = "64" diff --git a/config/default_test.go b/config/default_test.go new file mode 100644 index 00000000..8304b8ad --- /dev/null +++ b/config/default_test.go @@ -0,0 +1,13 @@ +package config + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func Test_DefaultsConstructor(t *testing.T) { + dflt, err := Default() + require.NoError(t, err) + require.Equal(t, "committee_user", dflt.DB.User) +} diff --git a/docs/running.md b/docs/running.md index baadd4c9..907d389c 100644 --- a/docs/running.md +++ b/docs/running.md @@ -78,8 +78,8 @@ PrivateKey = {Path = "/pk/test-member.keystore", Password = "testonly"} # CHANGE [L1] WsURL = "ws://URLofYourL1Node:8546" # CHANGE THIS: use the URL of your L1 node RpcURL = "http://URLofYourL1Node:8545" # CHANGE THIS: use the URL of your L1 node -CDKValidiumAddress = "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82" # CHANGE THIS: Address of the Validium smart contract -DataCommitteeAddress = "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" # CHANGE THIS: Address of the data availability committee smart contract +PolygonValidiumAddress = "0x8dAF17A20c9DBA35f005b6324F493785D239719d" # CHANGE THIS: Address of the Validium smart contract +DataCommitteeAddress = "0x68B1D87F95878fE05B998F19b66F4baba5De1aed" # CHANGE THIS: Address of the data availability committee smart contract Timeout = "3m" RetryPeriod = "5s" BlockBatchSize = 32 diff --git a/etherman/etherman.go b/etherman/etherman.go index 0b41f9c8..cc9b7489 100644 --- a/etherman/etherman.go +++ b/etherman/etherman.go @@ -6,8 +6,8 @@ import ( "math/big" "github.com/0xPolygon/cdk-data-availability/config" - "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/cdkdatacommittee" - "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/cdkvalidium" + "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/polygondatacommittee" + "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/polygonvalidium" "github.com/0xPolygon/cdk-data-availability/log" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" @@ -16,6 +16,19 @@ import ( "github.com/ethereum/go-ethereum/event" ) +// DataCommitteeMember represents a member of the Data Committee +type DataCommitteeMember struct { + Addr common.Address + URL string +} + +// DataCommittee represents a specific committee +type DataCommittee struct { + AddressesHash common.Hash + Members []DataCommitteeMember + RequiredSignatures uint64 +} + // Etherman defines functions that should be implemented by Etherman type Etherman interface { GetCurrentDataCommittee() (*DataCommittee, error) @@ -24,31 +37,29 @@ type Etherman interface { TrustedSequencer() (common.Address, error) WatchSetTrustedSequencer( ctx context.Context, - events chan *cdkvalidium.CdkvalidiumSetTrustedSequencer, + events chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer, ) (event.Subscription, error) TrustedSequencerURL() (string, error) WatchSetTrustedSequencerURL( ctx context.Context, - events chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL, + events chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL, ) (event.Subscription, error) HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error) FilterSequenceBatches( opts *bind.FilterOpts, numBatch []uint64, - ) (*cdkvalidium.CdkvalidiumSequenceBatchesIterator, error) + ) (*polygonvalidium.PolygonvalidiumSequenceBatchesIterator, error) } -var _ Etherman = (*EthermanImpl)(nil) - -// EthermanImpl is the implementation of EtherMan. -type EthermanImpl struct { +// etherman is the implementation of EtherMan. +type etherman struct { EthClient *ethclient.Client - CDKValidium *cdkvalidium.Cdkvalidium - DataCommittee *cdkdatacommittee.Cdkdatacommittee + CDKValidium *polygonvalidium.Polygonvalidium + DataCommittee *polygondatacommittee.Polygondatacommittee } // New creates a new etherman -func New(cfg config.L1Config) (*EthermanImpl, error) { +func New(cfg config.L1Config) (Etherman, error) { ctx, cancel := context.WithTimeout(context.Background(), cfg.Timeout.Duration) defer cancel() @@ -58,18 +69,18 @@ func New(cfg config.L1Config) (*EthermanImpl, error) { return nil, err } - cdkValidium, err := cdkvalidium.NewCdkvalidium(common.HexToAddress(cfg.CDKValidiumAddress), ethClient) + cdkValidium, err := polygonvalidium.NewPolygonvalidium(common.HexToAddress(cfg.PolygonValidiumAddress), ethClient) if err != nil { return nil, err } dataCommittee, err := - cdkdatacommittee.NewCdkdatacommittee(common.HexToAddress(cfg.DataCommitteeAddress), ethClient) + polygondatacommittee.NewPolygondatacommittee(common.HexToAddress(cfg.DataCommitteeAddress), ethClient) if err != nil { return nil, err } - return &EthermanImpl{ + return ðerman{ EthClient: ethClient, CDKValidium: cdkValidium, DataCommittee: dataCommittee, @@ -77,70 +88,59 @@ func New(cfg config.L1Config) (*EthermanImpl, error) { } // GetTx function get ethereum tx -func (e *EthermanImpl) GetTx(ctx context.Context, txHash common.Hash) (*types.Transaction, bool, error) { +func (e *etherman) GetTx(ctx context.Context, txHash common.Hash) (*types.Transaction, bool, error) { return e.EthClient.TransactionByHash(ctx, txHash) } // TrustedSequencer gets trusted sequencer address -func (e *EthermanImpl) TrustedSequencer() (common.Address, error) { +func (e *etherman) TrustedSequencer() (common.Address, error) { return e.CDKValidium.TrustedSequencer(&bind.CallOpts{Pending: false}) } // WatchSetTrustedSequencer watches trusted sequencer address -func (e *EthermanImpl) WatchSetTrustedSequencer( +func (e *etherman) WatchSetTrustedSequencer( ctx context.Context, - events chan *cdkvalidium.CdkvalidiumSetTrustedSequencer, + events chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer, ) (event.Subscription, error) { return e.CDKValidium.WatchSetTrustedSequencer(&bind.WatchOpts{Context: ctx}, events) } // TrustedSequencerURL gets trusted sequencer's RPC url -func (e *EthermanImpl) TrustedSequencerURL() (string, error) { +func (e *etherman) TrustedSequencerURL() (string, error) { return e.CDKValidium.TrustedSequencerURL(&bind.CallOpts{Pending: false}) } // WatchSetTrustedSequencerURL watches trusted sequencer's RPC url -func (e *EthermanImpl) WatchSetTrustedSequencerURL( +func (e *etherman) WatchSetTrustedSequencerURL( ctx context.Context, - events chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL, + events chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL, ) (event.Subscription, error) { return e.CDKValidium.WatchSetTrustedSequencerURL(&bind.WatchOpts{Context: ctx}, events) } // HeaderByNumber returns header by number from the eth client -func (e *EthermanImpl) HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error) { +func (e *etherman) HeaderByNumber(ctx context.Context, number *big.Int) (*types.Header, error) { return e.EthClient.HeaderByNumber(ctx, number) } // FilterSequenceBatches retrieves filtered batches on CDK validium -func (e *EthermanImpl) FilterSequenceBatches(opts *bind.FilterOpts, - numBatch []uint64) (*cdkvalidium.CdkvalidiumSequenceBatchesIterator, error) { +func (e *etherman) FilterSequenceBatches(opts *bind.FilterOpts, + numBatch []uint64) (*polygonvalidium.PolygonvalidiumSequenceBatchesIterator, error) { return e.CDKValidium.FilterSequenceBatches(opts, numBatch) } -// DataCommitteeMember represents a member of the Data Committee -type DataCommitteeMember struct { - Addr common.Address - URL string -} - -// DataCommittee represents a specific committee -type DataCommittee struct { - AddressesHash common.Hash - Members []DataCommitteeMember - RequiredSignatures uint64 -} - // GetCurrentDataCommittee return the currently registered data committee -func (e *EthermanImpl) GetCurrentDataCommittee() (*DataCommittee, error) { +func (e *etherman) GetCurrentDataCommittee() (*DataCommittee, error) { addrsHash, err := e.DataCommittee.CommitteeHash(&bind.CallOpts{Pending: false}) if err != nil { return nil, fmt.Errorf("error getting CommitteeHash from L1 SC: %w", err) } + reqSign, err := e.DataCommittee.RequiredAmountOfSignatures(&bind.CallOpts{Pending: false}) if err != nil { return nil, fmt.Errorf("error getting RequiredAmountOfSignatures from L1 SC: %w", err) } + members, err := e.GetCurrentDataCommitteeMembers() if err != nil { return nil, err @@ -154,21 +154,25 @@ func (e *EthermanImpl) GetCurrentDataCommittee() (*DataCommittee, error) { } // GetCurrentDataCommitteeMembers return the currently registered data committee members -func (e *EthermanImpl) GetCurrentDataCommitteeMembers() ([]DataCommitteeMember, error) { +func (e *etherman) GetCurrentDataCommitteeMembers() ([]DataCommitteeMember, error) { members := []DataCommitteeMember{} + nMembers, err := e.DataCommittee.GetAmountOfMembers(&bind.CallOpts{Pending: false}) if err != nil { return nil, fmt.Errorf("error getting GetAmountOfMembers from L1 SC: %w", err) } + for i := int64(0); i < nMembers.Int64(); i++ { member, err := e.DataCommittee.Members(&bind.CallOpts{Pending: false}, big.NewInt(i)) if err != nil { return nil, fmt.Errorf("error getting Members %d from L1 SC: %w", i, err) } + members = append(members, DataCommitteeMember{ Addr: member.Addr, URL: member.Url, }) } + return members, nil } diff --git a/etherman/smartcontracts/abi/cdkdatacommittee.abi b/etherman/smartcontracts/abi/cdkdatacommittee.abi deleted file mode 100644 index 76d893ff..00000000 --- a/etherman/smartcontracts/abi/cdkdatacommittee.abi +++ /dev/null @@ -1,226 +0,0 @@ -[ - { - "inputs": [], - "name": "CommitteeAddressDoesntExist", - "type": "error" - }, - { - "inputs": [], - "name": "EmptyURLNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "TooManyRequiredSignatures", - "type": "error" - }, - { - "inputs": [], - "name": "UnexpectedAddrsAndSignaturesSize", - "type": "error" - }, - { - "inputs": [], - "name": "UnexpectedAddrsBytesLength", - "type": "error" - }, - { - "inputs": [], - "name": "UnexpectedCommitteeHash", - "type": "error" - }, - { - "inputs": [], - "name": "WrongAddrOrder", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "committeeHash", - "type": "bytes32" - } - ], - "name": "CommitteeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "inputs": [], - "name": "committeeHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getAmountOfMembers", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "members", - "outputs": [ - { - "internalType": "string", - "name": "url", - "type": "string" - }, - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "requiredAmountOfSignatures", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_requiredAmountOfSignatures", - "type": "uint256" - }, - { - "internalType": "string[]", - "name": "urls", - "type": "string[]" - }, - { - "internalType": "bytes", - "name": "addrsBytes", - "type": "bytes" - } - ], - "name": "setupCommittee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "signedHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "signaturesAndAddrs", - "type": "bytes" - } - ], - "name": "verifySignatures", - "outputs": [], - "stateMutability": "view", - "type": "function" - } - ] \ No newline at end of file diff --git a/etherman/smartcontracts/abi/cdkvalidium.abi b/etherman/smartcontracts/abi/cdkvalidium.abi deleted file mode 100644 index 6f62f534..00000000 --- a/etherman/smartcontracts/abi/cdkvalidium.abi +++ /dev/null @@ -1,1732 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "contract IPolygonZkEVMGlobalExitRoot", - "name": "_globalExitRootManager", - "type": "address" - }, - { - "internalType": "contract IERC20Upgradeable", - "name": "_matic", - "type": "address" - }, - { - "internalType": "contract IVerifierRollup", - "name": "_rollupVerifier", - "type": "address" - }, - { - "internalType": "contract IPolygonZkEVMBridge", - "name": "_bridgeAddress", - "type": "address" - }, - { - "internalType": "contract ICDKDataCommittee", - "name": "_dataCommitteeAddress", - "type": "address" - }, - { - "internalType": "uint64", - "name": "_chainID", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "_forkID", - "type": "uint64" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "BatchAlreadyVerified", - "type": "error" - }, - { - "inputs": [], - "name": "BatchNotSequencedOrNotSequenceEnd", - "type": "error" - }, - { - "inputs": [], - "name": "ExceedMaxVerifyBatches", - "type": "error" - }, - { - "inputs": [], - "name": "FinalNumBatchBelowLastVerifiedBatch", - "type": "error" - }, - { - "inputs": [], - "name": "FinalNumBatchDoesNotMatchPendingState", - "type": "error" - }, - { - "inputs": [], - "name": "FinalPendingStateNumInvalid", - "type": "error" - }, - { - "inputs": [], - "name": "ForceBatchNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "ForceBatchTimeoutNotExpired", - "type": "error" - }, - { - "inputs": [], - "name": "ForceBatchesAlreadyActive", - "type": "error" - }, - { - "inputs": [], - "name": "ForceBatchesOverflow", - "type": "error" - }, - { - "inputs": [], - "name": "ForcedDataDoesNotMatch", - "type": "error" - }, - { - "inputs": [], - "name": "GlobalExitRootNotExist", - "type": "error" - }, - { - "inputs": [], - "name": "HaltTimeoutNotExpired", - "type": "error" - }, - { - "inputs": [], - "name": "InitNumBatchAboveLastVerifiedBatch", - "type": "error" - }, - { - "inputs": [], - "name": "InitNumBatchDoesNotMatchPendingState", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidProof", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidRangeBatchTimeTarget", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidRangeForceBatchTimeout", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidRangeMultiplierBatchFee", - "type": "error" - }, - { - "inputs": [], - "name": "NewAccInputHashDoesNotExist", - "type": "error" - }, - { - "inputs": [], - "name": "NewPendingStateTimeoutMustBeLower", - "type": "error" - }, - { - "inputs": [], - "name": "NewStateRootNotInsidePrime", - "type": "error" - }, - { - "inputs": [], - "name": "NewTrustedAggregatorTimeoutMustBeLower", - "type": "error" - }, - { - "inputs": [], - "name": "NotEnoughMaticAmount", - "type": "error" - }, - { - "inputs": [], - "name": "OldAccInputHashDoesNotExist", - "type": "error" - }, - { - "inputs": [], - "name": "OldStateRootDoesNotExist", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyAdmin", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyEmergencyState", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyNotEmergencyState", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyPendingAdmin", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyTrustedAggregator", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyTrustedSequencer", - "type": "error" - }, - { - "inputs": [], - "name": "PendingStateDoesNotExist", - "type": "error" - }, - { - "inputs": [], - "name": "PendingStateInvalid", - "type": "error" - }, - { - "inputs": [], - "name": "PendingStateNotConsolidable", - "type": "error" - }, - { - "inputs": [], - "name": "PendingStateTimeoutExceedHaltAggregationTimeout", - "type": "error" - }, - { - "inputs": [], - "name": "SequenceZeroBatches", - "type": "error" - }, - { - "inputs": [], - "name": "SequencedTimestampBelowForcedTimestamp", - "type": "error" - }, - { - "inputs": [], - "name": "SequencedTimestampInvalid", - "type": "error" - }, - { - "inputs": [], - "name": "StoredRootMustBeDifferentThanNewRoot", - "type": "error" - }, - { - "inputs": [], - "name": "TransactionsLengthAboveMax", - "type": "error" - }, - { - "inputs": [], - "name": "TrustedAggregatorTimeoutExceedHaltAggregationTimeout", - "type": "error" - }, - { - "inputs": [], - "name": "TrustedAggregatorTimeoutNotExpired", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AcceptAdminRole", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "ActivateForceBatches", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint64", - "name": "numBatch", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "stateRoot", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint64", - "name": "pendingStateNum", - "type": "uint64" - } - ], - "name": "ConsolidatePendingState", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "EmergencyStateActivated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "EmergencyStateDeactivated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint64", - "name": "forceBatchNum", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "lastGlobalExitRoot", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "address", - "name": "sequencer", - "type": "address" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "transactions", - "type": "bytes" - } - ], - "name": "ForceBatch", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint64", - "name": "numBatch", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "stateRoot", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "aggregator", - "type": "address" - } - ], - "name": "OverridePendingState", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "storedStateRoot", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "provedStateRoot", - "type": "bytes32" - } - ], - "name": "ProveNonDeterministicPendingState", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint64", - "name": "numBatch", - "type": "uint64" - } - ], - "name": "SequenceBatches", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint64", - "name": "numBatch", - "type": "uint64" - } - ], - "name": "SequenceForceBatches", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "newforceBatchTimeout", - "type": "uint64" - } - ], - "name": "SetForceBatchTimeout", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "newMultiplierBatchFee", - "type": "uint16" - } - ], - "name": "SetMultiplierBatchFee", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "newPendingStateTimeout", - "type": "uint64" - } - ], - "name": "SetPendingStateTimeout", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newTrustedAggregator", - "type": "address" - } - ], - "name": "SetTrustedAggregator", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "newTrustedAggregatorTimeout", - "type": "uint64" - } - ], - "name": "SetTrustedAggregatorTimeout", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newTrustedSequencer", - "type": "address" - } - ], - "name": "SetTrustedSequencer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "newTrustedSequencerURL", - "type": "string" - } - ], - "name": "SetTrustedSequencerURL", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "newVerifyBatchTimeTarget", - "type": "uint64" - } - ], - "name": "SetVerifyBatchTimeTarget", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "TransferAdminRole", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "numBatch", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "uint64", - "name": "forkID", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "string", - "name": "version", - "type": "string" - } - ], - "name": "UpdateZkEVMVersion", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint64", - "name": "numBatch", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "stateRoot", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "aggregator", - "type": "address" - } - ], - "name": "VerifyBatches", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint64", - "name": "numBatch", - "type": "uint64" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "stateRoot", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "aggregator", - "type": "address" - } - ], - "name": "VerifyBatchesTrustedAggregator", - "type": "event" - }, - { - "inputs": [], - "name": "acceptAdminRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "sequencedBatchNum", - "type": "uint64" - } - ], - "name": "activateEmergencyState", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "activateForceBatches", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "batchFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "name": "batchNumToStateRoot", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "bridgeAddress", - "outputs": [ - { - "internalType": "contract IPolygonZkEVMBridge", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "calculateRewardPerBatch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "chainID", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newStateRoot", - "type": "uint256" - } - ], - "name": "checkStateRootInsidePrime", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "pendingStateNum", - "type": "uint64" - } - ], - "name": "consolidatePendingState", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "dataCommitteeAddress", - "outputs": [ - { - "internalType": "contract ICDKDataCommittee", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "deactivateEmergencyState", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes", - "name": "transactions", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "maticAmount", - "type": "uint256" - } - ], - "name": "forceBatch", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "forceBatchTimeout", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "name": "forcedBatches", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "forkID", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getForcedBatchFee", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "initNumBatch", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "finalNewBatch", - "type": "uint64" - }, - { - "internalType": "bytes32", - "name": "newLocalExitRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "oldStateRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "newStateRoot", - "type": "bytes32" - } - ], - "name": "getInputSnarkBytes", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLastVerifiedBatch", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "globalExitRootManager", - "outputs": [ - { - "internalType": "contract IPolygonZkEVMGlobalExitRoot", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "admin", - "type": "address" - }, - { - "internalType": "address", - "name": "trustedSequencer", - "type": "address" - }, - { - "internalType": "uint64", - "name": "pendingStateTimeout", - "type": "uint64" - }, - { - "internalType": "address", - "name": "trustedAggregator", - "type": "address" - }, - { - "internalType": "uint64", - "name": "trustedAggregatorTimeout", - "type": "uint64" - } - ], - "internalType": "struct CDKValidium.InitializePackedParameters", - "name": "initializePackedParameters", - "type": "tuple" - }, - { - "internalType": "bytes32", - "name": "genesisRoot", - "type": "bytes32" - }, - { - "internalType": "string", - "name": "_trustedSequencerURL", - "type": "string" - }, - { - "internalType": "string", - "name": "_networkName", - "type": "string" - }, - { - "internalType": "string", - "name": "_version", - "type": "string" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "isEmergencyState", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isForcedBatchDisallowed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "pendingStateNum", - "type": "uint64" - } - ], - "name": "isPendingStateConsolidable", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lastBatchSequenced", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lastForceBatch", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lastForceBatchSequenced", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lastPendingState", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lastPendingStateConsolidated", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lastTimestamp", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "lastVerifiedBatch", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "matic", - "outputs": [ - { - "internalType": "contract IERC20Upgradeable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "multiplierBatchFee", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "networkName", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "initPendingStateNum", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "finalPendingStateNum", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "initNumBatch", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "finalNewBatch", - "type": "uint64" - }, - { - "internalType": "bytes32", - "name": "newLocalExitRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "newStateRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32[24]", - "name": "proof", - "type": "bytes32[24]" - } - ], - "name": "overridePendingState", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pendingStateTimeout", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "pendingStateTransitions", - "outputs": [ - { - "internalType": "uint64", - "name": "timestamp", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "lastVerifiedBatch", - "type": "uint64" - }, - { - "internalType": "bytes32", - "name": "exitRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "stateRoot", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "initPendingStateNum", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "finalPendingStateNum", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "initNumBatch", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "finalNewBatch", - "type": "uint64" - }, - { - "internalType": "bytes32", - "name": "newLocalExitRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "newStateRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32[24]", - "name": "proof", - "type": "bytes32[24]" - } - ], - "name": "proveNonDeterministicPendingState", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "rollupVerifier", - "outputs": [ - { - "internalType": "contract IVerifierRollup", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bytes32", - "name": "transactionsHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "globalExitRoot", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "timestamp", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "minForcedTimestamp", - "type": "uint64" - } - ], - "internalType": "struct CDKValidium.BatchData[]", - "name": "batches", - "type": "tuple[]" - }, - { - "internalType": "address", - "name": "l2Coinbase", - "type": "address" - }, - { - "internalType": "bytes", - "name": "signaturesAndAddrs", - "type": "bytes" - } - ], - "name": "sequenceBatches", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bytes", - "name": "transactions", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "globalExitRoot", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "minForcedTimestamp", - "type": "uint64" - } - ], - "internalType": "struct CDKValidium.ForcedBatchData[]", - "name": "batches", - "type": "tuple[]" - } - ], - "name": "sequenceForceBatches", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "name": "sequencedBatches", - "outputs": [ - { - "internalType": "bytes32", - "name": "accInputHash", - "type": "bytes32" - }, - { - "internalType": "uint64", - "name": "sequencedTimestamp", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "previousLastBatchSequenced", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "newforceBatchTimeout", - "type": "uint64" - } - ], - "name": "setForceBatchTimeout", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "newMultiplierBatchFee", - "type": "uint16" - } - ], - "name": "setMultiplierBatchFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "newPendingStateTimeout", - "type": "uint64" - } - ], - "name": "setPendingStateTimeout", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newTrustedAggregator", - "type": "address" - } - ], - "name": "setTrustedAggregator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "newTrustedAggregatorTimeout", - "type": "uint64" - } - ], - "name": "setTrustedAggregatorTimeout", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newTrustedSequencer", - "type": "address" - } - ], - "name": "setTrustedSequencer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "newTrustedSequencerURL", - "type": "string" - } - ], - "name": "setTrustedSequencerURL", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "newVerifyBatchTimeTarget", - "type": "uint64" - } - ], - "name": "setVerifyBatchTimeTarget", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "transferAdminRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "trustedAggregator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "trustedAggregatorTimeout", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "trustedSequencer", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "trustedSequencerURL", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "verifyBatchTimeTarget", - "outputs": [ - { - "internalType": "uint64", - "name": "", - "type": "uint64" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "pendingStateNum", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "initNumBatch", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "finalNewBatch", - "type": "uint64" - }, - { - "internalType": "bytes32", - "name": "newLocalExitRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "newStateRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32[24]", - "name": "proof", - "type": "bytes32[24]" - } - ], - "name": "verifyBatches", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "pendingStateNum", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "initNumBatch", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "finalNewBatch", - "type": "uint64" - }, - { - "internalType": "bytes32", - "name": "newLocalExitRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "newStateRoot", - "type": "bytes32" - }, - { - "internalType": "bytes32[24]", - "name": "proof", - "type": "bytes32[24]" - } - ], - "name": "verifyBatchesTrustedAggregator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ] \ No newline at end of file diff --git a/etherman/smartcontracts/abi/polygondatacommittee.abi b/etherman/smartcontracts/abi/polygondatacommittee.abi new file mode 100644 index 00000000..71356f29 --- /dev/null +++ b/etherman/smartcontracts/abi/polygondatacommittee.abi @@ -0,0 +1,239 @@ +[ + { + "inputs": [], + "name": "CommitteeAddressDoesntExist", + "type": "error" + }, + { + "inputs": [], + "name": "EmptyURLNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "TooManyRequiredSignatures", + "type": "error" + }, + { + "inputs": [], + "name": "UnexpectedAddrsAndSignaturesSize", + "type": "error" + }, + { + "inputs": [], + "name": "UnexpectedAddrsBytesLength", + "type": "error" + }, + { + "inputs": [], + "name": "UnexpectedCommitteeHash", + "type": "error" + }, + { + "inputs": [], + "name": "WrongAddrOrder", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "committeeHash", + "type": "bytes32" + } + ], + "name": "CommitteeUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "committeeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAmountOfMembers", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getProcotolName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "members", + "outputs": [ + { + "internalType": "string", + "name": "url", + "type": "string" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "requiredAmountOfSignatures", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_requiredAmountOfSignatures", + "type": "uint256" + }, + { + "internalType": "string[]", + "name": "urls", + "type": "string[]" + }, + { + "internalType": "bytes", + "name": "addrsBytes", + "type": "bytes" + } + ], + "name": "setupCommittee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "signedHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signaturesAndAddrs", + "type": "bytes" + } + ], + "name": "verifyMessage", + "outputs": [], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/etherman/smartcontracts/abi/polygonvalidium.abi b/etherman/smartcontracts/abi/polygonvalidium.abi new file mode 100644 index 00000000..a05f0f82 --- /dev/null +++ b/etherman/smartcontracts/abi/polygonvalidium.abi @@ -0,0 +1,1266 @@ +[ + { + "inputs": [ + { + "internalType": "contract IPolygonZkEVMGlobalExitRootV2", + "name": "_globalExitRootManager", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "_pol", + "type": "address" + }, + { + "internalType": "contract IPolygonZkEVMBridgeV2", + "name": "_bridgeAddress", + "type": "address" + }, + { + "internalType": "contract PolygonRollupManager", + "name": "_rollupManager", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "BatchAlreadyVerified", + "type": "error" + }, + { + "inputs": [], + "name": "BatchNotSequencedOrNotSequenceEnd", + "type": "error" + }, + { + "inputs": [], + "name": "ExceedMaxVerifyBatches", + "type": "error" + }, + { + "inputs": [], + "name": "FinalNumBatchBelowLastVerifiedBatch", + "type": "error" + }, + { + "inputs": [], + "name": "FinalNumBatchDoesNotMatchPendingState", + "type": "error" + }, + { + "inputs": [], + "name": "FinalPendingStateNumInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "ForceBatchNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "ForceBatchTimeoutNotExpired", + "type": "error" + }, + { + "inputs": [], + "name": "ForceBatchesAlreadyActive", + "type": "error" + }, + { + "inputs": [], + "name": "ForceBatchesDescentralized", + "type": "error" + }, + { + "inputs": [], + "name": "ForceBatchesNotAllowedOnEmergencyState", + "type": "error" + }, + { + "inputs": [], + "name": "ForceBatchesOverflow", + "type": "error" + }, + { + "inputs": [], + "name": "ForcedDataDoesNotMatch", + "type": "error" + }, + { + "inputs": [], + "name": "GasTokenNetworkMustBeZeroOnEther", + "type": "error" + }, + { + "inputs": [], + "name": "GlobalExitRootNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "HaltTimeoutNotExpired", + "type": "error" + }, + { + "inputs": [], + "name": "HaltTimeoutNotExpiredAfterEmergencyState", + "type": "error" + }, + { + "inputs": [], + "name": "HugeTokenMetadataNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "InitNumBatchAboveLastVerifiedBatch", + "type": "error" + }, + { + "inputs": [], + "name": "InitNumBatchDoesNotMatchPendingState", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitializeTransaction", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidProof", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidRangeBatchTimeTarget", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidRangeForceBatchTimeout", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidRangeMultiplierBatchFee", + "type": "error" + }, + { + "inputs": [], + "name": "NewAccInputHashDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "NewPendingStateTimeoutMustBeLower", + "type": "error" + }, + { + "inputs": [], + "name": "NewStateRootNotInsidePrime", + "type": "error" + }, + { + "inputs": [], + "name": "NewTrustedAggregatorTimeoutMustBeLower", + "type": "error" + }, + { + "inputs": [], + "name": "NotEnoughMaticAmount", + "type": "error" + }, + { + "inputs": [], + "name": "NotEnoughPOLAmount", + "type": "error" + }, + { + "inputs": [], + "name": "OldAccInputHashDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "OldStateRootDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyAdmin", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyPendingAdmin", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyRollupManager", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyTrustedAggregator", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyTrustedSequencer", + "type": "error" + }, + { + "inputs": [], + "name": "PendingStateDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "PendingStateInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "PendingStateNotConsolidable", + "type": "error" + }, + { + "inputs": [], + "name": "PendingStateTimeoutExceedHaltAggregationTimeout", + "type": "error" + }, + { + "inputs": [], + "name": "SequenceWithDataAvailabilityNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "SequenceZeroBatches", + "type": "error" + }, + { + "inputs": [], + "name": "SequencedTimestampBelowForcedTimestamp", + "type": "error" + }, + { + "inputs": [], + "name": "SequencedTimestampInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "StoredRootMustBeDifferentThanNewRoot", + "type": "error" + }, + { + "inputs": [], + "name": "SwitchToSameValue", + "type": "error" + }, + { + "inputs": [], + "name": "TransactionsLengthAboveMax", + "type": "error" + }, + { + "inputs": [], + "name": "TrustedAggregatorTimeoutExceedHaltAggregationTimeout", + "type": "error" + }, + { + "inputs": [], + "name": "TrustedAggregatorTimeoutNotExpired", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AcceptAdminRole", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "forceBatchNum", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "lastGlobalExitRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "sequencer", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "transactions", + "type": "bytes" + } + ], + "name": "ForceBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "transactions", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "lastGlobalExitRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "sequencer", + "type": "address" + } + ], + "name": "InitialSequenceBatches", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "numBatch", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "l1InfoRoot", + "type": "bytes32" + } + ], + "name": "SequenceBatches", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "numBatch", + "type": "uint64" + } + ], + "name": "SequenceForceBatches", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newDataAvailabilityProtocol", + "type": "address" + } + ], + "name": "SetDataAvailabilityProtocol", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newForceBatchAddress", + "type": "address" + } + ], + "name": "SetForceBatchAddress", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "newforceBatchTimeout", + "type": "uint64" + } + ], + "name": "SetForceBatchTimeout", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newTrustedSequencer", + "type": "address" + } + ], + "name": "SetTrustedSequencer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "newTrustedSequencerURL", + "type": "string" + } + ], + "name": "SetTrustedSequencerURL", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "SwitchSequenceWithDataAvailability", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "TransferAdminRole", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "numBatch", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "aggregator", + "type": "address" + } + ], + "name": "VerifyBatches", + "type": "event" + }, + { + "inputs": [], + "name": "GLOBAL_EXIT_ROOT_MANAGER_L2", + "outputs": [ + { + "internalType": "contract IBasePolygonZkEVMGlobalExitRoot", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INITIALIZE_TX_BRIDGE_LIST_LEN_LEN", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INITIALIZE_TX_BRIDGE_PARAMS", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INITIALIZE_TX_CONSTANT_BYTES", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INITIALIZE_TX_DATA_LEN_EMPTY_METADATA", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INITIALIZE_TX_EFFECTIVE_PERCENTAGE", + "outputs": [ + { + "internalType": "bytes1", + "name": "", + "type": "bytes1" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SIGNATURE_INITIALIZE_TX_R", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SIGNATURE_INITIALIZE_TX_S", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SIGNATURE_INITIALIZE_TX_V", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptAdminRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bridgeAddress", + "outputs": [ + { + "internalType": "contract IPolygonZkEVMBridgeV2", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "calculatePolPerForceBatch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "dataAvailabilityProtocol", + "outputs": [ + { + "internalType": "contract IPolygonDataAvailabilityProtocol", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "transactions", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "polAmount", + "type": "uint256" + } + ], + "name": "forceBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "forceBatchAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "forceBatchTimeout", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "name": "forcedBatches", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gapLastTimestamp", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gasTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gasTokenNetwork", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "networkID", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_gasTokenAddress", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_gasTokenNetwork", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "_gasTokenMetadata", + "type": "bytes" + } + ], + "name": "generateInitializeTransaction", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "globalExitRootManager", + "outputs": [ + { + "internalType": "contract IPolygonZkEVMGlobalExitRootV2", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_admin", + "type": "address" + }, + { + "internalType": "address", + "name": "sequencer", + "type": "address" + }, + { + "internalType": "uint32", + "name": "networkID", + "type": "uint32" + }, + { + "internalType": "address", + "name": "_gasTokenAddress", + "type": "address" + }, + { + "internalType": "string", + "name": "sequencerURL", + "type": "string" + }, + { + "internalType": "string", + "name": "_networkName", + "type": "string" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "isSequenceWithDataAvailabilityAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastAccInputHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastForceBatch", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastForceBatchSequenced", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "networkName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "lastVerifiedBatch", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "newStateRoot", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "aggregator", + "type": "address" + } + ], + "name": "onVerifyBatches", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pendingAdmin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pol", + "outputs": [ + { + "internalType": "contract IERC20Upgradeable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "rollupManager", + "outputs": [ + { + "internalType": "contract PolygonRollupManager", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "transactions", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "forcedGlobalExitRoot", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "forcedTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "forcedBlockHashL1", + "type": "bytes32" + } + ], + "internalType": "struct PolygonRollupBaseEtrog.BatchData[]", + "name": "batches", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "l2Coinbase", + "type": "address" + } + ], + "name": "sequenceBatches", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "transactionsHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "forcedGlobalExitRoot", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "forcedTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "forcedBlockHashL1", + "type": "bytes32" + } + ], + "internalType": "struct PolygonValidiumEtrog.ValidiumBatchData[]", + "name": "batches", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "l2Coinbase", + "type": "address" + }, + { + "internalType": "bytes", + "name": "dataAvailabilityMessage", + "type": "bytes" + } + ], + "name": "sequenceBatchesValidium", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "transactions", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "forcedGlobalExitRoot", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "forcedTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "forcedBlockHashL1", + "type": "bytes32" + } + ], + "internalType": "struct PolygonRollupBaseEtrog.BatchData[]", + "name": "batches", + "type": "tuple[]" + } + ], + "name": "sequenceForceBatches", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IPolygonDataAvailabilityProtocol", + "name": "newDataAvailabilityProtocol", + "type": "address" + } + ], + "name": "setDataAvailabilityProtocol", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newForceBatchAddress", + "type": "address" + } + ], + "name": "setForceBatchAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "newforceBatchTimeout", + "type": "uint64" + } + ], + "name": "setForceBatchTimeout", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newTrustedSequencer", + "type": "address" + } + ], + "name": "setTrustedSequencer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "newTrustedSequencerURL", + "type": "string" + } + ], + "name": "setTrustedSequencerURL", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "switchSequenceWithDataAvailability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "transferAdminRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "trustedSequencer", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "trustedSequencerURL", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/etherman/smartcontracts/abigen.sh b/etherman/smartcontracts/abigen.sh index 9c06f370..ee29a21e 100755 --- a/etherman/smartcontracts/abigen.sh +++ b/etherman/smartcontracts/abigen.sh @@ -8,5 +8,5 @@ gen() { abigen --bin bin/${package}.bin --abi abi/${package}.abi --pkg=${package} --out=${package}/${package}.go } -gen cdkvalidium -gen cdkdatacommittee \ No newline at end of file +gen polygonvalidium +gen polygondatacommittee \ No newline at end of file diff --git a/etherman/smartcontracts/bin/cdkdatacommittee.bin b/etherman/smartcontracts/bin/cdkdatacommittee.bin deleted file mode 100644 index 0418d412..00000000 --- a/etherman/smartcontracts/bin/cdkdatacommittee.bin +++ /dev/null @@ -1 +0,0 @@ -608060405234801561001057600080fd5b506115e0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638129fc1c11610076578063c7a823e01161005b578063c7a823e01461015a578063dce1e2b61461016d578063f2fde38b1461017557600080fd5b80638129fc1c1461012a5780638da5cb5b1461013257600080fd5b8063609d4544116100a7578063609d4544146101025780636beedd3914610119578063715018a61461012257600080fd5b8063078fba2a146100c35780635daf08ca146100d8575b600080fd5b6100d66100d1366004610fa9565b610188565b005b6100eb6100e6366004611054565b61048c565b6040516100f992919061106d565b60405180910390f35b61010b60665481565b6040519081526020016100f9565b61010b60655481565b6100d661055e565b6100d6610572565b60335460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f9565b6100d66101683660046110f6565b610709565b60675461010b565b6100d6610183366004611142565b61095c565b610190610a10565b82858110156101cb576040517f2e7dcd6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101d66014826111ae565b821461020e576040517f2ab6a12900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61021a60676000610eb5565b6000805b828110156104305760006102336014836111ae565b905060008682876102456014836111c5565b92610252939291906111d8565b61025b91611202565b60601c90508888848181106102725761027261124a565b90506020028101906102849190611279565b90506000036102bf576040517fb54b70e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610324576040517fd53cfbe000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809350606760405180604001604052808b8b878181106103465761034661124a565b90506020028101906103589190611279565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505073ffffffffffffffffffffffffffffffffffffffff851660209283015283546001810185559381522081519192600202019081906103cc90826113af565b5060209190910151600190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905550819050610428816114c9565b91505061021e565b508383604051610441929190611501565b6040519081900381206066819055606589905581527f831403fd381b3e6ac875d912ec2eee0e0203d0d29f7b3e0c96fc8f582d6db6579060200160405180910390a150505050505050565b6067818154811061049c57600080fd5b90600052602060002090600202016000915090508060000180546104bf9061130d565b80601f01602080910402602001604051908101604052809291908181526020018280546104eb9061130d565b80156105385780601f1061050d57610100808354040283529160200191610538565b820191906000526020600020905b81548152906001019060200180831161051b57829003601f168201915b5050506001909301549192505073ffffffffffffffffffffffffffffffffffffffff1682565b610566610a10565b6105706000610a91565b565b600054610100900460ff16158080156105925750600054600160ff909116105b806105ac5750303b1580156105ac575060005460ff166001145b61063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561069b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6106a3610b08565b801561070657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6000606554604161071a91906111ae565b90508082108061073e575060146107318284611511565b61073b9190611553565b15155b15610775576040517f6b8eec4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606654610784838381876111d8565b604051610792929190611501565b6040518091039020146107d1576040517f6b156b2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060146107e08486611511565b6107ea9190611567565b905060005b60655481101561095357600061086a88888861080c6041876111ae565b90604161081981896111ae565b61082391906111c5565b92610830939291906111d8565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ba892505050565b90506000845b848110156109065760006108856014836111ae565b61088f90896111c5565b905060008a828b6108a16014836111c5565b926108ae939291906111d8565b6108b791611202565b60601c905073ffffffffffffffffffffffffffffffffffffffff851681036108f1576108e48360016111c5565b9750600193505050610906565b505080806108fe906114c9565b915050610870565b508061093e576040517f8431721300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050808061094b906114c9565b9150506107ef565b50505050505050565b610964610a10565b73ffffffffffffffffffffffffffffffffffffffff8116610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610634565b61070681610a91565b60335473ffffffffffffffffffffffffffffffffffffffff163314610570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610634565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610b9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610634565b61057033610a91565b6000806000610bb78585610bce565b91509150610bc481610c13565b5090505b92915050565b6000808251604103610c045760208301516040840151606085015160001a610bf887828585610dc6565b94509450505050610c0c565b506000905060025b9250929050565b6000816004811115610c2757610c2761157b565b03610c2f5750565b6001816004811115610c4357610c4361157b565b03610caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610634565b6002816004811115610cbe57610cbe61157b565b03610d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610634565b6003816004811115610d3957610d3961157b565b03610706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610634565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610dfd5750600090506003610eac565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610e51573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610ea557600060019250925050610eac565b9150600090505b94509492505050565b508054600082556002029060005260206000209081019061070691905b80821115610f19576000610ee68282610f1d565b506001810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600201610ed2565b5090565b508054610f299061130d565b6000825580601f10610f39575050565b601f01602090049060005260206000209081019061070691905b80821115610f195760008155600101610f53565b60008083601f840112610f7957600080fd5b50813567ffffffffffffffff811115610f9157600080fd5b602083019150836020828501011115610c0c57600080fd5b600080600080600060608688031215610fc157600080fd5b85359450602086013567ffffffffffffffff80821115610fe057600080fd5b818801915088601f830112610ff457600080fd5b81358181111561100357600080fd5b8960208260051b850101111561101857600080fd5b60208301965080955050604088013591508082111561103657600080fd5b5061104388828901610f67565b969995985093965092949392505050565b60006020828403121561106657600080fd5b5035919050565b604081526000835180604084015260005b8181101561109b576020818701810151606086840101520161107e565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060006040848603121561110b57600080fd5b83359250602084013567ffffffffffffffff81111561112957600080fd5b61113586828701610f67565b9497909650939450505050565b60006020828403121561115457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461117857600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610bc857610bc861117f565b80820180821115610bc857610bc861117f565b600080858511156111e857600080fd5b838611156111f557600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156112425780818660140360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126112ae57600080fd5b83018035915067ffffffffffffffff8211156112c957600080fd5b602001915036819003821315610c0c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061132157607f821691505b60208210810361135a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156113aa57600081815260208120601f850160051c810160208610156113875750805b601f850160051c820191505b818110156113a657828155600101611393565b5050505b505050565b815167ffffffffffffffff8111156113c9576113c96112de565b6113dd816113d7845461130d565b84611360565b602080601f83116001811461143057600084156113fa5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556113a6565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561147d5788860151825594840194600190910190840161145e565b50858210156114b957878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114fa576114fa61117f565b5060010190565b8183823760009101908152919050565b81810381811115610bc857610bc861117f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261156257611562611524565b500690565b60008261157657611576611524565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220a54a2ecac47f39fb27609b998291b1e8046737fbc346d3fc4d56c25e13d40d7e64736f6c63430008140033 \ No newline at end of file diff --git a/etherman/smartcontracts/bin/cdkvalidium.bin b/etherman/smartcontracts/bin/cdkvalidium.bin deleted file mode 100644 index 2999c390..00000000 --- a/etherman/smartcontracts/bin/cdkvalidium.bin +++ /dev/null @@ -1 +0,0 @@ -6101606040523480156200001257600080fd5b5060405162006185380380620061858339810160408190526200003591620000ac565b6001600160a01b0396871660c05294861660805292851660a05290841660e052909216610100526001600160401b039182166101205216610140526200014f565b6001600160a01b03811681146200008c57600080fd5b50565b80516001600160401b0381168114620000a757600080fd5b919050565b600080600080600080600060e0888a031215620000c857600080fd5b8751620000d58162000076565b6020890151909750620000e88162000076565b6040890151909650620000fb8162000076565b60608901519095506200010e8162000076565b6080890151909450620001218162000076565b92506200013160a089016200008f565b91506200014160c089016200008f565b905092959891949750929550565b60805160a05160c05160e051610100516101205161014051615f566200022f600039600081816106c801528181610e1e015261321b0152600081816108350152610df40152600081816105d301526119a00152600081816107fb01528181611bf0015281816138b40152614d300152600081816109a101528181610f91015281816111620152818161177b0152818161220f01528181613a9c015261498d015260008181610a4e0152818161415901526145b10152600081816108f101528181611bbe0152818161270001528181613a7001526142470152615f566000f3fe608060405234801561001057600080fd5b50600436106103c55760003560e01c8063837a4738116101ff578063c754c7ed1161011a578063e7a7ed02116100ad578063f14916d61161007c578063f14916d614610ab0578063f2fde38b14610ac3578063f851a44014610ad6578063f8b823e414610af657600080fd5b8063e7a7ed0214610a19578063e8bf92ed14610a49578063eaeb077b14610a70578063ed6b010414610a8357600080fd5b8063d2e129f9116100e9578063d2e129f9146109c3578063d8d1091b146109d6578063d939b315146109e9578063dbc1697614610a1157600080fd5b8063c754c7ed1461092e578063c89e42df1461095a578063cfa8ed471461096d578063d02103ca1461099c57600080fd5b8063a3c573eb11610192578063b4d63f5811610161578063b4d63f5814610885578063b6b0b097146108ec578063ba58ae3914610913578063c0ed84e01461092657600080fd5b8063a3c573eb146107f6578063ada8f9191461081d578063adc879e914610830578063afd23cbe1461085757600080fd5b806399f5634e116101ce57806399f5634e146107b55780639aa972a3146107bd5780639c9f3dfe146107d0578063a066215c146107e357600080fd5b8063837a4738146106ea578063841b24d71461075f5780638c3d73011461078f5780638da5cb5b1461079757600080fd5b8063458c0477116102ef5780636046916911610282578063715018a611610251578063715018a6146106945780637215541a1461069c5780637fcb3653146106af578063831c7ead146106c357600080fd5b80636046916914610646578063621dd4111461064e5780636b8616ce146106615780636ff512cc1461068157600080fd5b80634e487706116102be5780634e487706146105f55780635392c5e014610608578063542028d5146106365780635ec919581461063e57600080fd5b8063458c0477146105875780634a1a89a71461059b5780634a910e6a146105bb5780634df61d24146105ce57600080fd5b80632987898311610367578063394218e911610336578063394218e914610519578063423fa8561461052c578063438a53991461054c578063456052671461055f57600080fd5b806329878983146104b45780632b0006fa146104e05780632c1f816a146104f3578063383b3be81461050657600080fd5b80631816b7e5116103a35780631816b7e51461043357806319d8ac6114610448578063220d78991461045c578063267822471461046f57600080fd5b80630a0d9fbe146103ca578063107bf28c1461040157806315064c9614610416575b600080fd5b606f546103e390610100900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b610409610aff565b6040516103f8919061535c565b606f546104239060ff1681565b60405190151581526020016103f8565b610446610441366004615376565b610b8d565b005b6073546103e39067ffffffffffffffff1681565b61040961046a3660046153b2565b610ca5565b607b5461048f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103f8565b60745461048f9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6104466104ee366004615417565b610e7c565b61044661050136600461547f565b61104c565b6104236105143660046154f9565b61125a565b6104466105273660046154f9565b6112b0565b6073546103e39068010000000000000000900467ffffffffffffffff1681565b61044661055a366004615581565b611434565b6073546103e390700100000000000000000000000000000000900467ffffffffffffffff1681565b6079546103e39067ffffffffffffffff1681565b6079546103e39068010000000000000000900467ffffffffffffffff1681565b6104466105c93660046154f9565b611cb1565b61048f7f000000000000000000000000000000000000000000000000000000000000000081565b6104466106033660046154f9565b611d64565b6106286106163660046154f9565b60756020526000908152604090205481565b6040519081526020016103f8565b610409611ee8565b610446611ef5565b610628611ff5565b61044661065c366004615417565b61200b565b61062861066f3660046154f9565b60716020526000908152604090205481565b61044661068f366004615633565b612393565b610446612468565b6104466106aa3660046154f9565b61247c565b6074546103e39067ffffffffffffffff1681565b6103e37f000000000000000000000000000000000000000000000000000000000000000081565b6107336106f836600461564e565b60786020526000908152604090208054600182015460029092015467ffffffffffffffff808316936801000000000000000090930416919084565b6040805167ffffffffffffffff95861681529490931660208501529183015260608201526080016103f8565b6079546103e3907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b6104466125ec565b60335473ffffffffffffffffffffffffffffffffffffffff1661048f565b6106286126b8565b6104466107cb36600461547f565b612811565b6104466107de3660046154f9565b6128c2565b6104466107f13660046154f9565b612a3e565b61048f7f000000000000000000000000000000000000000000000000000000000000000081565b61044661082b366004615633565b612b44565b6103e37f000000000000000000000000000000000000000000000000000000000000000081565b606f54610872906901000000000000000000900461ffff1681565b60405161ffff90911681526020016103f8565b6108c66108933660046154f9565b6072602052600090815260409020805460019091015467ffffffffffffffff808216916801000000000000000090041683565b6040805193845267ffffffffffffffff92831660208501529116908201526060016103f8565b61048f7f000000000000000000000000000000000000000000000000000000000000000081565b61042361092136600461564e565b612c08565b6103e3612c92565b607b546103e39074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b61044661096836600461574a565b612ce7565b606f5461048f906b010000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b61048f7f000000000000000000000000000000000000000000000000000000000000000081565b6104466109d136600461577f565b612d74565b6104466109e4366004615832565b6132bf565b6079546103e390700100000000000000000000000000000000900467ffffffffffffffff1681565b610446613861565b6073546103e3907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b61048f7f000000000000000000000000000000000000000000000000000000000000000081565b610446610a7e3660046158a7565b61393a565b607b54610423907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b610446610abe366004615633565b613d30565b610446610ad1366004615633565b613e02565b607a5461048f9073ffffffffffffffffffffffffffffffffffffffff1681565b61062860705481565b60778054610b0c906158f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b38906158f3565b8015610b855780601f10610b5a57610100808354040283529160200191610b85565b820191906000526020600020905b815481529060010190602001808311610b6857829003601f168201915b505050505081565b607a5473ffffffffffffffffffffffffffffffffffffffff163314610bde576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e88161ffff161080610bf757506103ff8161ffff16115b15610c2e576040517f4c2533c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f80547fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff16690100000000000000000061ffff8416908102919091179091556040519081527f7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5906020015b60405180910390a150565b67ffffffffffffffff8086166000818152607260205260408082205493881682529020546060929115801590610cd9575081155b15610d10576040517f6818c29e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610d47576040517f66385b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d5084612c08565b610d86576040517f176b913c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481019690965260548601929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c098891b811660748701527f0000000000000000000000000000000000000000000000000000000000000000891b8116607c8701527f0000000000000000000000000000000000000000000000000000000000000000891b81166084870152608c86019490945260ac85015260cc840194909452509290931b90911660ec830152805180830360d401815260f4909201905290565b60745468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610ed9576040517fbbcbbc0500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ee7868686868686613eb6565b607480547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff86811691821790925560009081526075602052604090208390556079541615610f6257607980547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690555b6040517f33d6247d000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906333d6247d90602401600060405180830381600087803b158015610fea57600080fd5b505af1158015610ffe573d6000803e3d6000fd5b505060405184815233925067ffffffffffffffff871691507fcb339b570a7f0b25afa7333371ff11192092a0aeace12b671f4c212f2815c6fe906020015b60405180910390a3505050505050565b60745468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517fbbcbbc0500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b88787878787878761427a565b607480547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8681169182179092556000908152607560205260409020839055607954161561113357607980547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690555b6040517f33d6247d000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906333d6247d90602401600060405180830381600087803b1580156111bb57600080fd5b505af11580156111cf573d6000803e3d6000fd5b50506079805477ffffffffffffffffffffffffffffffffffffffffffffffff167a093a800000000000000000000000000000000000000000000000001790555050604051828152339067ffffffffffffffff8616907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a350505050505050565b60795467ffffffffffffffff8281166000908152607860205260408120549092429261129e9270010000000000000000000000000000000090920481169116615975565b67ffffffffffffffff16111592915050565b607a5473ffffffffffffffffffffffffffffffffffffffff163314611301576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a8067ffffffffffffffff82161115611348576040517f1d06e87900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f5460ff166113b75760795467ffffffffffffffff78010000000000000000000000000000000000000000000000009091048116908216106113b7576040517f401636df00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6079805477ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff8416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a190602001610c9a565b606f5460ff1615611471576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f546b010000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146114d1576040517f11e7be1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600081900361150d576040517fcb591a5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e8811115611549576040517fb59f753a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60735467ffffffffffffffff6801000000000000000082048116600081815260726020526040812054838516949293700100000000000000000000000000000000909304909216919082905b868110156119625760008c8c838181106115b1576115b161599d565b9050608002018036038101906115c791906159cc565b606081015190915067ffffffffffffffff161561173857846115e881615a3d565b955050600081600001518260200151836060015160405160200161164493929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012067ffffffffffffffff89166000908152607190935291205490915081146116cd576040517fce3d755e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8087166000908152607160205260408082209190915560608401519084015190821691161015611732576040517f7f7ab87200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50611836565b6020810151158015906117ff575060208101516040517f257b363200000000000000000000000000000000000000000000000000000000815260048101919091527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063257b3632906024016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fd9190615a64565b155b15611836576040517f73bd668d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8667ffffffffffffffff16816040015167ffffffffffffffff161080611869575042816040015167ffffffffffffffff16115b156118a0576040517fea82791600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838160000151826020015183604001518e60405160200161192f9594939291909485526020850193909352604084019190915260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166060808401919091521b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166068820152607c0190565b6040516020818303038152906040528051906020012093508060400151965050808061195a90615a7d565b915050611595565b506040517fc7a823e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063c7a823e0906119d99085908c908c90600401615afe565b60006040518083038186803b1580156119f157600080fd5b505afa158015611a05573d6000803e3d6000fd5b505050508584611a159190615975565b60735490945067ffffffffffffffff780100000000000000000000000000000000000000000000000090910481169084161115611a7e576040517fc630a00d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611a8a8285615b21565b611a9e9067ffffffffffffffff1688615b42565b604080516060810182528581524267ffffffffffffffff908116602080840191825260738054680100000000000000009081900485168688019081528d861660008181526072909552979093209551865592516001909501805492519585167fffffffffffffffffffffffffffffffff000000000000000000000000000000009384161795851684029590951790945583548c8416911617930292909217905590915082811690851614611b9457607380547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff8716021790555b611be6333083607054611ba79190615b55565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169291906146b4565b611bee614796565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379e2cf976040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611c5657600080fd5b505af1158015611c6a573d6000803e3d6000fd5b505060405167ffffffffffffffff881692507f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce9150600090a2505050505050505050505050565b60745468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611d5857606f5460ff1615611d19576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d228161125a565b611d58576040517f0ce9e4a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d6181614843565b50565b607a5473ffffffffffffffffffffffffffffffffffffffff163314611db5576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a8067ffffffffffffffff82161115611dfc576040517ff5e37f2f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f5460ff16611e6757607b5467ffffffffffffffff74010000000000000000000000000000000000000000909104811690821610611e67576040517ff5e37f2f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607b80547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff8416908102919091179091556040519081527fa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b90602001610c9a565b60768054610b0c906158f3565b607a5473ffffffffffffffffffffffffffffffffffffffff163314611f46576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607b547c0100000000000000000000000000000000000000000000000000000000900460ff16611fa2576040517ff6ba91a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607b80547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690556040517f854dd6ce5a1445c4c54388b21cffd11cf5bba1b9e763aec48ce3da75d617412f90600090a1565b600060705460646120069190615b55565b905090565b606f5460ff1615612048576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60795467ffffffffffffffff858116600090815260726020526040902060010154429261209592780100000000000000000000000000000000000000000000000090910481169116615975565b67ffffffffffffffff1611156120d7576040517f8a0704d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e86120e48686615b21565b67ffffffffffffffff161115612126576040517fb59f753a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612134868686868686613eb6565b61213d84614a56565b607954700100000000000000000000000000000000900467ffffffffffffffff1660000361228557607480547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff868116918217909255600090815260756020526040902083905560795416156121e057607980547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690555b6040517f33d6247d000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906333d6247d90602401600060405180830381600087803b15801561226857600080fd5b505af115801561227c573d6000803e3d6000fd5b50505050612355565b61228d614796565b6079805467ffffffffffffffff169060006122a783615a3d565b825467ffffffffffffffff9182166101009390930a92830292820219169190911790915560408051608081018252428316815287831660208083019182528284018981526060840189815260795487166000908152607890935294909120925183549251861668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009093169516949094171781559151600183015551600290910155505b604051828152339067ffffffffffffffff8616907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200161103c565b607a5473ffffffffffffffffffffffffffffffffffffffff1633146123e4576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f80547fff0000000000000000000000000000000000000000ffffffffffffffffffffff166b01000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610c9a565b612470614c36565b61247a6000614cb7565b565b60335473ffffffffffffffffffffffffffffffffffffffff1633146125e45760006124a5612c92565b90508067ffffffffffffffff168267ffffffffffffffff16116124f4576040517f812a372d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60735467ffffffffffffffff680100000000000000009091048116908316118061253a575067ffffffffffffffff80831660009081526072602052604090206001015416155b15612571576040517f98c5c01400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff80831660009081526072602052604090206001015442916125a09162093a809116615975565b67ffffffffffffffff1611156125e2576040517fd257555a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b611d61614d2e565b607b5473ffffffffffffffffffffffffffffffffffffffff16331461263d576040517fd1ec4b2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607b54607a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040519081527f056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e9060200160405180910390a1565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015612747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276b9190615a64565b90506000612777612c92565b60735467ffffffffffffffff6801000000000000000082048116916127cf9170010000000000000000000000000000000082048116917801000000000000000000000000000000000000000000000000900416615b21565b6127d99190615975565b6127e39190615b21565b67ffffffffffffffff169050806000036128005760009250505090565b61280a8183615b9b565b9250505090565b606f5460ff161561284e576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61285d8787878787878761427a565b67ffffffffffffffff84166000908152607560209081526040918290205482519081529081018490527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a16128b9614d2e565b50505050505050565b607a5473ffffffffffffffffffffffffffffffffffffffff163314612913576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a8067ffffffffffffffff8216111561295a576040517fcc96507000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f5460ff166129c15760795467ffffffffffffffff7001000000000000000000000000000000009091048116908216106129c1576040517f48a05a9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607980547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff8416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610c9a565b607a5473ffffffffffffffffffffffffffffffffffffffff163314612a8f576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620151808167ffffffffffffffff161115612ad6576040517fe067dfe800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f80547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff1661010067ffffffffffffffff8416908102919091179091556040519081527f1b023231a1ab6b5d93992f168fb44498e1a7e64cef58daff6f1c216de6a68c2890602001610c9a565b607a5473ffffffffffffffffffffffffffffffffffffffff163314612b95576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce690602001610c9a565b600067ffffffff0000000167ffffffffffffffff8316108015612c40575067ffffffff00000001604083901c67ffffffffffffffff16105b8015612c61575067ffffffff00000001608083901c67ffffffffffffffff16105b8015612c78575067ffffffff0000000160c083901c105b15612c8557506001919050565b506000919050565b919050565b60795460009067ffffffffffffffff1615612cd6575060795467ffffffffffffffff9081166000908152607860205260409020546801000000000000000090041690565b5060745467ffffffffffffffff1690565b607a5473ffffffffffffffffffffffffffffffffffffffff163314612d38576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6076612d448282615bfd565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610c9a919061535c565b600054610100900460ff1615808015612d945750600054600160ff909116105b80612dae5750303b158015612dae575060005460ff166001145b612e3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015612e9d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b612eaa6020880188615633565b607a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055612eff6040880160208901615633565b606f805473ffffffffffffffffffffffffffffffffffffffff929092166b010000000000000000000000027fff0000000000000000000000000000000000000000ffffffffffffffffffffff909216919091179055612f646080880160608901615633565b6074805473ffffffffffffffffffffffffffffffffffffffff9290921668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff9092169190911790556000805260756020527ff9e3fbf150b7a0077118526f473c53cb4734f166167e2c6213e3567dd390b4ad8690556076612fef8682615bfd565b506077612ffc8582615bfd565b5062093a806130116060890160408a016154f9565b67ffffffffffffffff161115613053576040517fcc96507000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61306360608801604089016154f9565b6079805467ffffffffffffffff92909216700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff90921691909117905562093a806130c560a0890160808a016154f9565b67ffffffffffffffff161115613107576040517f1d06e87900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61311760a08801608089016154f9565b6079805477ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff939093169290920291909117905567016345785d8a0000607055606f80547fffffffffffffffffffffffffffffffffffffffffff00000000000000000000ff166a03ea000000000000070800179055607b80547fffffff000000000000000000ffffffffffffffffffffffffffffffffffffffff167c01000000000006978000000000000000000000000000000000000000001790556131f6614db6565b7fed7be53c9f1a96a481223b15568a5b1a475e01a74b347d6ca187c8bf0c078cd660007f0000000000000000000000000000000000000000000000000000000000000000858560405161324c9493929190615d17565b60405180910390a180156128b957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050505050565b607b547c0100000000000000000000000000000000000000000000000000000000900460ff161561331c576040517f24eff8c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f5460ff1615613359576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000819003613395576040517fcb591a5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e88111156133d1576040517fb59f753a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60735467ffffffffffffffff7801000000000000000000000000000000000000000000000000820481169161341c918491700100000000000000000000000000000000900416615d4f565b1115613454576040517fc630a00d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60735467ffffffffffffffff680100000000000000008204811660008181526072602052604081205491937001000000000000000000000000000000009004909216915b848110156136fe5760008787838181106134b4576134b461599d565b90506020028101906134c69190615d62565b6134cf90615da0565b9050836134db81615a3d565b8251805160209182012081850151604080870151905194995091945060009361353d9386939101928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012067ffffffffffffffff89166000908152607190935291205490915081146135c6576040517fce3d755e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff86166000908152607160205260408120556135eb600189615b42565b840361365a5742607b60149054906101000a900467ffffffffffffffff1684604001516136189190615975565b67ffffffffffffffff16111561365a576040517fc44a082100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020838101516040805192830188905282018490526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c0160405160208183030381529060405280519060200120945050505080806136f690615a7d565b915050613498565b506137098484615975565b6073805467ffffffffffffffff4281167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009092168217808455604080516060810182528781526020808201958652680100000000000000009384900485168284019081528589166000818152607290935284832093518455965160019390930180549151871686027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921693871693909317179091558554938916700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff938602939093167fffffffffffffffff00000000000000000000000000000000ffffffffffffffff90941693909317919091179093559151929550917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a2505050505050565b607a5473ffffffffffffffffffffffffffffffffffffffff1633146138b2576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561391a57600080fd5b505af115801561392e573d6000803e3d6000fd5b5050505061247a614e56565b607b547c0100000000000000000000000000000000000000000000000000000000900460ff1615613997576040517f24eff8c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f5460ff16156139d4576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006139de611ff5565b905081811115613a1a576040517f4732fdb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611388831115613a56576040517fa29a6c7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613a9873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163330846146b4565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ed691ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b299190615a64565b60738054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018613b6383615a3d565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508484604051613b9a929190615e30565b60408051918290038220602083015281018290527fffffffffffffffff0000000000000000000000000000000000000000000000004260c01b166060820152606801604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815281516020928301206073547801000000000000000000000000000000000000000000000000900467ffffffffffffffff1660009081526071909352912055323303613cca57607354604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613d29565b607360189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc93182338888604051613d209493929190615e40565b60405180910390a25b5050505050565b607a5473ffffffffffffffffffffffffffffffffffffffff163314613d81576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607480547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90602001610c9a565b613e0a614c36565b73ffffffffffffffffffffffffffffffffffffffff8116613ead576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401612e36565b611d6181614cb7565b600080613ec1612c92565b905067ffffffffffffffff881615613f915760795467ffffffffffffffff9081169089161115613f1d576040517fbb14c20500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8089166000908152607860205260409020600281015481549094509091898116680100000000000000009092041614613f8b576040517f2bd2e3e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50614032565b67ffffffffffffffff8716600090815260756020526040902054915081613fe4576040517f4997b98600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff168767ffffffffffffffff161115614032576040517f1e56e9e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff168667ffffffffffffffff161161407f576040517fb9b18f5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061408e8888888689610ca5565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516140c39190615e76565b602060405180830381855afa1580156140e0573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906141039190615a64565b61410d9190615e88565b6040805160208101825282815290517f9121da8a00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691639121da8a9161418f91899190600401615e9c565b602060405180830381865afa1580156141ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d09190615ed7565b614206576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61426e33614214858b615b21565b67ffffffffffffffff166142266126b8565b6142309190615b55565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169190614ee5565b50505050505050505050565b600067ffffffffffffffff8816156143485760795467ffffffffffffffff90811690891611156142d6576040517fbb14c20500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5067ffffffffffffffff8088166000908152607860205260409020600281015481549092888116680100000000000000009092041614614342576040517f2bd2e3e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506143e4565b5067ffffffffffffffff85166000908152607560205260409020548061439a576040517f4997b98600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60745467ffffffffffffffff90811690871611156143e4576040517f1e56e9e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60795467ffffffffffffffff908116908816118061441657508767ffffffffffffffff168767ffffffffffffffff1611155b8061443d575060795467ffffffffffffffff68010000000000000000909104811690881611155b15614474576040517fbfa7079f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8781166000908152607860205260409020546801000000000000000090048116908616146144d7576040517f32a2a77f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006144e68787878588610ca5565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161451b9190615e76565b602060405180830381855afa158015614538573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061455b9190615a64565b6145659190615e88565b6040805160208101825282815290517f9121da8a00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691639121da8a916145e791889190600401615e9c565b602060405180830381865afa158015614604573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146289190615ed7565b61465e576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff891660009081526078602052604090206002015485900361426e576040517fa47276bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526147909085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614f40565b50505050565b60795467ffffffffffffffff68010000000000000000820481169116111561247a576079546000906147df9068010000000000000000900467ffffffffffffffff166001615975565b90506147ea8161125a565b15611d615760795460009060029061480d90849067ffffffffffffffff16615b21565b6148179190615ef9565b6148219083615975565b905061482c8161125a565b1561483e5761483a81614843565b5050565b61483a825b60795467ffffffffffffffff68010000000000000000909104811690821611158061487d575060795467ffffffffffffffff908116908216115b156148b4576040517fd086b70b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff818116600081815260786020908152604080832080546074805468010000000000000000928390049098167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090981688179055600282015487865260759094529382902092909255607980547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff169390940292909217909255600182015490517f33d6247d00000000000000000000000000000000000000000000000000000000815260048101919091529091907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906333d6247d90602401600060405180830381600087803b1580156149e657600080fd5b505af11580156149fa573d6000803e3d6000fd5b505050508267ffffffffffffffff168167ffffffffffffffff167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e8460020154604051614a4991815260200190565b60405180910390a3505050565b6000614a60612c92565b905081600080614a708484615b21565b606f5467ffffffffffffffff9182169250600091614a949161010090041642615b42565b90505b8467ffffffffffffffff168467ffffffffffffffff1614614b1f5767ffffffffffffffff80851660009081526072602052604090206001810154909116821015614afd57600181015468010000000000000000900467ffffffffffffffff169450614b19565b614b078686615b21565b67ffffffffffffffff16935050614b1f565b50614a97565b6000614b2b8484615b42565b905083811015614b8257808403600c8111614b465780614b49565b600c5b9050806103e80a81606f60099054906101000a900461ffff1661ffff160a6070540281614b7857614b78615b6c565b0460705550614bf2565b838103600c8111614b935780614b96565b600c5b90506000816103e80a82606f60099054906101000a900461ffff1661ffff160a670de0b6b3a76400000281614bcd57614bcd615b6c565b04905080607054670de0b6b3a76400000281614beb57614beb615b6c565b0460705550505b683635c9adc5dea000006070541115614c1757683635c9adc5dea000006070556128b9565b633b9aca0060705410156128b957633b9aca0060705550505050505050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461247a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612e36565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614d9657600080fd5b505af1158015614daa573d6000803e3d6000fd5b5050505061247a61504c565b600054610100900460ff16614e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401612e36565b61247a33614cb7565b606f5460ff16614e92576040517f5386698100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052614f3b9084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161470e565b505050565b6000614fa2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166150df9092919063ffffffff16565b805190915015614f3b5780806020019051810190614fc09190615ed7565b614f3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401612e36565b606f5460ff1615615089576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b60606150ee84846000856150f6565b949350505050565b606082471015615188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401612e36565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516151b19190615e76565b60006040518083038185875af1925050503d80600081146151ee576040519150601f19603f3d011682016040523d82523d6000602084013e6151f3565b606091505b50915091506152048783838761520f565b979650505050505050565b606083156152a557825160000361529e5773ffffffffffffffffffffffffffffffffffffffff85163b61529e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401612e36565b50816150ee565b6150ee83838151156152ba5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e36919061535c565b60005b838110156153095781810151838201526020016152f1565b50506000910152565b6000815180845261532a8160208601602086016152ee565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061536f6020830184615312565b9392505050565b60006020828403121561538857600080fd5b813561ffff8116811461536f57600080fd5b803567ffffffffffffffff81168114612c8d57600080fd5b600080600080600060a086880312156153ca57600080fd5b6153d38661539a565b94506153e16020870161539a565b94979496505050506040830135926060810135926080909101359150565b80610300810183101561541157600080fd5b92915050565b6000806000806000806103a0878903121561543157600080fd5b61543a8761539a565b95506154486020880161539a565b94506154566040880161539a565b935060608701359250608087013591506154738860a089016153ff565b90509295509295509295565b60008060008060008060006103c0888a03121561549b57600080fd5b6154a48861539a565b96506154b26020890161539a565b95506154c06040890161539a565b94506154ce6060890161539a565b93506080880135925060a088013591506154eb8960c08a016153ff565b905092959891949750929550565b60006020828403121561550b57600080fd5b61536f8261539a565b803573ffffffffffffffffffffffffffffffffffffffff81168114612c8d57600080fd5b60008083601f84011261554a57600080fd5b50813567ffffffffffffffff81111561556257600080fd5b60208301915083602082850101111561557a57600080fd5b9250929050565b60008060008060006060868803121561559957600080fd5b853567ffffffffffffffff808211156155b157600080fd5b818801915088601f8301126155c557600080fd5b8135818111156155d457600080fd5b8960208260071b85010111156155e957600080fd5b602083019750809650506155ff60208901615514565b9450604088013591508082111561561557600080fd5b5061562288828901615538565b969995985093965092949392505050565b60006020828403121561564557600080fd5b61536f82615514565b60006020828403121561566057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff808411156156b1576156b1615667565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156156f7576156f7615667565b8160405280935085815286868601111561571057600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261573b57600080fd5b61536f83833560208501615696565b60006020828403121561575c57600080fd5b813567ffffffffffffffff81111561577357600080fd5b6150ee8482850161572a565b60008060008060008086880361012081121561579a57600080fd5b60a08112156157a857600080fd5b5086955060a0870135945060c087013567ffffffffffffffff808211156157ce57600080fd5b6157da8a838b0161572a565b955060e08901359150808211156157f057600080fd5b6157fc8a838b0161572a565b945061010089013591508082111561581357600080fd5b5061582089828a01615538565b979a9699509497509295939492505050565b6000806020838503121561584557600080fd5b823567ffffffffffffffff8082111561585d57600080fd5b818501915085601f83011261587157600080fd5b81358181111561588057600080fd5b8660208260051b850101111561589557600080fd5b60209290920196919550909350505050565b6000806000604084860312156158bc57600080fd5b833567ffffffffffffffff8111156158d357600080fd5b6158df86828701615538565b909790965060209590950135949350505050565b600181811c9082168061590757607f821691505b602082108103615940577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff81811683821601908082111561599657615996615946565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000608082840312156159de57600080fd5b6040516080810181811067ffffffffffffffff82111715615a0157615a01615667565b80604052508235815260208301356020820152615a206040840161539a565b6040820152615a316060840161539a565b60608201529392505050565b600067ffffffffffffffff808316818103615a5a57615a5a615946565b6001019392505050565b600060208284031215615a7657600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615aae57615aae615946565b5060010190565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b838152604060208201526000615b18604083018486615ab5565b95945050505050565b67ffffffffffffffff82811682821603908082111561599657615996615946565b8181038181111561541157615411615946565b808202811582820484141761541157615411615946565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615baa57615baa615b6c565b500490565b601f821115614f3b57600081815260208120601f850160051c81016020861015615bd65750805b601f850160051c820191505b81811015615bf557828155600101615be2565b505050505050565b815167ffffffffffffffff811115615c1757615c17615667565b615c2b81615c2584546158f3565b84615baf565b602080601f831160018114615c7e5760008415615c485750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555615bf5565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015615ccb57888601518255948401946001909101908401615cac565b5085821015615d0757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600067ffffffffffffffff808716835280861660208401525060606040830152615d45606083018486615ab5565b9695505050505050565b8082018082111561541157615411615946565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112615d9657600080fd5b9190910192915050565b600060608236031215615db257600080fd5b6040516060810167ffffffffffffffff8282108183111715615dd657615dd6615667565b816040528435915080821115615deb57600080fd5b50830136601f820112615dfd57600080fd5b615e0c36823560208401615696565b82525060208301356020820152615e256040840161539a565b604082015292915050565b8183823760009101908152919050565b84815273ffffffffffffffffffffffffffffffffffffffff84166020820152606060408201526000615d45606083018486615ab5565b60008251615d968184602087016152ee565b600082615e9757615e97615b6c565b500690565b61032081016103008085843782018360005b6001811015615ecd578151835260209283019290910190600101615eae565b5050509392505050565b600060208284031215615ee957600080fd5b8151801515811461536f57600080fd5b600067ffffffffffffffff80841680615f1457615f14615b6c565b9216919091049291505056fea2646970667358221220c54659be0c71b5f48f3f4d4bfee20a108aa9b5b089c2412703866a273f30c4f964736f6c63430008140033 \ No newline at end of file diff --git a/etherman/smartcontracts/bin/polygondatacommittee.bin b/etherman/smartcontracts/bin/polygondatacommittee.bin new file mode 100644 index 00000000..39e1df2f --- /dev/null +++ b/etherman/smartcontracts/bin/polygondatacommittee.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50611646806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063715018a611610081578063dce1e2b61161005b578063dce1e2b614610178578063e4f1712014610180578063f2fde38b146101bf57600080fd5b8063715018a6146101405780638129fc1c146101485780638da5cb5b1461015057600080fd5b80635daf08ca116100b25780635daf08ca146100f6578063609d4544146101205780636beedd391461013757600080fd5b8063078fba2a146100ce5780633b51be4b146100e3575b600080fd5b6100e16100dc366004610fe9565b6101d2565b005b6100e16100f1366004611094565b6104d4565b6101096101043660046110e0565b61071f565b60405161011792919061115d565b60405180910390f35b61012960665481565b604051908152602001610117565b61012960655481565b6100e16107f1565b6100e1610805565b60335460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610117565b606754610129565b604080518082018252601981527f44617461417661696c6162696c697479436f6d6d697474656500000000000000602082015290516101179190611195565b6100e16101cd3660046111af565b61099c565b6101da610a50565b8285811015610215576040517f2e7dcd6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610220601482611214565b8214610258576040517f2ab6a12900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61026460676000610ef5565b6000805b8281101561047857600061027d601483611214565b9050600086828761028f60148361122b565b9261029c9392919061123e565b6102a591611268565b60601c90508888848181106102bc576102bc6112b0565b90506020028101906102ce91906112df565b9050600003610309576040517fb54b70e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061036e576040517fd53cfbe000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606760405180604001604052808b8b8781811061038d5761038d6112b0565b905060200281019061039f91906112df565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505073ffffffffffffffffffffffffffffffffffffffff851660209283015283546001810185559381522081519192600202019081906104139082611415565b5060209190910151600190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905592508190506104708161152f565b915050610268565b508383604051610489929190611567565b6040519081900381206066819055606589905581527f831403fd381b3e6ac875d912ec2eee0e0203d0d29f7b3e0c96fc8f582d6db6579060200160405180910390a150505050505050565b60655460006104e4826041611214565b905080831080610508575060146104fb8285611577565b61050591906115b9565b15155b1561053f576040517f6b8eec4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60665461054e8483818861123e565b60405161055c929190611567565b60405180910390201461059b576040517f6b156b2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060146105aa8487611577565b6105b491906115cd565b905060005b848110156107155760006105ce604183611214565b9050600061062b8a8a848b6105e460418361122b565b926105f19392919061123e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ad192505050565b90506000855b858110156106c7576000610646601483611214565b610650908a61122b565b905060008c828d61066260148361122b565b9261066f9392919061123e565b61067891611268565b60601c905073ffffffffffffffffffffffffffffffffffffffff851681036106b2576106a583600161122b565b98506001935050506106c7565b505080806106bf9061152f565b915050610631565b50806106ff576040517f8431721300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050808061070d9061152f565b9150506105b9565b5050505050505050565b6067818154811061072f57600080fd5b906000526020600020906002020160009150905080600001805461075290611373565b80601f016020809104026020016040519081016040528092919081815260200182805461077e90611373565b80156107cb5780601f106107a0576101008083540402835291602001916107cb565b820191906000526020600020905b8154815290600101906020018083116107ae57829003601f168201915b5050506001909301549192505073ffffffffffffffffffffffffffffffffffffffff1682565b6107f9610a50565b6108036000610af7565b565b600054610100900460ff16158080156108255750600054600160ff909116105b8061083f5750303b15801561083f575060005460ff166001145b6108d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561092e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610936610b6e565b801561099957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6109a4610a50565b73ffffffffffffffffffffffffffffffffffffffff8116610a47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108c7565b61099981610af7565b60335473ffffffffffffffffffffffffffffffffffffffff163314610803576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c7565b6000806000610ae08585610c0e565b91509150610aed81610c53565b5090505b92915050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610c05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108c7565b61080333610af7565b6000808251604103610c445760208301516040840151606085015160001a610c3887828585610e06565b94509450505050610c4c565b506000905060025b9250929050565b6000816004811115610c6757610c676115e1565b03610c6f5750565b6001816004811115610c8357610c836115e1565b03610cea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108c7565b6002816004811115610cfe57610cfe6115e1565b03610d65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108c7565b6003816004811115610d7957610d796115e1565b03610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016108c7565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610e3d5750600090506003610eec565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610e91573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610ee557600060019250925050610eec565b9150600090505b94509492505050565b508054600082556002029060005260206000209081019061099991905b80821115610f59576000610f268282610f5d565b506001810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600201610f12565b5090565b508054610f6990611373565b6000825580601f10610f79575050565b601f01602090049060005260206000209081019061099991905b80821115610f595760008155600101610f93565b60008083601f840112610fb957600080fd5b50813567ffffffffffffffff811115610fd157600080fd5b602083019150836020828501011115610c4c57600080fd5b60008060008060006060868803121561100157600080fd5b85359450602086013567ffffffffffffffff8082111561102057600080fd5b818801915088601f83011261103457600080fd5b81358181111561104357600080fd5b8960208260051b850101111561105857600080fd5b60208301965080955050604088013591508082111561107657600080fd5b5061108388828901610fa7565b969995985093965092949392505050565b6000806000604084860312156110a957600080fd5b83359250602084013567ffffffffffffffff8111156110c757600080fd5b6110d386828701610fa7565b9497909650939450505050565b6000602082840312156110f257600080fd5b5035919050565b6000815180845260005b8181101561111f57602081850181015186830182015201611103565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60408152600061117060408301856110f9565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b6020815260006111a860208301846110f9565b9392505050565b6000602082840312156111c157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146111a857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610af157610af16111e5565b80820180821115610af157610af16111e5565b6000808585111561124e57600080fd5b8386111561125b57600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156112a85780818660140360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261131457600080fd5b83018035915067ffffffffffffffff82111561132f57600080fd5b602001915036819003821315610c4c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061138757607f821691505b6020821081036113c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561141057600081815260208120601f850160051c810160208610156113ed5750805b601f850160051c820191505b8181101561140c578281556001016113f9565b5050505b505050565b815167ffffffffffffffff81111561142f5761142f611344565b6114438161143d8454611373565b846113c6565b602080601f83116001811461149657600084156114605750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561140c565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156114e3578886015182559484019460019091019084016114c4565b508582101561151f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611560576115606111e5565b5060010190565b8183823760009101908152919050565b81810381811115610af157610af16111e5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826115c8576115c861158a565b500690565b6000826115dc576115dc61158a565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220e34b71e7c7c23d67a42aa345fc1c3d9c57287ac1c2a2024084974dcc23e4088864736f6c63430008140033 \ No newline at end of file diff --git a/etherman/smartcontracts/bin/polygonvalidium.bin b/etherman/smartcontracts/bin/polygonvalidium.bin new file mode 100644 index 00000000..6d973e76 --- /dev/null +++ b/etherman/smartcontracts/bin/polygonvalidium.bin @@ -0,0 +1 @@ +6101006040523480156200001257600080fd5b506040516200551238038062005512833981016040819052620000359162000071565b6001600160a01b0393841660a052918316608052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e05161532d620001e56000396000818161056101528181610fd60152818161109f015281816110c1015281816111d90152818161133b015281816114a8015281816116fb01528181611c68015281816121d701528181612649015281816126ff01528181612e5501528181612f1d01528181613d3001528181613db101528181613dd30152613e7e01526000818161070301528181610b3001528181611955015281816128cf015281816129d701526138560152600081816107cf01528181610bb201528181611adc0152818161306801526138d8015260008181610801015281816108ff015281816110290152818161116f015261303c015261532d6000f3fe608060405234801561001057600080fd5b506004361061031f5760003560e01c80637a5460c5116101a7578063c7fffd4b116100ee578063e57a0b4c11610097578063ecef3f9911610071578063ecef3f9914610876578063f35dda4714610889578063f851a4401461089157600080fd5b8063e57a0b4c14610823578063e7a7ed0214610843578063eaeb077b1461086357600080fd5b8063d02103ca116100c8578063d02103ca146107ca578063d7bc90ff146107f1578063e46761c4146107fc57600080fd5b8063c7fffd4b1461078f578063c89e42df14610797578063cfa8ed47146107aa57600080fd5b8063a3c573eb11610150578063ada8f9191161012a578063ada8f91914610740578063b0afe15414610753578063c754c7ed1461075f57600080fd5b8063a3c573eb146106fe578063a652f26c14610725578063aa3587d31461073857600080fd5b806391cafe321161018157806391cafe32146106bd5780639e001877146106d05780639f26f840146106eb57600080fd5b80637a5460c5146106665780637cd76b8b146106a25780638c3d7301146106b557600080fd5b806340b5de6c1161026b578063542028d5116102145780636e05d2cd116101ee5780636e05d2cd146106375780636ff512cc14610640578063712570221461065357600080fd5b8063542028d514610607578063676870d21461060f5780636b8616ce1461061757600080fd5b80634c21fef3116102455780634c21fef3146105835780634e487706146105b857806352bdeb6d146105cb57600080fd5b806340b5de6c146104dc578063456052671461053457806349b7b8021461055c57600080fd5b80632a9f208f116102cd57806332c2d153116102a757806332c2d1531461046c5780633c351e101461047f5780633cbc795b1461049f57600080fd5b80632a9f208f1461040a5780632c111c06146104375780632d72c2481461045757600080fd5b8063107bf28c116102fe578063107bf28c146103a357806311e892d4146103ab57806326782247146103c557600080fd5b8062d0295d14610324578063035089631461033f57806305835f371461035a575b600080fd5b61032c6108b7565b6040519081526020015b60405180910390f35b610347602081565b60405161ffff9091168152602001610336565b6103966040518060400160405280600881526020017f80808401c9c3809400000000000000000000000000000000000000000000000081525081565b6040516103369190614419565b6103966109d7565b6103b360f981565b60405160ff9091168152602001610336565b6001546103e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610336565b60075461041e9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610336565b6008546103e59073ffffffffffffffffffffffffffffffffffffffff1681565b61046a6104653660046144ac565b610a65565b005b61046a61047a366004614574565b611339565b6009546103e59073ffffffffffffffffffffffffffffffffffffffff1681565b6009546104c79074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610336565b6105037fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610336565b60075461041e90700100000000000000000000000000000000900467ffffffffffffffff1681565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b600a546105a89074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610336565b61046a6105c63660046145b6565b611408565b6103966040518060400160405280600281526020017f80b800000000000000000000000000000000000000000000000000000000000081525081565b610396611622565b610347601f81565b61032c6106253660046145b6565b60066020526000908152604090205481565b61032c60055481565b61046a61064e3660046145d3565b61162f565b61046a610661366004614745565b6116f9565b6103966040518060400160405280600281526020017f80b900000000000000000000000000000000000000000000000000000000000081525081565b61046a6106b03660046145d3565b611ea4565b61046a611f6e565b61046a6106cb3660046145d3565b612041565b6103e573a40d5f56745a118d0906a34e69aec8c0db1cb8fa81565b61046a6106f9366004614837565b61215a565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b610396610733366004614879565b6127ce565b61046a612bb3565b61046a61074e3660046145d3565b612c80565b61032c6405ca1ab1e081565b60075461041e907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b6103b360e481565b61046a6107a53660046148ee565b612d4a565b6002546103e59073ffffffffffffffffffffffffffffffffffffffff1681565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b61032c635ca1ab1e81565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b600a546103e59073ffffffffffffffffffffffffffffffffffffffff1681565b60075461041e9068010000000000000000900467ffffffffffffffff1681565b61046a610871366004614923565b612ddd565b61046a61088436600461496f565b6132e5565b6103b3601b81565b6000546103e59062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a91906149bb565b6007549091506000906109a99067ffffffffffffffff700100000000000000000000000000000000820481169168010000000000000000900416614a03565b67ffffffffffffffff169050806000036109c65760009250505090565b6109d08183614a2b565b9250505090565b600480546109e490614a66565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1090614a66565b8015610a5d5780601f10610a3257610100808354040283529160200191610a5d565b820191906000526020600020905b815481529060010190602001808311610a4057829003601f168201915b505050505081565b60025473ffffffffffffffffffffffffffffffffffffffff163314610ab6576040517f11e7be1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836000819003610af2576040517fcb591a5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e8811115610b2e576040517fb59f753a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379e2cf976040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b9657600080fd5b505af1158015610baa573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ca1e1656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f91906149bb565b600754600554919250429170010000000000000000000000000000000090910467ffffffffffffffff16908160005b86811015610f3c5760008c8c83818110610c8a57610c8a614ab9565b905060800201803603810190610ca09190614ae8565b604081015190915067ffffffffffffffff1615610e945784610cc181614b36565b95505060008160000151826020015183604001518460600151604051602001610d289493929190938452602084019290925260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166040830152604882015260680190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012067ffffffffffffffff8916600090815260069093529120549091508114610db1576040517fce3d755e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848260000151836020015184604001518f8660600151604051602001610e4b969594939291909586526020860194909452604085019290925260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166060808501919091521b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166068830152607c820152609c0190565b604051602081830303815290604052805190602001209450600660008767ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206000905550610f29565b8051604080516020810187905290810191909152606080820189905260c088901b7fffffffffffffffff0000000000000000000000000000000000000000000000001660808301528c901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660888201526000609c82015260bc016040516020818303038152906040528051906020012093505b5080610f3481614b5d565b915050610c6e565b5060075467ffffffffffffffff6801000000000000000090910481169084161115610f93576040517fc630a00d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290558567ffffffffffffffff84811690831614611099576000610fb98386614a03565b9050610fcf67ffffffffffffffff821683614b95565b91506110507f00000000000000000000000000000000000000000000000000000000000000008267ffffffffffffffff166110086108b7565b6110129190614ba8565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169190613349565b50600780547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff8716021790555b611197337f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663477fa2706040518163ffffffff1660e01b8152600401602060405180830381865afa15801561112a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114e91906149bb565b6111589190614ba8565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692919061341d565b6040517f9a908e7300000000000000000000000000000000000000000000000000000000815267ffffffffffffffff88166004820152602481018490526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690639a908e73906044016020604051808303816000875af1158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125b9190614bbf565b600a546040517f3b51be4b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690633b51be4b906112b69087908e908e90600401614c25565b60006040518083038186803b1580156112ce57600080fd5b505afa1580156112e2573d6000803e3d6000fd5b505050508067ffffffffffffffff167f3e54d0825ed78523037d00a81759237eb436ce774bd546993ee67a1b67b6e7668860405161132291815260200190565b60405180910390a250505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146113a8576040517fb9b3a2c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966846040516113fb91815260200190565b60405180910390a3505050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461145f576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a8067ffffffffffffffff821611156114a6576040517ff5e37f2f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166315064c966040518163ffffffff1660e01b8152600401602060405180830381865afa158015611511573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115359190614c48565b61159e5760075467ffffffffffffffff780100000000000000000000000000000000000000000000000090910481169082161061159e576040517ff5e37f2f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007805477ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff8416908102919091179091556040519081527fa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b906020015b60405180910390a150565b600380546109e490614a66565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314611686576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001611617565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314611768576040517fb9b3a2c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16158080156117885750600054600160ff909116105b806117a25750303b1580156117a2575060005460ff166001145b611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561189157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606073ffffffffffffffffffffffffffffffffffffffff851615611a7d576118b885613481565b6118c186613591565b6118ca87613698565b6040516020016118dc93929190614c6a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f318aee3d00000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff878116600484015290925060009182917f0000000000000000000000000000000000000000000000000000000000000000169063318aee3d9060240160408051808303816000875af115801561199d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c19190614ca3565b915091508163ffffffff16600014611a39576009805463ffffffff841674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff841617179055611a7a565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89161790555b50505b600954600090611ac590889073ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900463ffffffff16856127ce565b9050600081805190602001209050600042905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ed691ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6991906149bb565b90506000808483858f611b7d600143614b95565b60408051602081019790975286019490945260608086019390935260c09190911b7fffffffffffffffff000000000000000000000000000000000000000000000000166080850152901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016608883015240609c82015260bc01604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052805160209091012060058190557f9a908e73000000000000000000000000000000000000000000000000000000008252600160048301526024820181905291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690639a908e73906044016020604051808303816000875af1158015611cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cea9190614bbf565b508c600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508860039081611d7c9190614d2b565b506004611d898982614d2b565b508c600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062069780600760186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f060116213bcbf54ca19fd649dc84b59ab2bbd200ab199770e4d923e222a28e7f85838e604051611e2a93929190614e45565b60405180910390a15050505050508015611e9b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314611efb576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd331bd4c4cd1afecb94a225184bded161ff3213624ba4fb58c4f30c5a861144a90602001611617565b60015473ffffffffffffffffffffffffffffffffffffffff163314611fbf576040517fd1ec4b2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff1673ffffffffffffffffffffffffffffffffffffffff9092166201000081029290921790556040519081527f056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e9060200160405180910390a1565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314612098576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085473ffffffffffffffffffffffffffffffffffffffff166120e7576040517fd40d91c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f5fbd7dd171301c4a1611a84aac4ba86d119478560557755f7927595b082634fb90602001611617565b60085473ffffffffffffffffffffffffffffffffffffffff1615801590612199575060085473ffffffffffffffffffffffffffffffffffffffff163314155b156121d0576040517f24eff8c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4262093a807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166330c27dde6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612240573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122649190614bbf565b61226e9190614e84565b67ffffffffffffffff1611156122b0576040517f3d49ed4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190036122ec576040517fcb591a5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e8811115612328576040517fb59f753a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075467ffffffffffffffff680100000000000000008204811691612363918491700100000000000000000000000000000000900416614ea5565b111561239b576040517fc630a00d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075460055470010000000000000000000000000000000090910467ffffffffffffffff169060005b838110156126435760008686838181106123e0576123e0614ab9565b90506020028101906123f29190614eb8565b6123fb90614ef6565b90508361240781614b36565b825180516020918201208185015160408087015160608801519151959a50929550600094612474948794929101938452602084019290925260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166040830152604882015260680190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012067ffffffffffffffff89166000908152600690935291205490915081146124fd576040517fce3d755e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8616600090815260066020526040812055612522600188614b95565b84036125915742600760189054906101000a900467ffffffffffffffff16846040015161254f9190614e84565b67ffffffffffffffff161115612591576040517fc44a082100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208381015160408086015160608088015183519586018b90529285018790528481019390935260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660808401523390911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088830152609c82015260bc01604051602081830303815290604052805190602001209450505050808061263b90614b5d565b9150506123c4565b506126717f0000000000000000000000000000000000000000000000000000000000000000846110086108b7565b60058190556007805467ffffffffffffffff8416700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff9091161790556040517f9a908e7300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690639a908e739061274b908790869060040167ffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af115801561276a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278e9190614bbf565b60405190915067ffffffffffffffff8216907f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a490600090a2505050505050565b6060600085858573a40d5f56745a118d0906a34e69aec8c0db1cb8fa60008760405160240161280296959493929190614f64565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff811bff70000000000000000000000000000000000000000000000000000000017905283519091506060906000036129535760f9601f83516128979190614fc7565b6040518060400160405280600881526020017f80808401c9c380940000000000000000000000000000000000000000000000008152507f00000000000000000000000000000000000000000000000000000000000000006040518060400160405280600281526020017f80b800000000000000000000000000000000000000000000000000000000000081525060e48760405160200161293d9796959493929190614fe2565b6040516020818303038152906040529050612a57565b815161ffff1015612990576040517f248b8f8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160f961299f602083614fc7565b6040518060400160405280600881526020017f80808401c9c380940000000000000000000000000000000000000000000000008152507f00000000000000000000000000000000000000000000000000000000000000006040518060400160405280600281526020017f80b90000000000000000000000000000000000000000000000000000000000008152508588604051602001612a4497969594939291906150c5565b6040516020818303038152906040529150505b805160208083019190912060408051600080825293810180835292909252601b908201526405ca1ab1e06060820152635ca1ab1e608082015260019060a0016020604051602081039080840390855afa158015612ab8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612b30576040517fcd16196600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051600090612b769084906405ca1ab1e090635ca1ab1e90601b907fff00000000000000000000000000000000000000000000000000000000000000906020016151a8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529450505050505b949350505050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314612c0a576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116740100000000000000000000000000000000000000009182900460ff16159091021790556040517ff32a0473f809a720a4f8af1e50d353f1caf7452030626fdaac4273f5e6587f4190600090a1565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314612cd7576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce690602001611617565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314612da1576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003612dad8282614d2b565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20816040516116179190614419565b60085473ffffffffffffffffffffffffffffffffffffffff1615801590612e1c575060085473ffffffffffffffffffffffffffffffffffffffff163314155b15612e53576040517f24eff8c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166315064c966040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee29190614c48565b15612f19576040517f39258d1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663604691696040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612faa91906149bb565b905081811115612fe6576040517f2354600f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611388831115613022576040517fa29a6c7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61306473ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633308461341d565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ed691ef6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f591906149bb565b600780549192506801000000000000000090910467ffffffffffffffff1690600861311f83614b36565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508484604051613156929190615204565b604051908190039020814261316c600143614b95565b60408051602081019590955284019290925260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166060830152406068820152608801604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152918152815160209283012060075468010000000000000000900467ffffffffffffffff166000908152600690935291205532330361327f576007546040805183815233602082015260609181018290526000918101919091526801000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a26132de565b600760089054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823388886040516132d59493929190615214565b60405180910390a25b5050505050565b600a5474010000000000000000000000000000000000000000900460ff16613339576040517f821935b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61334483838361378b565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526133449084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613f53565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261347b9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161339b565b50505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f06fdde03000000000000000000000000000000000000000000000000000000001790529051606091600091829173ffffffffffffffffffffffffffffffffffffffff8616916135039190615254565b600060405180830381855afa9150503d806000811461353e576040519150601f19603f3d011682016040523d82523d6000602084013e613543565b606091505b509150915081613588576040518060400160405280600781526020017f4e4f5f4e414d4500000000000000000000000000000000000000000000000000815250612bab565b612bab8161405f565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f95d89b41000000000000000000000000000000000000000000000000000000001790529051606091600091829173ffffffffffffffffffffffffffffffffffffffff8616916136139190615254565b600060405180830381855afa9150503d806000811461364e576040519150601f19603f3d011682016040523d82523d6000602084013e613653565b606091505b509150915081613588576040518060400160405280600981526020017f4e4f5f53594d424f4c0000000000000000000000000000000000000000000000815250612bab565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce5670000000000000000000000000000000000000000000000000000000017905290516000918291829173ffffffffffffffffffffffffffffffffffffffff8616916137199190615254565b600060405180830381855afa9150503d8060008114613754576040519150601f19603f3d011682016040523d82523d6000602084013e613759565b606091505b509150915081801561376c575080516020145b613777576012612bab565b80806020019051810190612bab9190615266565b60025473ffffffffffffffffffffffffffffffffffffffff1633146137dc576040517f11e7be1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000819003613818576040517fcb591a5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e8811115613854576040517fb59f753a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379e2cf976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156138bc57600080fd5b505af11580156138d0573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ca1e1656040518163ffffffff1660e01b8152600401602060405180830381865afa158015613941573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396591906149bb565b600754600554919250429170010000000000000000000000000000000090910467ffffffffffffffff16908160005b86811015613c965760008a8a838181106139b0576139b0614ab9565b90506020028101906139c29190614eb8565b6139cb90614ef6565b8051805160209091012060408201519192509067ffffffffffffffff1615613bb057856139f781614b36565b965050600081836020015184604001518560600151604051602001613a5a9493929190938452602084019290925260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166040830152604882015260680190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012067ffffffffffffffff8a16600090815260069093529120549091508114613ae3576040517fce3d755e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208381015160408086015160608088015183519586018c90529285018790528481019390935260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166080840152908d901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088830152609c82015260bc01604051602081830303815290604052805190602001209550600660008867ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206000905550613c81565b8151516201d4c01015613bef576040517fa29a6c7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516020810187905290810182905260608082018a905260c089901b7fffffffffffffffff0000000000000000000000000000000000000000000000001660808301528b901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660888201526000609c82015260bc016040516020818303038152906040528051906020012094505b50508080613c8e90614b5d565b915050613994565b5060075467ffffffffffffffff6801000000000000000090910481169084161115613ced576040517fc630a00d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290558567ffffffffffffffff84811690831614613dab576000613d138386614a03565b9050613d2967ffffffffffffffff821683614b95565b9150613d627f00000000000000000000000000000000000000000000000000000000000000008267ffffffffffffffff166110086108b7565b50600780547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff8716021790555b613e3c337f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663477fa2706040518163ffffffff1660e01b8152600401602060405180830381865afa15801561112a573d6000803e3d6000fd5b6040517f9a908e7300000000000000000000000000000000000000000000000000000000815267ffffffffffffffff88166004820152602481018490526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690639a908e73906044016020604051808303816000875af1158015613edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f009190614bbf565b90508067ffffffffffffffff167f3e54d0825ed78523037d00a81759237eb436ce774bd546993ee67a1b67b6e76688604051613f3e91815260200190565b60405180910390a25050505050505050505050565b6000613fb5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661423a9092919063ffffffff16565b8051909150156133445780806020019051810190613fd39190614c48565b613344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161182a565b60606040825110614084578180602001905181019061407e9190615289565b92915050565b81516020036141fc5760005b6020811080156140d757508281815181106140ad576140ad614ab9565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615155b156140ee57806140e681614b5d565b915050614090565b8060000361413157505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e4700000000000000000000000000006020820152919050565b60008167ffffffffffffffff81111561414c5761414c614602565b6040519080825280601f01601f191660200182016040528015614176576020820181803683370190505b50905060005b828110156141f45784818151811061419657614196614ab9565b602001015160f81c60f81b8282815181106141b3576141b3614ab9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806141ec81614b5d565b91505061417c565b509392505050565b505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e470000000000000000000000000000602082015290565b919050565b6060612bab8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161426e9190615254565b60006040518083038185875af1925050503d80600081146142ab576040519150601f19603f3d011682016040523d82523d6000602084013e6142b0565b606091505b50915091506142c1878383876142cc565b979650505050505050565b6060831561436257825160000361435b5773ffffffffffffffffffffffffffffffffffffffff85163b61435b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161182a565b5081612bab565b612bab83838151156143775781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a9190614419565b60005b838110156143c65781810151838201526020016143ae565b50506000910152565b600081518084526143e78160208601602086016143ab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061442c60208301846143cf565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461445557600080fd5b50565b803561423581614433565b60008083601f84011261447557600080fd5b50813567ffffffffffffffff81111561448d57600080fd5b6020830191508360208285010111156144a557600080fd5b9250929050565b6000806000806000606086880312156144c457600080fd5b853567ffffffffffffffff808211156144dc57600080fd5b818801915088601f8301126144f057600080fd5b8135818111156144ff57600080fd5b8960208260071b850101111561451457600080fd5b6020830197508096505061452a60208901614458565b9450604088013591508082111561454057600080fd5b5061454d88828901614463565b969995985093965092949392505050565b67ffffffffffffffff8116811461445557600080fd5b60008060006060848603121561458957600080fd5b83356145948161455e565b92506020840135915060408401356145ab81614433565b809150509250925092565b6000602082840312156145c857600080fd5b813561442c8161455e565b6000602082840312156145e557600080fd5b813561442c81614433565b63ffffffff8116811461445557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561465457614654614602565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156146a1576146a1614602565b604052919050565b600067ffffffffffffffff8211156146c3576146c3614602565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261470057600080fd5b813561471361470e826146a9565b61465a565b81815284602083860101111561472857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561475e57600080fd5b863561476981614433565b9550602087013561477981614433565b94506040870135614789816145f0565b9350606087013561479981614433565b9250608087013567ffffffffffffffff808211156147b657600080fd5b6147c28a838b016146ef565b935060a08901359150808211156147d857600080fd5b506147e589828a016146ef565b9150509295509295509295565b60008083601f84011261480457600080fd5b50813567ffffffffffffffff81111561481c57600080fd5b6020830191508360208260051b85010111156144a557600080fd5b6000806020838503121561484a57600080fd5b823567ffffffffffffffff81111561486157600080fd5b61486d858286016147f2565b90969095509350505050565b6000806000806080858703121561488f57600080fd5b843561489a816145f0565b935060208501356148aa81614433565b925060408501356148ba816145f0565b9150606085013567ffffffffffffffff8111156148d657600080fd5b6148e2878288016146ef565b91505092959194509250565b60006020828403121561490057600080fd5b813567ffffffffffffffff81111561491757600080fd5b612bab848285016146ef565b60008060006040848603121561493857600080fd5b833567ffffffffffffffff81111561494f57600080fd5b61495b86828701614463565b909790965060209590950135949350505050565b60008060006040848603121561498457600080fd5b833567ffffffffffffffff81111561499b57600080fd5b6149a7868287016147f2565b90945092505060208401356145ab81614433565b6000602082840312156149cd57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff828116828216039080821115614a2457614a246149d4565b5092915050565b600082614a61577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600181811c90821680614a7a57607f821691505b602082108103614ab3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060808284031215614afa57600080fd5b614b02614631565b82358152602083013560208201526040830135614b1e8161455e565b60408201526060928301359281019290925250919050565b600067ffffffffffffffff808316818103614b5357614b536149d4565b6001019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b8e57614b8e6149d4565b5060010190565b8181038181111561407e5761407e6149d4565b808202811582820484141761407e5761407e6149d4565b600060208284031215614bd157600080fd5b815161442c8161455e565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b838152604060208201526000614c3f604083018486614bdc565b95945050505050565b600060208284031215614c5a57600080fd5b8151801515811461442c57600080fd5b606081526000614c7d60608301866143cf565b8281036020840152614c8f81866143cf565b91505060ff83166040830152949350505050565b60008060408385031215614cb657600080fd5b8251614cc1816145f0565b6020840151909250614cd281614433565b809150509250929050565b601f82111561334457600081815260208120601f850160051c81016020861015614d045750805b601f850160051c820191505b81811015614d2357828155600101614d10565b505050505050565b815167ffffffffffffffff811115614d4557614d45614602565b614d5981614d538454614a66565b84614cdd565b602080601f831160018114614dac5760008415614d765750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555614d23565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015614df957888601518255948401946001909101908401614dda565b5085821015614e3557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b606081526000614e5860608301866143cf565b905083602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b67ffffffffffffffff818116838216019080821115614a2457614a246149d4565b8082018082111561407e5761407e6149d4565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112614eec57600080fd5b9190910192915050565b600060808236031215614f0857600080fd5b614f10614631565b823567ffffffffffffffff811115614f2757600080fd5b614f33368286016146ef565b825250602083013560208201526040830135614f4e8161455e565b6040820152606092830135928101929092525090565b600063ffffffff808916835273ffffffffffffffffffffffffffffffffffffffff8089166020850152818816604085015280871660608501528086166080850152505060c060a0830152614fbb60c08301846143cf565b98975050505050505050565b61ffff818116838216019080821115614a2457614a246149d4565b60007fff00000000000000000000000000000000000000000000000000000000000000808a60f81b1683527fffff0000000000000000000000000000000000000000000000000000000000008960f01b166001840152875161504b816003860160208c016143ab565b80840190507fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008860601b166003820152865161508e816017840160208b016143ab565b808201915050818660f81b166017820152845191506150b48260188301602088016143ab565b016018019998505050505050505050565b7fff000000000000000000000000000000000000000000000000000000000000008860f81b16815260007fffff000000000000000000000000000000000000000000000000000000000000808960f01b166001840152875161512e816003860160208c016143ab565b80840190507fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008860601b1660038201528651615171816017840160208b016143ab565b808201915050818660f01b166017820152845191506151978260198301602088016143ab565b016019019998505050505050505050565b600086516151ba818460208b016143ab565b9190910194855250602084019290925260f81b7fff000000000000000000000000000000000000000000000000000000000000009081166040840152166041820152604201919050565b8183823760009101908152919050565b84815273ffffffffffffffffffffffffffffffffffffffff8416602082015260606040820152600061524a606083018486614bdc565b9695505050505050565b60008251614eec8184602087016143ab565b60006020828403121561527857600080fd5b815160ff8116811461442c57600080fd5b60006020828403121561529b57600080fd5b815167ffffffffffffffff8111156152b257600080fd5b8201601f810184136152c357600080fd5b80516152d161470e826146a9565b8181528560208385010111156152e657600080fd5b614c3f8260208301602086016143ab56fea26469706673582212202fd80959a1184f22bb4fffd043a1ac00b8eb3aa4ef72c43f73460ecc6e4e644364736f6c63430008140033 \ No newline at end of file diff --git a/etherman/smartcontracts/cdkdatacommittee/cdkdatacommittee.go b/etherman/smartcontracts/cdkdatacommittee/cdkdatacommittee.go deleted file mode 100644 index b46b0f30..00000000 --- a/etherman/smartcontracts/cdkdatacommittee/cdkdatacommittee.go +++ /dev/null @@ -1,906 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package cdkdatacommittee - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// CdkdatacommitteeMetaData contains all meta data concerning the Cdkdatacommittee contract. -var CdkdatacommitteeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"CommitteeAddressDoesntExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyURLNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyRequiredSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedAddrsAndSignaturesSize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedAddrsBytesLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedCommitteeHash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongAddrOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"committeeHash\",\"type\":\"bytes32\"}],\"name\":\"CommitteeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"committeeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAmountOfMembers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"members\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requiredAmountOfSignatures\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmountOfSignatures\",\"type\":\"uint256\"},{\"internalType\":\"string[]\",\"name\":\"urls\",\"type\":\"string[]\"},{\"internalType\":\"bytes\",\"name\":\"addrsBytes\",\"type\":\"bytes\"}],\"name\":\"setupCommittee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"signedHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signaturesAndAddrs\",\"type\":\"bytes\"}],\"name\":\"verifySignatures\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b506115e0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638129fc1c11610076578063c7a823e01161005b578063c7a823e01461015a578063dce1e2b61461016d578063f2fde38b1461017557600080fd5b80638129fc1c1461012a5780638da5cb5b1461013257600080fd5b8063609d4544116100a7578063609d4544146101025780636beedd3914610119578063715018a61461012257600080fd5b8063078fba2a146100c35780635daf08ca146100d8575b600080fd5b6100d66100d1366004610fa9565b610188565b005b6100eb6100e6366004611054565b61048c565b6040516100f992919061106d565b60405180910390f35b61010b60665481565b6040519081526020016100f9565b61010b60655481565b6100d661055e565b6100d6610572565b60335460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f9565b6100d66101683660046110f6565b610709565b60675461010b565b6100d6610183366004611142565b61095c565b610190610a10565b82858110156101cb576040517f2e7dcd6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101d66014826111ae565b821461020e576040517f2ab6a12900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61021a60676000610eb5565b6000805b828110156104305760006102336014836111ae565b905060008682876102456014836111c5565b92610252939291906111d8565b61025b91611202565b60601c90508888848181106102725761027261124a565b90506020028101906102849190611279565b90506000036102bf576040517fb54b70e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610324576040517fd53cfbe000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b809350606760405180604001604052808b8b878181106103465761034661124a565b90506020028101906103589190611279565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505073ffffffffffffffffffffffffffffffffffffffff851660209283015283546001810185559381522081519192600202019081906103cc90826113af565b5060209190910151600190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905550819050610428816114c9565b91505061021e565b508383604051610441929190611501565b6040519081900381206066819055606589905581527f831403fd381b3e6ac875d912ec2eee0e0203d0d29f7b3e0c96fc8f582d6db6579060200160405180910390a150505050505050565b6067818154811061049c57600080fd5b90600052602060002090600202016000915090508060000180546104bf9061130d565b80601f01602080910402602001604051908101604052809291908181526020018280546104eb9061130d565b80156105385780601f1061050d57610100808354040283529160200191610538565b820191906000526020600020905b81548152906001019060200180831161051b57829003601f168201915b5050506001909301549192505073ffffffffffffffffffffffffffffffffffffffff1682565b610566610a10565b6105706000610a91565b565b600054610100900460ff16158080156105925750600054600160ff909116105b806105ac5750303b1580156105ac575060005460ff166001145b61063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561069b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6106a3610b08565b801561070657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6000606554604161071a91906111ae565b90508082108061073e575060146107318284611511565b61073b9190611553565b15155b15610775576040517f6b8eec4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606654610784838381876111d8565b604051610792929190611501565b6040518091039020146107d1576040517f6b156b2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060146107e08486611511565b6107ea9190611567565b905060005b60655481101561095357600061086a88888861080c6041876111ae565b90604161081981896111ae565b61082391906111c5565b92610830939291906111d8565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ba892505050565b90506000845b848110156109065760006108856014836111ae565b61088f90896111c5565b905060008a828b6108a16014836111c5565b926108ae939291906111d8565b6108b791611202565b60601c905073ffffffffffffffffffffffffffffffffffffffff851681036108f1576108e48360016111c5565b9750600193505050610906565b505080806108fe906114c9565b915050610870565b508061093e576040517f8431721300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050808061094b906114c9565b9150506107ef565b50505050505050565b610964610a10565b73ffffffffffffffffffffffffffffffffffffffff8116610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610634565b61070681610a91565b60335473ffffffffffffffffffffffffffffffffffffffff163314610570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610634565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610b9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610634565b61057033610a91565b6000806000610bb78585610bce565b91509150610bc481610c13565b5090505b92915050565b6000808251604103610c045760208301516040840151606085015160001a610bf887828585610dc6565b94509450505050610c0c565b506000905060025b9250929050565b6000816004811115610c2757610c2761157b565b03610c2f5750565b6001816004811115610c4357610c4361157b565b03610caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610634565b6002816004811115610cbe57610cbe61157b565b03610d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610634565b6003816004811115610d3957610d3961157b565b03610706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610634565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610dfd5750600090506003610eac565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610e51573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610ea557600060019250925050610eac565b9150600090505b94509492505050565b508054600082556002029060005260206000209081019061070691905b80821115610f19576000610ee68282610f1d565b506001810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600201610ed2565b5090565b508054610f299061130d565b6000825580601f10610f39575050565b601f01602090049060005260206000209081019061070691905b80821115610f195760008155600101610f53565b60008083601f840112610f7957600080fd5b50813567ffffffffffffffff811115610f9157600080fd5b602083019150836020828501011115610c0c57600080fd5b600080600080600060608688031215610fc157600080fd5b85359450602086013567ffffffffffffffff80821115610fe057600080fd5b818801915088601f830112610ff457600080fd5b81358181111561100357600080fd5b8960208260051b850101111561101857600080fd5b60208301965080955050604088013591508082111561103657600080fd5b5061104388828901610f67565b969995985093965092949392505050565b60006020828403121561106657600080fd5b5035919050565b604081526000835180604084015260005b8181101561109b576020818701810151606086840101520161107e565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60008060006040848603121561110b57600080fd5b83359250602084013567ffffffffffffffff81111561112957600080fd5b61113586828701610f67565b9497909650939450505050565b60006020828403121561115457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461117857600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610bc857610bc861117f565b80820180821115610bc857610bc861117f565b600080858511156111e857600080fd5b838611156111f557600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156112425780818660140360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126112ae57600080fd5b83018035915067ffffffffffffffff8211156112c957600080fd5b602001915036819003821315610c0c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061132157607f821691505b60208210810361135a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156113aa57600081815260208120601f850160051c810160208610156113875750805b601f850160051c820191505b818110156113a657828155600101611393565b5050505b505050565b815167ffffffffffffffff8111156113c9576113c96112de565b6113dd816113d7845461130d565b84611360565b602080601f83116001811461143057600084156113fa5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556113a6565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561147d5788860151825594840194600190910190840161145e565b50858210156114b957878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114fa576114fa61117f565b5060010190565b8183823760009101908152919050565b81810381811115610bc857610bc861117f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261156257611562611524565b500690565b60008261157657611576611524565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220a54a2ecac47f39fb27609b998291b1e8046737fbc346d3fc4d56c25e13d40d7e64736f6c63430008140033", -} - -// CdkdatacommitteeABI is the input ABI used to generate the binding from. -// Deprecated: Use CdkdatacommitteeMetaData.ABI instead. -var CdkdatacommitteeABI = CdkdatacommitteeMetaData.ABI - -// CdkdatacommitteeBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use CdkdatacommitteeMetaData.Bin instead. -var CdkdatacommitteeBin = CdkdatacommitteeMetaData.Bin - -// DeployCdkdatacommittee deploys a new Ethereum contract, binding an instance of Cdkdatacommittee to it. -func DeployCdkdatacommittee(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Cdkdatacommittee, error) { - parsed, err := CdkdatacommitteeMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(CdkdatacommitteeBin), backend) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &Cdkdatacommittee{CdkdatacommitteeCaller: CdkdatacommitteeCaller{contract: contract}, CdkdatacommitteeTransactor: CdkdatacommitteeTransactor{contract: contract}, CdkdatacommitteeFilterer: CdkdatacommitteeFilterer{contract: contract}}, nil -} - -// Cdkdatacommittee is an auto generated Go binding around an Ethereum contract. -type Cdkdatacommittee struct { - CdkdatacommitteeCaller // Read-only binding to the contract - CdkdatacommitteeTransactor // Write-only binding to the contract - CdkdatacommitteeFilterer // Log filterer for contract events -} - -// CdkdatacommitteeCaller is an auto generated read-only Go binding around an Ethereum contract. -type CdkdatacommitteeCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// CdkdatacommitteeTransactor is an auto generated write-only Go binding around an Ethereum contract. -type CdkdatacommitteeTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// CdkdatacommitteeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type CdkdatacommitteeFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// CdkdatacommitteeSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type CdkdatacommitteeSession struct { - Contract *Cdkdatacommittee // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// CdkdatacommitteeCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type CdkdatacommitteeCallerSession struct { - Contract *CdkdatacommitteeCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// CdkdatacommitteeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type CdkdatacommitteeTransactorSession struct { - Contract *CdkdatacommitteeTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// CdkdatacommitteeRaw is an auto generated low-level Go binding around an Ethereum contract. -type CdkdatacommitteeRaw struct { - Contract *Cdkdatacommittee // Generic contract binding to access the raw methods on -} - -// CdkdatacommitteeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type CdkdatacommitteeCallerRaw struct { - Contract *CdkdatacommitteeCaller // Generic read-only contract binding to access the raw methods on -} - -// CdkdatacommitteeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type CdkdatacommitteeTransactorRaw struct { - Contract *CdkdatacommitteeTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewCdkdatacommittee creates a new instance of Cdkdatacommittee, bound to a specific deployed contract. -func NewCdkdatacommittee(address common.Address, backend bind.ContractBackend) (*Cdkdatacommittee, error) { - contract, err := bindCdkdatacommittee(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Cdkdatacommittee{CdkdatacommitteeCaller: CdkdatacommitteeCaller{contract: contract}, CdkdatacommitteeTransactor: CdkdatacommitteeTransactor{contract: contract}, CdkdatacommitteeFilterer: CdkdatacommitteeFilterer{contract: contract}}, nil -} - -// NewCdkdatacommitteeCaller creates a new read-only instance of Cdkdatacommittee, bound to a specific deployed contract. -func NewCdkdatacommitteeCaller(address common.Address, caller bind.ContractCaller) (*CdkdatacommitteeCaller, error) { - contract, err := bindCdkdatacommittee(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &CdkdatacommitteeCaller{contract: contract}, nil -} - -// NewCdkdatacommitteeTransactor creates a new write-only instance of Cdkdatacommittee, bound to a specific deployed contract. -func NewCdkdatacommitteeTransactor(address common.Address, transactor bind.ContractTransactor) (*CdkdatacommitteeTransactor, error) { - contract, err := bindCdkdatacommittee(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &CdkdatacommitteeTransactor{contract: contract}, nil -} - -// NewCdkdatacommitteeFilterer creates a new log filterer instance of Cdkdatacommittee, bound to a specific deployed contract. -func NewCdkdatacommitteeFilterer(address common.Address, filterer bind.ContractFilterer) (*CdkdatacommitteeFilterer, error) { - contract, err := bindCdkdatacommittee(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &CdkdatacommitteeFilterer{contract: contract}, nil -} - -// bindCdkdatacommittee binds a generic wrapper to an already deployed contract. -func bindCdkdatacommittee(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := CdkdatacommitteeMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Cdkdatacommittee *CdkdatacommitteeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Cdkdatacommittee.Contract.CdkdatacommitteeCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Cdkdatacommittee *CdkdatacommitteeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Cdkdatacommittee.Contract.CdkdatacommitteeTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Cdkdatacommittee *CdkdatacommitteeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Cdkdatacommittee.Contract.CdkdatacommitteeTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Cdkdatacommittee *CdkdatacommitteeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Cdkdatacommittee.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Cdkdatacommittee *CdkdatacommitteeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Cdkdatacommittee.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Cdkdatacommittee *CdkdatacommitteeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Cdkdatacommittee.Contract.contract.Transact(opts, method, params...) -} - -// CommitteeHash is a free data retrieval call binding the contract method 0x609d4544. -// -// Solidity: function committeeHash() view returns(bytes32) -func (_Cdkdatacommittee *CdkdatacommitteeCaller) CommitteeHash(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _Cdkdatacommittee.contract.Call(opts, &out, "committeeHash") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// CommitteeHash is a free data retrieval call binding the contract method 0x609d4544. -// -// Solidity: function committeeHash() view returns(bytes32) -func (_Cdkdatacommittee *CdkdatacommitteeSession) CommitteeHash() ([32]byte, error) { - return _Cdkdatacommittee.Contract.CommitteeHash(&_Cdkdatacommittee.CallOpts) -} - -// CommitteeHash is a free data retrieval call binding the contract method 0x609d4544. -// -// Solidity: function committeeHash() view returns(bytes32) -func (_Cdkdatacommittee *CdkdatacommitteeCallerSession) CommitteeHash() ([32]byte, error) { - return _Cdkdatacommittee.Contract.CommitteeHash(&_Cdkdatacommittee.CallOpts) -} - -// GetAmountOfMembers is a free data retrieval call binding the contract method 0xdce1e2b6. -// -// Solidity: function getAmountOfMembers() view returns(uint256) -func (_Cdkdatacommittee *CdkdatacommitteeCaller) GetAmountOfMembers(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Cdkdatacommittee.contract.Call(opts, &out, "getAmountOfMembers") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetAmountOfMembers is a free data retrieval call binding the contract method 0xdce1e2b6. -// -// Solidity: function getAmountOfMembers() view returns(uint256) -func (_Cdkdatacommittee *CdkdatacommitteeSession) GetAmountOfMembers() (*big.Int, error) { - return _Cdkdatacommittee.Contract.GetAmountOfMembers(&_Cdkdatacommittee.CallOpts) -} - -// GetAmountOfMembers is a free data retrieval call binding the contract method 0xdce1e2b6. -// -// Solidity: function getAmountOfMembers() view returns(uint256) -func (_Cdkdatacommittee *CdkdatacommitteeCallerSession) GetAmountOfMembers() (*big.Int, error) { - return _Cdkdatacommittee.Contract.GetAmountOfMembers(&_Cdkdatacommittee.CallOpts) -} - -// Members is a free data retrieval call binding the contract method 0x5daf08ca. -// -// Solidity: function members(uint256 ) view returns(string url, address addr) -func (_Cdkdatacommittee *CdkdatacommitteeCaller) Members(opts *bind.CallOpts, arg0 *big.Int) (struct { - Url string - Addr common.Address -}, error) { - var out []interface{} - err := _Cdkdatacommittee.contract.Call(opts, &out, "members", arg0) - - outstruct := new(struct { - Url string - Addr common.Address - }) - if err != nil { - return *outstruct, err - } - - outstruct.Url = *abi.ConvertType(out[0], new(string)).(*string) - outstruct.Addr = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) - - return *outstruct, err - -} - -// Members is a free data retrieval call binding the contract method 0x5daf08ca. -// -// Solidity: function members(uint256 ) view returns(string url, address addr) -func (_Cdkdatacommittee *CdkdatacommitteeSession) Members(arg0 *big.Int) (struct { - Url string - Addr common.Address -}, error) { - return _Cdkdatacommittee.Contract.Members(&_Cdkdatacommittee.CallOpts, arg0) -} - -// Members is a free data retrieval call binding the contract method 0x5daf08ca. -// -// Solidity: function members(uint256 ) view returns(string url, address addr) -func (_Cdkdatacommittee *CdkdatacommitteeCallerSession) Members(arg0 *big.Int) (struct { - Url string - Addr common.Address -}, error) { - return _Cdkdatacommittee.Contract.Members(&_Cdkdatacommittee.CallOpts, arg0) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Cdkdatacommittee *CdkdatacommitteeCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Cdkdatacommittee.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Cdkdatacommittee *CdkdatacommitteeSession) Owner() (common.Address, error) { - return _Cdkdatacommittee.Contract.Owner(&_Cdkdatacommittee.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Cdkdatacommittee *CdkdatacommitteeCallerSession) Owner() (common.Address, error) { - return _Cdkdatacommittee.Contract.Owner(&_Cdkdatacommittee.CallOpts) -} - -// RequiredAmountOfSignatures is a free data retrieval call binding the contract method 0x6beedd39. -// -// Solidity: function requiredAmountOfSignatures() view returns(uint256) -func (_Cdkdatacommittee *CdkdatacommitteeCaller) RequiredAmountOfSignatures(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Cdkdatacommittee.contract.Call(opts, &out, "requiredAmountOfSignatures") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// RequiredAmountOfSignatures is a free data retrieval call binding the contract method 0x6beedd39. -// -// Solidity: function requiredAmountOfSignatures() view returns(uint256) -func (_Cdkdatacommittee *CdkdatacommitteeSession) RequiredAmountOfSignatures() (*big.Int, error) { - return _Cdkdatacommittee.Contract.RequiredAmountOfSignatures(&_Cdkdatacommittee.CallOpts) -} - -// RequiredAmountOfSignatures is a free data retrieval call binding the contract method 0x6beedd39. -// -// Solidity: function requiredAmountOfSignatures() view returns(uint256) -func (_Cdkdatacommittee *CdkdatacommitteeCallerSession) RequiredAmountOfSignatures() (*big.Int, error) { - return _Cdkdatacommittee.Contract.RequiredAmountOfSignatures(&_Cdkdatacommittee.CallOpts) -} - -// VerifySignatures is a free data retrieval call binding the contract method 0xc7a823e0. -// -// Solidity: function verifySignatures(bytes32 signedHash, bytes signaturesAndAddrs) view returns() -func (_Cdkdatacommittee *CdkdatacommitteeCaller) VerifySignatures(opts *bind.CallOpts, signedHash [32]byte, signaturesAndAddrs []byte) error { - var out []interface{} - err := _Cdkdatacommittee.contract.Call(opts, &out, "verifySignatures", signedHash, signaturesAndAddrs) - - if err != nil { - return err - } - - return err - -} - -// VerifySignatures is a free data retrieval call binding the contract method 0xc7a823e0. -// -// Solidity: function verifySignatures(bytes32 signedHash, bytes signaturesAndAddrs) view returns() -func (_Cdkdatacommittee *CdkdatacommitteeSession) VerifySignatures(signedHash [32]byte, signaturesAndAddrs []byte) error { - return _Cdkdatacommittee.Contract.VerifySignatures(&_Cdkdatacommittee.CallOpts, signedHash, signaturesAndAddrs) -} - -// VerifySignatures is a free data retrieval call binding the contract method 0xc7a823e0. -// -// Solidity: function verifySignatures(bytes32 signedHash, bytes signaturesAndAddrs) view returns() -func (_Cdkdatacommittee *CdkdatacommitteeCallerSession) VerifySignatures(signedHash [32]byte, signaturesAndAddrs []byte) error { - return _Cdkdatacommittee.Contract.VerifySignatures(&_Cdkdatacommittee.CallOpts, signedHash, signaturesAndAddrs) -} - -// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. -// -// Solidity: function initialize() returns() -func (_Cdkdatacommittee *CdkdatacommitteeTransactor) Initialize(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Cdkdatacommittee.contract.Transact(opts, "initialize") -} - -// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. -// -// Solidity: function initialize() returns() -func (_Cdkdatacommittee *CdkdatacommitteeSession) Initialize() (*types.Transaction, error) { - return _Cdkdatacommittee.Contract.Initialize(&_Cdkdatacommittee.TransactOpts) -} - -// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. -// -// Solidity: function initialize() returns() -func (_Cdkdatacommittee *CdkdatacommitteeTransactorSession) Initialize() (*types.Transaction, error) { - return _Cdkdatacommittee.Contract.Initialize(&_Cdkdatacommittee.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Cdkdatacommittee *CdkdatacommitteeTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Cdkdatacommittee.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Cdkdatacommittee *CdkdatacommitteeSession) RenounceOwnership() (*types.Transaction, error) { - return _Cdkdatacommittee.Contract.RenounceOwnership(&_Cdkdatacommittee.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Cdkdatacommittee *CdkdatacommitteeTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _Cdkdatacommittee.Contract.RenounceOwnership(&_Cdkdatacommittee.TransactOpts) -} - -// SetupCommittee is a paid mutator transaction binding the contract method 0x078fba2a. -// -// Solidity: function setupCommittee(uint256 _requiredAmountOfSignatures, string[] urls, bytes addrsBytes) returns() -func (_Cdkdatacommittee *CdkdatacommitteeTransactor) SetupCommittee(opts *bind.TransactOpts, _requiredAmountOfSignatures *big.Int, urls []string, addrsBytes []byte) (*types.Transaction, error) { - return _Cdkdatacommittee.contract.Transact(opts, "setupCommittee", _requiredAmountOfSignatures, urls, addrsBytes) -} - -// SetupCommittee is a paid mutator transaction binding the contract method 0x078fba2a. -// -// Solidity: function setupCommittee(uint256 _requiredAmountOfSignatures, string[] urls, bytes addrsBytes) returns() -func (_Cdkdatacommittee *CdkdatacommitteeSession) SetupCommittee(_requiredAmountOfSignatures *big.Int, urls []string, addrsBytes []byte) (*types.Transaction, error) { - return _Cdkdatacommittee.Contract.SetupCommittee(&_Cdkdatacommittee.TransactOpts, _requiredAmountOfSignatures, urls, addrsBytes) -} - -// SetupCommittee is a paid mutator transaction binding the contract method 0x078fba2a. -// -// Solidity: function setupCommittee(uint256 _requiredAmountOfSignatures, string[] urls, bytes addrsBytes) returns() -func (_Cdkdatacommittee *CdkdatacommitteeTransactorSession) SetupCommittee(_requiredAmountOfSignatures *big.Int, urls []string, addrsBytes []byte) (*types.Transaction, error) { - return _Cdkdatacommittee.Contract.SetupCommittee(&_Cdkdatacommittee.TransactOpts, _requiredAmountOfSignatures, urls, addrsBytes) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Cdkdatacommittee *CdkdatacommitteeTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _Cdkdatacommittee.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Cdkdatacommittee *CdkdatacommitteeSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Cdkdatacommittee.Contract.TransferOwnership(&_Cdkdatacommittee.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Cdkdatacommittee *CdkdatacommitteeTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Cdkdatacommittee.Contract.TransferOwnership(&_Cdkdatacommittee.TransactOpts, newOwner) -} - -// CdkdatacommitteeCommitteeUpdatedIterator is returned from FilterCommitteeUpdated and is used to iterate over the raw logs and unpacked data for CommitteeUpdated events raised by the Cdkdatacommittee contract. -type CdkdatacommitteeCommitteeUpdatedIterator struct { - Event *CdkdatacommitteeCommitteeUpdated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkdatacommitteeCommitteeUpdatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkdatacommitteeCommitteeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkdatacommitteeCommitteeUpdated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkdatacommitteeCommitteeUpdatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkdatacommitteeCommitteeUpdatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkdatacommitteeCommitteeUpdated represents a CommitteeUpdated event raised by the Cdkdatacommittee contract. -type CdkdatacommitteeCommitteeUpdated struct { - CommitteeHash [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterCommitteeUpdated is a free log retrieval operation binding the contract event 0x831403fd381b3e6ac875d912ec2eee0e0203d0d29f7b3e0c96fc8f582d6db657. -// -// Solidity: event CommitteeUpdated(bytes32 committeeHash) -func (_Cdkdatacommittee *CdkdatacommitteeFilterer) FilterCommitteeUpdated(opts *bind.FilterOpts) (*CdkdatacommitteeCommitteeUpdatedIterator, error) { - - logs, sub, err := _Cdkdatacommittee.contract.FilterLogs(opts, "CommitteeUpdated") - if err != nil { - return nil, err - } - return &CdkdatacommitteeCommitteeUpdatedIterator{contract: _Cdkdatacommittee.contract, event: "CommitteeUpdated", logs: logs, sub: sub}, nil -} - -// WatchCommitteeUpdated is a free log subscription operation binding the contract event 0x831403fd381b3e6ac875d912ec2eee0e0203d0d29f7b3e0c96fc8f582d6db657. -// -// Solidity: event CommitteeUpdated(bytes32 committeeHash) -func (_Cdkdatacommittee *CdkdatacommitteeFilterer) WatchCommitteeUpdated(opts *bind.WatchOpts, sink chan<- *CdkdatacommitteeCommitteeUpdated) (event.Subscription, error) { - - logs, sub, err := _Cdkdatacommittee.contract.WatchLogs(opts, "CommitteeUpdated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkdatacommitteeCommitteeUpdated) - if err := _Cdkdatacommittee.contract.UnpackLog(event, "CommitteeUpdated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseCommitteeUpdated is a log parse operation binding the contract event 0x831403fd381b3e6ac875d912ec2eee0e0203d0d29f7b3e0c96fc8f582d6db657. -// -// Solidity: event CommitteeUpdated(bytes32 committeeHash) -func (_Cdkdatacommittee *CdkdatacommitteeFilterer) ParseCommitteeUpdated(log types.Log) (*CdkdatacommitteeCommitteeUpdated, error) { - event := new(CdkdatacommitteeCommitteeUpdated) - if err := _Cdkdatacommittee.contract.UnpackLog(event, "CommitteeUpdated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkdatacommitteeInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Cdkdatacommittee contract. -type CdkdatacommitteeInitializedIterator struct { - Event *CdkdatacommitteeInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkdatacommitteeInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkdatacommitteeInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkdatacommitteeInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkdatacommitteeInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkdatacommitteeInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkdatacommitteeInitialized represents a Initialized event raised by the Cdkdatacommittee contract. -type CdkdatacommitteeInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Cdkdatacommittee *CdkdatacommitteeFilterer) FilterInitialized(opts *bind.FilterOpts) (*CdkdatacommitteeInitializedIterator, error) { - - logs, sub, err := _Cdkdatacommittee.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &CdkdatacommitteeInitializedIterator{contract: _Cdkdatacommittee.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Cdkdatacommittee *CdkdatacommitteeFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *CdkdatacommitteeInitialized) (event.Subscription, error) { - - logs, sub, err := _Cdkdatacommittee.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkdatacommitteeInitialized) - if err := _Cdkdatacommittee.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Cdkdatacommittee *CdkdatacommitteeFilterer) ParseInitialized(log types.Log) (*CdkdatacommitteeInitialized, error) { - event := new(CdkdatacommitteeInitialized) - if err := _Cdkdatacommittee.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkdatacommitteeOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Cdkdatacommittee contract. -type CdkdatacommitteeOwnershipTransferredIterator struct { - Event *CdkdatacommitteeOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkdatacommitteeOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkdatacommitteeOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkdatacommitteeOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkdatacommitteeOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkdatacommitteeOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkdatacommitteeOwnershipTransferred represents a OwnershipTransferred event raised by the Cdkdatacommittee contract. -type CdkdatacommitteeOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Cdkdatacommittee *CdkdatacommitteeFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*CdkdatacommitteeOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Cdkdatacommittee.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &CdkdatacommitteeOwnershipTransferredIterator{contract: _Cdkdatacommittee.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Cdkdatacommittee *CdkdatacommitteeFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *CdkdatacommitteeOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Cdkdatacommittee.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkdatacommitteeOwnershipTransferred) - if err := _Cdkdatacommittee.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Cdkdatacommittee *CdkdatacommitteeFilterer) ParseOwnershipTransferred(log types.Log) (*CdkdatacommitteeOwnershipTransferred, error) { - event := new(CdkdatacommitteeOwnershipTransferred) - if err := _Cdkdatacommittee.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/etherman/smartcontracts/cdkvalidium/cdkvalidium.go b/etherman/smartcontracts/cdkvalidium/cdkvalidium.go deleted file mode 100644 index 155233ba..00000000 --- a/etherman/smartcontracts/cdkvalidium/cdkvalidium.go +++ /dev/null @@ -1,5339 +0,0 @@ -// Code generated - DO NOT EDIT. -// This file is a generated binding and any manual changes will be lost. - -package cdkvalidium - -import ( - "errors" - "math/big" - "strings" - - ethereum "github.com/ethereum/go-ethereum" - "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/event" -) - -// Reference imports to suppress errors if they are not otherwise used. -var ( - _ = errors.New - _ = big.NewInt - _ = strings.NewReader - _ = ethereum.NotFound - _ = bind.Bind - _ = common.Big1 - _ = types.BloomLookup - _ = event.NewSubscription - _ = abi.ConvertType -) - -// CDKValidiumBatchData is an auto generated low-level Go binding around an user-defined struct. -type CDKValidiumBatchData struct { - TransactionsHash [32]byte - GlobalExitRoot [32]byte - Timestamp uint64 - MinForcedTimestamp uint64 -} - -// CDKValidiumForcedBatchData is an auto generated low-level Go binding around an user-defined struct. -type CDKValidiumForcedBatchData struct { - Transactions []byte - GlobalExitRoot [32]byte - MinForcedTimestamp uint64 -} - -// CDKValidiumInitializePackedParameters is an auto generated low-level Go binding around an user-defined struct. -type CDKValidiumInitializePackedParameters struct { - Admin common.Address - TrustedSequencer common.Address - PendingStateTimeout uint64 - TrustedAggregator common.Address - TrustedAggregatorTimeout uint64 -} - -// CdkvalidiumMetaData contains all meta data concerning the Cdkvalidium contract. -var CdkvalidiumMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRoot\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"_matic\",\"type\":\"address\"},{\"internalType\":\"contractIVerifierRollup\",\"name\":\"_rollupVerifier\",\"type\":\"address\"},{\"internalType\":\"contractIPolygonZkEVMBridge\",\"name\":\"_bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"contractICDKDataCommittee\",\"name\":\"_dataCommitteeAddress\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_chainID\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_forkID\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BatchAlreadyVerified\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchNotSequencedOrNotSequenceEnd\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedMaxVerifyBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchBelowLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalPendingStateNumInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesAlreadyActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForcedDataDoesNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GlobalExitRootNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HaltTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchAboveLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeBatchTimeTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeForceBatchTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeMultiplierBatchFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPendingStateTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewStateRootNotInsidePrime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewTrustedAggregatorTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughMaticAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldStateRootDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyNotEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPendingAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedAggregator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedSequencer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateNotConsolidable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequenceZeroBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampBelowForcedTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StoredRootMustBeDifferentThanNewRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransactionsLengthAboveMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutNotExpired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AcceptAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"ActivateForceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"ConsolidatePendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"forceBatchNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"}],\"name\":\"ForceBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"OverridePendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"storedStateRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"provedStateRoot\",\"type\":\"bytes32\"}],\"name\":\"ProveNonDeterministicPendingState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceForceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"SetForceBatchTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"newMultiplierBatchFee\",\"type\":\"uint16\"}],\"name\":\"SetMultiplierBatchFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newPendingStateTimeout\",\"type\":\"uint64\"}],\"name\":\"SetPendingStateTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedAggregator\",\"type\":\"address\"}],\"name\":\"SetTrustedAggregator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newTrustedAggregatorTimeout\",\"type\":\"uint64\"}],\"name\":\"SetTrustedAggregatorTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"SetTrustedSequencer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"SetTrustedSequencerURL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newVerifyBatchTimeTarget\",\"type\":\"uint64\"}],\"name\":\"SetVerifyBatchTimeTarget\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"TransferAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"forkID\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"name\":\"UpdateZkEVMVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatchesTrustedAggregator\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sequencedBatchNum\",\"type\":\"uint64\"}],\"name\":\"activateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activateForceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"batchNumToStateRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeAddress\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"calculateRewardPerBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainID\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newStateRoot\",\"type\":\"uint256\"}],\"name\":\"checkStateRootInsidePrime\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"consolidatePendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dataCommitteeAddress\",\"outputs\":[{\"internalType\":\"contractICDKDataCommittee\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deactivateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"maticAmount\",\"type\":\"uint256\"}],\"name\":\"forceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"forcedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forkID\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getForcedBatchFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"oldStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"}],\"name\":\"getInputSnarkBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastVerifiedBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRoot\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedSequencer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"pendingStateTimeout\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"trustedAggregator\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"trustedAggregatorTimeout\",\"type\":\"uint64\"}],\"internalType\":\"structCDKValidium.InitializePackedParameters\",\"name\":\"initializePackedParameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"genesisRoot\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"_trustedSequencerURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_networkName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_version\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isEmergencyState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isForcedBatchDisallowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"}],\"name\":\"isPendingStateConsolidable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPendingState\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPendingStateConsolidated\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastVerifiedBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"matic\",\"outputs\":[{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"multiplierBatchFee\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"overridePendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingStateTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pendingStateTransitions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"exitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"initPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalPendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"proveNonDeterministicPendingState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupVerifier\",\"outputs\":[{\"internalType\":\"contractIVerifierRollup\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"transactionsHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"globalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"minForcedTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"structCDKValidium.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"l2Coinbase\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signaturesAndAddrs\",\"type\":\"bytes\"}],\"name\":\"sequenceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"globalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"minForcedTimestamp\",\"type\":\"uint64\"}],\"internalType\":\"structCDKValidium.ForcedBatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"}],\"name\":\"sequenceForceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"sequencedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"accInputHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sequencedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"previousLastBatchSequenced\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"setForceBatchTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newMultiplierBatchFee\",\"type\":\"uint16\"}],\"name\":\"setMultiplierBatchFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newPendingStateTimeout\",\"type\":\"uint64\"}],\"name\":\"setPendingStateTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedAggregator\",\"type\":\"address\"}],\"name\":\"setTrustedAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newTrustedAggregatorTimeout\",\"type\":\"uint64\"}],\"name\":\"setTrustedAggregatorTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"setTrustedSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"setTrustedSequencerURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newVerifyBatchTimeTarget\",\"type\":\"uint64\"}],\"name\":\"setVerifyBatchTimeTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"transferAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedAggregator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedAggregatorTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencerURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"verifyBatchTimeTarget\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"verifyBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"pendingStateNum\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"initNumBatch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalNewBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newLocalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[24]\",\"name\":\"proof\",\"type\":\"bytes32[24]\"}],\"name\":\"verifyBatchesTrustedAggregator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6101606040523480156200001257600080fd5b5060405162006185380380620061858339810160408190526200003591620000ac565b6001600160a01b0396871660c05294861660805292851660a05290841660e052909216610100526001600160401b039182166101205216610140526200014f565b6001600160a01b03811681146200008c57600080fd5b50565b80516001600160401b0381168114620000a757600080fd5b919050565b600080600080600080600060e0888a031215620000c857600080fd5b8751620000d58162000076565b6020890151909750620000e88162000076565b6040890151909650620000fb8162000076565b60608901519095506200010e8162000076565b6080890151909450620001218162000076565b92506200013160a089016200008f565b91506200014160c089016200008f565b905092959891949750929550565b60805160a05160c05160e051610100516101205161014051615f566200022f600039600081816106c801528181610e1e015261321b0152600081816108350152610df40152600081816105d301526119a00152600081816107fb01528181611bf0015281816138b40152614d300152600081816109a101528181610f91015281816111620152818161177b0152818161220f01528181613a9c015261498d015260008181610a4e0152818161415901526145b10152600081816108f101528181611bbe0152818161270001528181613a7001526142470152615f566000f3fe608060405234801561001057600080fd5b50600436106103c55760003560e01c8063837a4738116101ff578063c754c7ed1161011a578063e7a7ed02116100ad578063f14916d61161007c578063f14916d614610ab0578063f2fde38b14610ac3578063f851a44014610ad6578063f8b823e414610af657600080fd5b8063e7a7ed0214610a19578063e8bf92ed14610a49578063eaeb077b14610a70578063ed6b010414610a8357600080fd5b8063d2e129f9116100e9578063d2e129f9146109c3578063d8d1091b146109d6578063d939b315146109e9578063dbc1697614610a1157600080fd5b8063c754c7ed1461092e578063c89e42df1461095a578063cfa8ed471461096d578063d02103ca1461099c57600080fd5b8063a3c573eb11610192578063b4d63f5811610161578063b4d63f5814610885578063b6b0b097146108ec578063ba58ae3914610913578063c0ed84e01461092657600080fd5b8063a3c573eb146107f6578063ada8f9191461081d578063adc879e914610830578063afd23cbe1461085757600080fd5b806399f5634e116101ce57806399f5634e146107b55780639aa972a3146107bd5780639c9f3dfe146107d0578063a066215c146107e357600080fd5b8063837a4738146106ea578063841b24d71461075f5780638c3d73011461078f5780638da5cb5b1461079757600080fd5b8063458c0477116102ef5780636046916911610282578063715018a611610251578063715018a6146106945780637215541a1461069c5780637fcb3653146106af578063831c7ead146106c357600080fd5b80636046916914610646578063621dd4111461064e5780636b8616ce146106615780636ff512cc1461068157600080fd5b80634e487706116102be5780634e487706146105f55780635392c5e014610608578063542028d5146106365780635ec919581461063e57600080fd5b8063458c0477146105875780634a1a89a71461059b5780634a910e6a146105bb5780634df61d24146105ce57600080fd5b80632987898311610367578063394218e911610336578063394218e914610519578063423fa8561461052c578063438a53991461054c578063456052671461055f57600080fd5b806329878983146104b45780632b0006fa146104e05780632c1f816a146104f3578063383b3be81461050657600080fd5b80631816b7e5116103a35780631816b7e51461043357806319d8ac6114610448578063220d78991461045c578063267822471461046f57600080fd5b80630a0d9fbe146103ca578063107bf28c1461040157806315064c9614610416575b600080fd5b606f546103e390610100900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b610409610aff565b6040516103f8919061535c565b606f546104239060ff1681565b60405190151581526020016103f8565b610446610441366004615376565b610b8d565b005b6073546103e39067ffffffffffffffff1681565b61040961046a3660046153b2565b610ca5565b607b5461048f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103f8565b60745461048f9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6104466104ee366004615417565b610e7c565b61044661050136600461547f565b61104c565b6104236105143660046154f9565b61125a565b6104466105273660046154f9565b6112b0565b6073546103e39068010000000000000000900467ffffffffffffffff1681565b61044661055a366004615581565b611434565b6073546103e390700100000000000000000000000000000000900467ffffffffffffffff1681565b6079546103e39067ffffffffffffffff1681565b6079546103e39068010000000000000000900467ffffffffffffffff1681565b6104466105c93660046154f9565b611cb1565b61048f7f000000000000000000000000000000000000000000000000000000000000000081565b6104466106033660046154f9565b611d64565b6106286106163660046154f9565b60756020526000908152604090205481565b6040519081526020016103f8565b610409611ee8565b610446611ef5565b610628611ff5565b61044661065c366004615417565b61200b565b61062861066f3660046154f9565b60716020526000908152604090205481565b61044661068f366004615633565b612393565b610446612468565b6104466106aa3660046154f9565b61247c565b6074546103e39067ffffffffffffffff1681565b6103e37f000000000000000000000000000000000000000000000000000000000000000081565b6107336106f836600461564e565b60786020526000908152604090208054600182015460029092015467ffffffffffffffff808316936801000000000000000090930416919084565b6040805167ffffffffffffffff95861681529490931660208501529183015260608201526080016103f8565b6079546103e3907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b6104466125ec565b60335473ffffffffffffffffffffffffffffffffffffffff1661048f565b6106286126b8565b6104466107cb36600461547f565b612811565b6104466107de3660046154f9565b6128c2565b6104466107f13660046154f9565b612a3e565b61048f7f000000000000000000000000000000000000000000000000000000000000000081565b61044661082b366004615633565b612b44565b6103e37f000000000000000000000000000000000000000000000000000000000000000081565b606f54610872906901000000000000000000900461ffff1681565b60405161ffff90911681526020016103f8565b6108c66108933660046154f9565b6072602052600090815260409020805460019091015467ffffffffffffffff808216916801000000000000000090041683565b6040805193845267ffffffffffffffff92831660208501529116908201526060016103f8565b61048f7f000000000000000000000000000000000000000000000000000000000000000081565b61042361092136600461564e565b612c08565b6103e3612c92565b607b546103e39074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b61044661096836600461574a565b612ce7565b606f5461048f906b010000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b61048f7f000000000000000000000000000000000000000000000000000000000000000081565b6104466109d136600461577f565b612d74565b6104466109e4366004615832565b6132bf565b6079546103e390700100000000000000000000000000000000900467ffffffffffffffff1681565b610446613861565b6073546103e3907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b61048f7f000000000000000000000000000000000000000000000000000000000000000081565b610446610a7e3660046158a7565b61393a565b607b54610423907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b610446610abe366004615633565b613d30565b610446610ad1366004615633565b613e02565b607a5461048f9073ffffffffffffffffffffffffffffffffffffffff1681565b61062860705481565b60778054610b0c906158f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b38906158f3565b8015610b855780601f10610b5a57610100808354040283529160200191610b85565b820191906000526020600020905b815481529060010190602001808311610b6857829003601f168201915b505050505081565b607a5473ffffffffffffffffffffffffffffffffffffffff163314610bde576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e88161ffff161080610bf757506103ff8161ffff16115b15610c2e576040517f4c2533c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f80547fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff16690100000000000000000061ffff8416908102919091179091556040519081527f7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5906020015b60405180910390a150565b67ffffffffffffffff8086166000818152607260205260408082205493881682529020546060929115801590610cd9575081155b15610d10576040517f6818c29e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610d47576040517f66385b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d5084612c08565b610d86576040517f176b913c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481019690965260548601929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c098891b811660748701527f0000000000000000000000000000000000000000000000000000000000000000891b8116607c8701527f0000000000000000000000000000000000000000000000000000000000000000891b81166084870152608c86019490945260ac85015260cc840194909452509290931b90911660ec830152805180830360d401815260f4909201905290565b60745468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610ed9576040517fbbcbbc0500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ee7868686868686613eb6565b607480547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff86811691821790925560009081526075602052604090208390556079541615610f6257607980547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690555b6040517f33d6247d000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906333d6247d90602401600060405180830381600087803b158015610fea57600080fd5b505af1158015610ffe573d6000803e3d6000fd5b505060405184815233925067ffffffffffffffff871691507fcb339b570a7f0b25afa7333371ff11192092a0aeace12b671f4c212f2815c6fe906020015b60405180910390a3505050505050565b60745468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517fbbcbbc0500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110b88787878787878761427a565b607480547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8681169182179092556000908152607560205260409020839055607954161561113357607980547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690555b6040517f33d6247d000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906333d6247d90602401600060405180830381600087803b1580156111bb57600080fd5b505af11580156111cf573d6000803e3d6000fd5b50506079805477ffffffffffffffffffffffffffffffffffffffffffffffff167a093a800000000000000000000000000000000000000000000000001790555050604051828152339067ffffffffffffffff8616907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a350505050505050565b60795467ffffffffffffffff8281166000908152607860205260408120549092429261129e9270010000000000000000000000000000000090920481169116615975565b67ffffffffffffffff16111592915050565b607a5473ffffffffffffffffffffffffffffffffffffffff163314611301576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a8067ffffffffffffffff82161115611348576040517f1d06e87900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f5460ff166113b75760795467ffffffffffffffff78010000000000000000000000000000000000000000000000009091048116908216106113b7576040517f401636df00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6079805477ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff8416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a190602001610c9a565b606f5460ff1615611471576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f546b010000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146114d1576040517f11e7be1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600081900361150d576040517fcb591a5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e8811115611549576040517fb59f753a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60735467ffffffffffffffff6801000000000000000082048116600081815260726020526040812054838516949293700100000000000000000000000000000000909304909216919082905b868110156119625760008c8c838181106115b1576115b161599d565b9050608002018036038101906115c791906159cc565b606081015190915067ffffffffffffffff161561173857846115e881615a3d565b955050600081600001518260200151836060015160405160200161164493929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012067ffffffffffffffff89166000908152607190935291205490915081146116cd576040517fce3d755e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8087166000908152607160205260408082209190915560608401519084015190821691161015611732576040517f7f7ab87200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50611836565b6020810151158015906117ff575060208101516040517f257b363200000000000000000000000000000000000000000000000000000000815260048101919091527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063257b3632906024016020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fd9190615a64565b155b15611836576040517f73bd668d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8667ffffffffffffffff16816040015167ffffffffffffffff161080611869575042816040015167ffffffffffffffff16115b156118a0576040517fea82791600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838160000151826020015183604001518e60405160200161192f9594939291909485526020850193909352604084019190915260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166060808401919091521b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166068820152607c0190565b6040516020818303038152906040528051906020012093508060400151965050808061195a90615a7d565b915050611595565b506040517fc7a823e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063c7a823e0906119d99085908c908c90600401615afe565b60006040518083038186803b1580156119f157600080fd5b505afa158015611a05573d6000803e3d6000fd5b505050508584611a159190615975565b60735490945067ffffffffffffffff780100000000000000000000000000000000000000000000000090910481169084161115611a7e576040517fc630a00d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611a8a8285615b21565b611a9e9067ffffffffffffffff1688615b42565b604080516060810182528581524267ffffffffffffffff908116602080840191825260738054680100000000000000009081900485168688019081528d861660008181526072909552979093209551865592516001909501805492519585167fffffffffffffffffffffffffffffffff000000000000000000000000000000009384161795851684029590951790945583548c8416911617930292909217905590915082811690851614611b9457607380547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff8716021790555b611be6333083607054611ba79190615b55565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169291906146b4565b611bee614796565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379e2cf976040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611c5657600080fd5b505af1158015611c6a573d6000803e3d6000fd5b505060405167ffffffffffffffff881692507f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce9150600090a2505050505050505050505050565b60745468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611d5857606f5460ff1615611d19576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d228161125a565b611d58576040517f0ce9e4a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d6181614843565b50565b607a5473ffffffffffffffffffffffffffffffffffffffff163314611db5576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a8067ffffffffffffffff82161115611dfc576040517ff5e37f2f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f5460ff16611e6757607b5467ffffffffffffffff74010000000000000000000000000000000000000000909104811690821610611e67576040517ff5e37f2f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607b80547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff8416908102919091179091556040519081527fa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b90602001610c9a565b60768054610b0c906158f3565b607a5473ffffffffffffffffffffffffffffffffffffffff163314611f46576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607b547c0100000000000000000000000000000000000000000000000000000000900460ff16611fa2576040517ff6ba91a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607b80547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690556040517f854dd6ce5a1445c4c54388b21cffd11cf5bba1b9e763aec48ce3da75d617412f90600090a1565b600060705460646120069190615b55565b905090565b606f5460ff1615612048576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60795467ffffffffffffffff858116600090815260726020526040902060010154429261209592780100000000000000000000000000000000000000000000000090910481169116615975565b67ffffffffffffffff1611156120d7576040517f8a0704d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e86120e48686615b21565b67ffffffffffffffff161115612126576040517fb59f753a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612134868686868686613eb6565b61213d84614a56565b607954700100000000000000000000000000000000900467ffffffffffffffff1660000361228557607480547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff868116918217909255600090815260756020526040902083905560795416156121e057607980547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690555b6040517f33d6247d000000000000000000000000000000000000000000000000000000008152600481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906333d6247d90602401600060405180830381600087803b15801561226857600080fd5b505af115801561227c573d6000803e3d6000fd5b50505050612355565b61228d614796565b6079805467ffffffffffffffff169060006122a783615a3d565b825467ffffffffffffffff9182166101009390930a92830292820219169190911790915560408051608081018252428316815287831660208083019182528284018981526060840189815260795487166000908152607890935294909120925183549251861668010000000000000000027fffffffffffffffffffffffffffffffff000000000000000000000000000000009093169516949094171781559151600183015551600290910155505b604051828152339067ffffffffffffffff8616907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200161103c565b607a5473ffffffffffffffffffffffffffffffffffffffff1633146123e4576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f80547fff0000000000000000000000000000000000000000ffffffffffffffffffffff166b01000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610c9a565b612470614c36565b61247a6000614cb7565b565b60335473ffffffffffffffffffffffffffffffffffffffff1633146125e45760006124a5612c92565b90508067ffffffffffffffff168267ffffffffffffffff16116124f4576040517f812a372d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60735467ffffffffffffffff680100000000000000009091048116908316118061253a575067ffffffffffffffff80831660009081526072602052604090206001015416155b15612571576040517f98c5c01400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff80831660009081526072602052604090206001015442916125a09162093a809116615975565b67ffffffffffffffff1611156125e2576040517fd257555a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b611d61614d2e565b607b5473ffffffffffffffffffffffffffffffffffffffff16331461263d576040517fd1ec4b2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607b54607a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040519081527f056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e9060200160405180910390a1565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015612747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276b9190615a64565b90506000612777612c92565b60735467ffffffffffffffff6801000000000000000082048116916127cf9170010000000000000000000000000000000082048116917801000000000000000000000000000000000000000000000000900416615b21565b6127d99190615975565b6127e39190615b21565b67ffffffffffffffff169050806000036128005760009250505090565b61280a8183615b9b565b9250505090565b606f5460ff161561284e576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61285d8787878787878761427a565b67ffffffffffffffff84166000908152607560209081526040918290205482519081529081018490527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a16128b9614d2e565b50505050505050565b607a5473ffffffffffffffffffffffffffffffffffffffff163314612913576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a8067ffffffffffffffff8216111561295a576040517fcc96507000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f5460ff166129c15760795467ffffffffffffffff7001000000000000000000000000000000009091048116908216106129c1576040517f48a05a9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607980547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff8416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610c9a565b607a5473ffffffffffffffffffffffffffffffffffffffff163314612a8f576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620151808167ffffffffffffffff161115612ad6576040517fe067dfe800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f80547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff1661010067ffffffffffffffff8416908102919091179091556040519081527f1b023231a1ab6b5d93992f168fb44498e1a7e64cef58daff6f1c216de6a68c2890602001610c9a565b607a5473ffffffffffffffffffffffffffffffffffffffff163314612b95576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce690602001610c9a565b600067ffffffff0000000167ffffffffffffffff8316108015612c40575067ffffffff00000001604083901c67ffffffffffffffff16105b8015612c61575067ffffffff00000001608083901c67ffffffffffffffff16105b8015612c78575067ffffffff0000000160c083901c105b15612c8557506001919050565b506000919050565b919050565b60795460009067ffffffffffffffff1615612cd6575060795467ffffffffffffffff9081166000908152607860205260409020546801000000000000000090041690565b5060745467ffffffffffffffff1690565b607a5473ffffffffffffffffffffffffffffffffffffffff163314612d38576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6076612d448282615bfd565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610c9a919061535c565b600054610100900460ff1615808015612d945750600054600160ff909116105b80612dae5750303b158015612dae575060005460ff166001145b612e3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015612e9d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b612eaa6020880188615633565b607a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055612eff6040880160208901615633565b606f805473ffffffffffffffffffffffffffffffffffffffff929092166b010000000000000000000000027fff0000000000000000000000000000000000000000ffffffffffffffffffffff909216919091179055612f646080880160608901615633565b6074805473ffffffffffffffffffffffffffffffffffffffff9290921668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff9092169190911790556000805260756020527ff9e3fbf150b7a0077118526f473c53cb4734f166167e2c6213e3567dd390b4ad8690556076612fef8682615bfd565b506077612ffc8582615bfd565b5062093a806130116060890160408a016154f9565b67ffffffffffffffff161115613053576040517fcc96507000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61306360608801604089016154f9565b6079805467ffffffffffffffff92909216700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff90921691909117905562093a806130c560a0890160808a016154f9565b67ffffffffffffffff161115613107576040517f1d06e87900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61311760a08801608089016154f9565b6079805477ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff939093169290920291909117905567016345785d8a0000607055606f80547fffffffffffffffffffffffffffffffffffffffffff00000000000000000000ff166a03ea000000000000070800179055607b80547fffffff000000000000000000ffffffffffffffffffffffffffffffffffffffff167c01000000000006978000000000000000000000000000000000000000001790556131f6614db6565b7fed7be53c9f1a96a481223b15568a5b1a475e01a74b347d6ca187c8bf0c078cd660007f0000000000000000000000000000000000000000000000000000000000000000858560405161324c9493929190615d17565b60405180910390a180156128b957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050505050565b607b547c0100000000000000000000000000000000000000000000000000000000900460ff161561331c576040517f24eff8c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f5460ff1615613359576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000819003613395576040517fcb591a5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e88111156133d1576040517fb59f753a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60735467ffffffffffffffff7801000000000000000000000000000000000000000000000000820481169161341c918491700100000000000000000000000000000000900416615d4f565b1115613454576040517fc630a00d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60735467ffffffffffffffff680100000000000000008204811660008181526072602052604081205491937001000000000000000000000000000000009004909216915b848110156136fe5760008787838181106134b4576134b461599d565b90506020028101906134c69190615d62565b6134cf90615da0565b9050836134db81615a3d565b8251805160209182012081850151604080870151905194995091945060009361353d9386939101928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012067ffffffffffffffff89166000908152607190935291205490915081146135c6576040517fce3d755e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff86166000908152607160205260408120556135eb600189615b42565b840361365a5742607b60149054906101000a900467ffffffffffffffff1684604001516136189190615975565b67ffffffffffffffff16111561365a576040517fc44a082100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020838101516040805192830188905282018490526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c0160405160208183030381529060405280519060200120945050505080806136f690615a7d565b915050613498565b506137098484615975565b6073805467ffffffffffffffff4281167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009092168217808455604080516060810182528781526020808201958652680100000000000000009384900485168284019081528589166000818152607290935284832093518455965160019390930180549151871686027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921693871693909317179091558554938916700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff938602939093167fffffffffffffffff00000000000000000000000000000000ffffffffffffffff90941693909317919091179093559151929550917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a2505050505050565b607a5473ffffffffffffffffffffffffffffffffffffffff1633146138b2576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561391a57600080fd5b505af115801561392e573d6000803e3d6000fd5b5050505061247a614e56565b607b547c0100000000000000000000000000000000000000000000000000000000900460ff1615613997576040517f24eff8c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f5460ff16156139d4576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006139de611ff5565b905081811115613a1a576040517f4732fdb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611388831115613a56576040517fa29a6c7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613a9873ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163330846146b4565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ed691ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b299190615a64565b60738054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018613b6383615a3d565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508484604051613b9a929190615e30565b60408051918290038220602083015281018290527fffffffffffffffff0000000000000000000000000000000000000000000000004260c01b166060820152606801604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815281516020928301206073547801000000000000000000000000000000000000000000000000900467ffffffffffffffff1660009081526071909352912055323303613cca57607354604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613d29565b607360189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc93182338888604051613d209493929190615e40565b60405180910390a25b5050505050565b607a5473ffffffffffffffffffffffffffffffffffffffff163314613d81576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b607480547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90602001610c9a565b613e0a614c36565b73ffffffffffffffffffffffffffffffffffffffff8116613ead576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401612e36565b611d6181614cb7565b600080613ec1612c92565b905067ffffffffffffffff881615613f915760795467ffffffffffffffff9081169089161115613f1d576040517fbb14c20500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8089166000908152607860205260409020600281015481549094509091898116680100000000000000009092041614613f8b576040517f2bd2e3e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50614032565b67ffffffffffffffff8716600090815260756020526040902054915081613fe4576040517f4997b98600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff168767ffffffffffffffff161115614032576040517f1e56e9e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8067ffffffffffffffff168667ffffffffffffffff161161407f576040517fb9b18f5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061408e8888888689610ca5565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516140c39190615e76565b602060405180830381855afa1580156140e0573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906141039190615a64565b61410d9190615e88565b6040805160208101825282815290517f9121da8a00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691639121da8a9161418f91899190600401615e9c565b602060405180830381865afa1580156141ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d09190615ed7565b614206576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61426e33614214858b615b21565b67ffffffffffffffff166142266126b8565b6142309190615b55565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169190614ee5565b50505050505050505050565b600067ffffffffffffffff8816156143485760795467ffffffffffffffff90811690891611156142d6576040517fbb14c20500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5067ffffffffffffffff8088166000908152607860205260409020600281015481549092888116680100000000000000009092041614614342576040517f2bd2e3e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506143e4565b5067ffffffffffffffff85166000908152607560205260409020548061439a576040517f4997b98600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60745467ffffffffffffffff90811690871611156143e4576040517f1e56e9e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60795467ffffffffffffffff908116908816118061441657508767ffffffffffffffff168767ffffffffffffffff1611155b8061443d575060795467ffffffffffffffff68010000000000000000909104811690881611155b15614474576040517fbfa7079f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8781166000908152607860205260409020546801000000000000000090048116908616146144d7576040517f32a2a77f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006144e68787878588610ca5565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161451b9190615e76565b602060405180830381855afa158015614538573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061455b9190615a64565b6145659190615e88565b6040805160208101825282815290517f9121da8a00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691639121da8a916145e791889190600401615e9c565b602060405180830381865afa158015614604573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146289190615ed7565b61465e576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff891660009081526078602052604090206002015485900361426e576040517fa47276bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526147909085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614f40565b50505050565b60795467ffffffffffffffff68010000000000000000820481169116111561247a576079546000906147df9068010000000000000000900467ffffffffffffffff166001615975565b90506147ea8161125a565b15611d615760795460009060029061480d90849067ffffffffffffffff16615b21565b6148179190615ef9565b6148219083615975565b905061482c8161125a565b1561483e5761483a81614843565b5050565b61483a825b60795467ffffffffffffffff68010000000000000000909104811690821611158061487d575060795467ffffffffffffffff908116908216115b156148b4576040517fd086b70b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff818116600081815260786020908152604080832080546074805468010000000000000000928390049098167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090981688179055600282015487865260759094529382902092909255607980547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff169390940292909217909255600182015490517f33d6247d00000000000000000000000000000000000000000000000000000000815260048101919091529091907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906333d6247d90602401600060405180830381600087803b1580156149e657600080fd5b505af11580156149fa573d6000803e3d6000fd5b505050508267ffffffffffffffff168167ffffffffffffffff167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e8460020154604051614a4991815260200190565b60405180910390a3505050565b6000614a60612c92565b905081600080614a708484615b21565b606f5467ffffffffffffffff9182169250600091614a949161010090041642615b42565b90505b8467ffffffffffffffff168467ffffffffffffffff1614614b1f5767ffffffffffffffff80851660009081526072602052604090206001810154909116821015614afd57600181015468010000000000000000900467ffffffffffffffff169450614b19565b614b078686615b21565b67ffffffffffffffff16935050614b1f565b50614a97565b6000614b2b8484615b42565b905083811015614b8257808403600c8111614b465780614b49565b600c5b9050806103e80a81606f60099054906101000a900461ffff1661ffff160a6070540281614b7857614b78615b6c565b0460705550614bf2565b838103600c8111614b935780614b96565b600c5b90506000816103e80a82606f60099054906101000a900461ffff1661ffff160a670de0b6b3a76400000281614bcd57614bcd615b6c565b04905080607054670de0b6b3a76400000281614beb57614beb615b6c565b0460705550505b683635c9adc5dea000006070541115614c1757683635c9adc5dea000006070556128b9565b633b9aca0060705410156128b957633b9aca0060705550505050505050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461247a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612e36565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614d9657600080fd5b505af1158015614daa573d6000803e3d6000fd5b5050505061247a61504c565b600054610100900460ff16614e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401612e36565b61247a33614cb7565b606f5460ff16614e92576040517f5386698100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052614f3b9084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161470e565b505050565b6000614fa2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166150df9092919063ffffffff16565b805190915015614f3b5780806020019051810190614fc09190615ed7565b614f3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401612e36565b606f5460ff1615615089576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b60606150ee84846000856150f6565b949350505050565b606082471015615188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401612e36565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516151b19190615e76565b60006040518083038185875af1925050503d80600081146151ee576040519150601f19603f3d011682016040523d82523d6000602084013e6151f3565b606091505b50915091506152048783838761520f565b979650505050505050565b606083156152a557825160000361529e5773ffffffffffffffffffffffffffffffffffffffff85163b61529e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401612e36565b50816150ee565b6150ee83838151156152ba5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e36919061535c565b60005b838110156153095781810151838201526020016152f1565b50506000910152565b6000815180845261532a8160208601602086016152ee565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061536f6020830184615312565b9392505050565b60006020828403121561538857600080fd5b813561ffff8116811461536f57600080fd5b803567ffffffffffffffff81168114612c8d57600080fd5b600080600080600060a086880312156153ca57600080fd5b6153d38661539a565b94506153e16020870161539a565b94979496505050506040830135926060810135926080909101359150565b80610300810183101561541157600080fd5b92915050565b6000806000806000806103a0878903121561543157600080fd5b61543a8761539a565b95506154486020880161539a565b94506154566040880161539a565b935060608701359250608087013591506154738860a089016153ff565b90509295509295509295565b60008060008060008060006103c0888a03121561549b57600080fd5b6154a48861539a565b96506154b26020890161539a565b95506154c06040890161539a565b94506154ce6060890161539a565b93506080880135925060a088013591506154eb8960c08a016153ff565b905092959891949750929550565b60006020828403121561550b57600080fd5b61536f8261539a565b803573ffffffffffffffffffffffffffffffffffffffff81168114612c8d57600080fd5b60008083601f84011261554a57600080fd5b50813567ffffffffffffffff81111561556257600080fd5b60208301915083602082850101111561557a57600080fd5b9250929050565b60008060008060006060868803121561559957600080fd5b853567ffffffffffffffff808211156155b157600080fd5b818801915088601f8301126155c557600080fd5b8135818111156155d457600080fd5b8960208260071b85010111156155e957600080fd5b602083019750809650506155ff60208901615514565b9450604088013591508082111561561557600080fd5b5061562288828901615538565b969995985093965092949392505050565b60006020828403121561564557600080fd5b61536f82615514565b60006020828403121561566057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff808411156156b1576156b1615667565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156156f7576156f7615667565b8160405280935085815286868601111561571057600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261573b57600080fd5b61536f83833560208501615696565b60006020828403121561575c57600080fd5b813567ffffffffffffffff81111561577357600080fd5b6150ee8482850161572a565b60008060008060008086880361012081121561579a57600080fd5b60a08112156157a857600080fd5b5086955060a0870135945060c087013567ffffffffffffffff808211156157ce57600080fd5b6157da8a838b0161572a565b955060e08901359150808211156157f057600080fd5b6157fc8a838b0161572a565b945061010089013591508082111561581357600080fd5b5061582089828a01615538565b979a9699509497509295939492505050565b6000806020838503121561584557600080fd5b823567ffffffffffffffff8082111561585d57600080fd5b818501915085601f83011261587157600080fd5b81358181111561588057600080fd5b8660208260051b850101111561589557600080fd5b60209290920196919550909350505050565b6000806000604084860312156158bc57600080fd5b833567ffffffffffffffff8111156158d357600080fd5b6158df86828701615538565b909790965060209590950135949350505050565b600181811c9082168061590757607f821691505b602082108103615940577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff81811683821601908082111561599657615996615946565b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000608082840312156159de57600080fd5b6040516080810181811067ffffffffffffffff82111715615a0157615a01615667565b80604052508235815260208301356020820152615a206040840161539a565b6040820152615a316060840161539a565b60608201529392505050565b600067ffffffffffffffff808316818103615a5a57615a5a615946565b6001019392505050565b600060208284031215615a7657600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615aae57615aae615946565b5060010190565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b838152604060208201526000615b18604083018486615ab5565b95945050505050565b67ffffffffffffffff82811682821603908082111561599657615996615946565b8181038181111561541157615411615946565b808202811582820484141761541157615411615946565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615baa57615baa615b6c565b500490565b601f821115614f3b57600081815260208120601f850160051c81016020861015615bd65750805b601f850160051c820191505b81811015615bf557828155600101615be2565b505050505050565b815167ffffffffffffffff811115615c1757615c17615667565b615c2b81615c2584546158f3565b84615baf565b602080601f831160018114615c7e5760008415615c485750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555615bf5565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015615ccb57888601518255948401946001909101908401615cac565b5085821015615d0757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600067ffffffffffffffff808716835280861660208401525060606040830152615d45606083018486615ab5565b9695505050505050565b8082018082111561541157615411615946565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112615d9657600080fd5b9190910192915050565b600060608236031215615db257600080fd5b6040516060810167ffffffffffffffff8282108183111715615dd657615dd6615667565b816040528435915080821115615deb57600080fd5b50830136601f820112615dfd57600080fd5b615e0c36823560208401615696565b82525060208301356020820152615e256040840161539a565b604082015292915050565b8183823760009101908152919050565b84815273ffffffffffffffffffffffffffffffffffffffff84166020820152606060408201526000615d45606083018486615ab5565b60008251615d968184602087016152ee565b600082615e9757615e97615b6c565b500690565b61032081016103008085843782018360005b6001811015615ecd578151835260209283019290910190600101615eae565b5050509392505050565b600060208284031215615ee957600080fd5b8151801515811461536f57600080fd5b600067ffffffffffffffff80841680615f1457615f14615b6c565b9216919091049291505056fea2646970667358221220c54659be0c71b5f48f3f4d4bfee20a108aa9b5b089c2412703866a273f30c4f964736f6c63430008140033", -} - -// CdkvalidiumABI is the input ABI used to generate the binding from. -// Deprecated: Use CdkvalidiumMetaData.ABI instead. -var CdkvalidiumABI = CdkvalidiumMetaData.ABI - -// CdkvalidiumBin is the compiled bytecode used for deploying new contracts. -// Deprecated: Use CdkvalidiumMetaData.Bin instead. -var CdkvalidiumBin = CdkvalidiumMetaData.Bin - -// DeployCdkvalidium deploys a new Ethereum contract, binding an instance of Cdkvalidium to it. -func DeployCdkvalidium(auth *bind.TransactOpts, backend bind.ContractBackend, _globalExitRootManager common.Address, _matic common.Address, _rollupVerifier common.Address, _bridgeAddress common.Address, _dataCommitteeAddress common.Address, _chainID uint64, _forkID uint64) (common.Address, *types.Transaction, *Cdkvalidium, error) { - parsed, err := CdkvalidiumMetaData.GetAbi() - if err != nil { - return common.Address{}, nil, nil, err - } - if parsed == nil { - return common.Address{}, nil, nil, errors.New("GetABI returned nil") - } - - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(CdkvalidiumBin), backend, _globalExitRootManager, _matic, _rollupVerifier, _bridgeAddress, _dataCommitteeAddress, _chainID, _forkID) - if err != nil { - return common.Address{}, nil, nil, err - } - return address, tx, &Cdkvalidium{CdkvalidiumCaller: CdkvalidiumCaller{contract: contract}, CdkvalidiumTransactor: CdkvalidiumTransactor{contract: contract}, CdkvalidiumFilterer: CdkvalidiumFilterer{contract: contract}}, nil -} - -// Cdkvalidium is an auto generated Go binding around an Ethereum contract. -type Cdkvalidium struct { - CdkvalidiumCaller // Read-only binding to the contract - CdkvalidiumTransactor // Write-only binding to the contract - CdkvalidiumFilterer // Log filterer for contract events -} - -// CdkvalidiumCaller is an auto generated read-only Go binding around an Ethereum contract. -type CdkvalidiumCaller struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// CdkvalidiumTransactor is an auto generated write-only Go binding around an Ethereum contract. -type CdkvalidiumTransactor struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// CdkvalidiumFilterer is an auto generated log filtering Go binding around an Ethereum contract events. -type CdkvalidiumFilterer struct { - contract *bind.BoundContract // Generic contract wrapper for the low level calls -} - -// CdkvalidiumSession is an auto generated Go binding around an Ethereum contract, -// with pre-set call and transact options. -type CdkvalidiumSession struct { - Contract *Cdkvalidium // Generic contract binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// CdkvalidiumCallerSession is an auto generated read-only Go binding around an Ethereum contract, -// with pre-set call options. -type CdkvalidiumCallerSession struct { - Contract *CdkvalidiumCaller // Generic contract caller binding to set the session for - CallOpts bind.CallOpts // Call options to use throughout this session -} - -// CdkvalidiumTransactorSession is an auto generated write-only Go binding around an Ethereum contract, -// with pre-set transact options. -type CdkvalidiumTransactorSession struct { - Contract *CdkvalidiumTransactor // Generic contract transactor binding to set the session for - TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session -} - -// CdkvalidiumRaw is an auto generated low-level Go binding around an Ethereum contract. -type CdkvalidiumRaw struct { - Contract *Cdkvalidium // Generic contract binding to access the raw methods on -} - -// CdkvalidiumCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. -type CdkvalidiumCallerRaw struct { - Contract *CdkvalidiumCaller // Generic read-only contract binding to access the raw methods on -} - -// CdkvalidiumTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. -type CdkvalidiumTransactorRaw struct { - Contract *CdkvalidiumTransactor // Generic write-only contract binding to access the raw methods on -} - -// NewCdkvalidium creates a new instance of Cdkvalidium, bound to a specific deployed contract. -func NewCdkvalidium(address common.Address, backend bind.ContractBackend) (*Cdkvalidium, error) { - contract, err := bindCdkvalidium(address, backend, backend, backend) - if err != nil { - return nil, err - } - return &Cdkvalidium{CdkvalidiumCaller: CdkvalidiumCaller{contract: contract}, CdkvalidiumTransactor: CdkvalidiumTransactor{contract: contract}, CdkvalidiumFilterer: CdkvalidiumFilterer{contract: contract}}, nil -} - -// NewCdkvalidiumCaller creates a new read-only instance of Cdkvalidium, bound to a specific deployed contract. -func NewCdkvalidiumCaller(address common.Address, caller bind.ContractCaller) (*CdkvalidiumCaller, error) { - contract, err := bindCdkvalidium(address, caller, nil, nil) - if err != nil { - return nil, err - } - return &CdkvalidiumCaller{contract: contract}, nil -} - -// NewCdkvalidiumTransactor creates a new write-only instance of Cdkvalidium, bound to a specific deployed contract. -func NewCdkvalidiumTransactor(address common.Address, transactor bind.ContractTransactor) (*CdkvalidiumTransactor, error) { - contract, err := bindCdkvalidium(address, nil, transactor, nil) - if err != nil { - return nil, err - } - return &CdkvalidiumTransactor{contract: contract}, nil -} - -// NewCdkvalidiumFilterer creates a new log filterer instance of Cdkvalidium, bound to a specific deployed contract. -func NewCdkvalidiumFilterer(address common.Address, filterer bind.ContractFilterer) (*CdkvalidiumFilterer, error) { - contract, err := bindCdkvalidium(address, nil, nil, filterer) - if err != nil { - return nil, err - } - return &CdkvalidiumFilterer{contract: contract}, nil -} - -// bindCdkvalidium binds a generic wrapper to an already deployed contract. -func bindCdkvalidium(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { - parsed, err := CdkvalidiumMetaData.GetAbi() - if err != nil { - return nil, err - } - return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Cdkvalidium *CdkvalidiumRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Cdkvalidium.Contract.CdkvalidiumCaller.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Cdkvalidium *CdkvalidiumRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Cdkvalidium.Contract.CdkvalidiumTransactor.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Cdkvalidium *CdkvalidiumRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Cdkvalidium.Contract.CdkvalidiumTransactor.contract.Transact(opts, method, params...) -} - -// Call invokes the (constant) contract method with params as input values and -// sets the output to result. The result type might be a single field for simple -// returns, a slice of interfaces for anonymous returns and a struct for named -// returns. -func (_Cdkvalidium *CdkvalidiumCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { - return _Cdkvalidium.Contract.contract.Call(opts, result, method, params...) -} - -// Transfer initiates a plain transaction to move funds to the contract, calling -// its default method if one is available. -func (_Cdkvalidium *CdkvalidiumTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Cdkvalidium.Contract.contract.Transfer(opts) -} - -// Transact invokes the (paid) contract method with params as input values. -func (_Cdkvalidium *CdkvalidiumTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { - return _Cdkvalidium.Contract.contract.Transact(opts, method, params...) -} - -// Admin is a free data retrieval call binding the contract method 0xf851a440. -// -// Solidity: function admin() view returns(address) -func (_Cdkvalidium *CdkvalidiumCaller) Admin(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "admin") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Admin is a free data retrieval call binding the contract method 0xf851a440. -// -// Solidity: function admin() view returns(address) -func (_Cdkvalidium *CdkvalidiumSession) Admin() (common.Address, error) { - return _Cdkvalidium.Contract.Admin(&_Cdkvalidium.CallOpts) -} - -// Admin is a free data retrieval call binding the contract method 0xf851a440. -// -// Solidity: function admin() view returns(address) -func (_Cdkvalidium *CdkvalidiumCallerSession) Admin() (common.Address, error) { - return _Cdkvalidium.Contract.Admin(&_Cdkvalidium.CallOpts) -} - -// BatchFee is a free data retrieval call binding the contract method 0xf8b823e4. -// -// Solidity: function batchFee() view returns(uint256) -func (_Cdkvalidium *CdkvalidiumCaller) BatchFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "batchFee") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// BatchFee is a free data retrieval call binding the contract method 0xf8b823e4. -// -// Solidity: function batchFee() view returns(uint256) -func (_Cdkvalidium *CdkvalidiumSession) BatchFee() (*big.Int, error) { - return _Cdkvalidium.Contract.BatchFee(&_Cdkvalidium.CallOpts) -} - -// BatchFee is a free data retrieval call binding the contract method 0xf8b823e4. -// -// Solidity: function batchFee() view returns(uint256) -func (_Cdkvalidium *CdkvalidiumCallerSession) BatchFee() (*big.Int, error) { - return _Cdkvalidium.Contract.BatchFee(&_Cdkvalidium.CallOpts) -} - -// BatchNumToStateRoot is a free data retrieval call binding the contract method 0x5392c5e0. -// -// Solidity: function batchNumToStateRoot(uint64 ) view returns(bytes32) -func (_Cdkvalidium *CdkvalidiumCaller) BatchNumToStateRoot(opts *bind.CallOpts, arg0 uint64) ([32]byte, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "batchNumToStateRoot", arg0) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// BatchNumToStateRoot is a free data retrieval call binding the contract method 0x5392c5e0. -// -// Solidity: function batchNumToStateRoot(uint64 ) view returns(bytes32) -func (_Cdkvalidium *CdkvalidiumSession) BatchNumToStateRoot(arg0 uint64) ([32]byte, error) { - return _Cdkvalidium.Contract.BatchNumToStateRoot(&_Cdkvalidium.CallOpts, arg0) -} - -// BatchNumToStateRoot is a free data retrieval call binding the contract method 0x5392c5e0. -// -// Solidity: function batchNumToStateRoot(uint64 ) view returns(bytes32) -func (_Cdkvalidium *CdkvalidiumCallerSession) BatchNumToStateRoot(arg0 uint64) ([32]byte, error) { - return _Cdkvalidium.Contract.BatchNumToStateRoot(&_Cdkvalidium.CallOpts, arg0) -} - -// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. -// -// Solidity: function bridgeAddress() view returns(address) -func (_Cdkvalidium *CdkvalidiumCaller) BridgeAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "bridgeAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. -// -// Solidity: function bridgeAddress() view returns(address) -func (_Cdkvalidium *CdkvalidiumSession) BridgeAddress() (common.Address, error) { - return _Cdkvalidium.Contract.BridgeAddress(&_Cdkvalidium.CallOpts) -} - -// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. -// -// Solidity: function bridgeAddress() view returns(address) -func (_Cdkvalidium *CdkvalidiumCallerSession) BridgeAddress() (common.Address, error) { - return _Cdkvalidium.Contract.BridgeAddress(&_Cdkvalidium.CallOpts) -} - -// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. -// -// Solidity: function calculateRewardPerBatch() view returns(uint256) -func (_Cdkvalidium *CdkvalidiumCaller) CalculateRewardPerBatch(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "calculateRewardPerBatch") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. -// -// Solidity: function calculateRewardPerBatch() view returns(uint256) -func (_Cdkvalidium *CdkvalidiumSession) CalculateRewardPerBatch() (*big.Int, error) { - return _Cdkvalidium.Contract.CalculateRewardPerBatch(&_Cdkvalidium.CallOpts) -} - -// CalculateRewardPerBatch is a free data retrieval call binding the contract method 0x99f5634e. -// -// Solidity: function calculateRewardPerBatch() view returns(uint256) -func (_Cdkvalidium *CdkvalidiumCallerSession) CalculateRewardPerBatch() (*big.Int, error) { - return _Cdkvalidium.Contract.CalculateRewardPerBatch(&_Cdkvalidium.CallOpts) -} - -// ChainID is a free data retrieval call binding the contract method 0xadc879e9. -// -// Solidity: function chainID() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) ChainID(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "chainID") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// ChainID is a free data retrieval call binding the contract method 0xadc879e9. -// -// Solidity: function chainID() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) ChainID() (uint64, error) { - return _Cdkvalidium.Contract.ChainID(&_Cdkvalidium.CallOpts) -} - -// ChainID is a free data retrieval call binding the contract method 0xadc879e9. -// -// Solidity: function chainID() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) ChainID() (uint64, error) { - return _Cdkvalidium.Contract.ChainID(&_Cdkvalidium.CallOpts) -} - -// CheckStateRootInsidePrime is a free data retrieval call binding the contract method 0xba58ae39. -// -// Solidity: function checkStateRootInsidePrime(uint256 newStateRoot) pure returns(bool) -func (_Cdkvalidium *CdkvalidiumCaller) CheckStateRootInsidePrime(opts *bind.CallOpts, newStateRoot *big.Int) (bool, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "checkStateRootInsidePrime", newStateRoot) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// CheckStateRootInsidePrime is a free data retrieval call binding the contract method 0xba58ae39. -// -// Solidity: function checkStateRootInsidePrime(uint256 newStateRoot) pure returns(bool) -func (_Cdkvalidium *CdkvalidiumSession) CheckStateRootInsidePrime(newStateRoot *big.Int) (bool, error) { - return _Cdkvalidium.Contract.CheckStateRootInsidePrime(&_Cdkvalidium.CallOpts, newStateRoot) -} - -// CheckStateRootInsidePrime is a free data retrieval call binding the contract method 0xba58ae39. -// -// Solidity: function checkStateRootInsidePrime(uint256 newStateRoot) pure returns(bool) -func (_Cdkvalidium *CdkvalidiumCallerSession) CheckStateRootInsidePrime(newStateRoot *big.Int) (bool, error) { - return _Cdkvalidium.Contract.CheckStateRootInsidePrime(&_Cdkvalidium.CallOpts, newStateRoot) -} - -// DataCommitteeAddress is a free data retrieval call binding the contract method 0x4df61d24. -// -// Solidity: function dataCommitteeAddress() view returns(address) -func (_Cdkvalidium *CdkvalidiumCaller) DataCommitteeAddress(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "dataCommitteeAddress") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// DataCommitteeAddress is a free data retrieval call binding the contract method 0x4df61d24. -// -// Solidity: function dataCommitteeAddress() view returns(address) -func (_Cdkvalidium *CdkvalidiumSession) DataCommitteeAddress() (common.Address, error) { - return _Cdkvalidium.Contract.DataCommitteeAddress(&_Cdkvalidium.CallOpts) -} - -// DataCommitteeAddress is a free data retrieval call binding the contract method 0x4df61d24. -// -// Solidity: function dataCommitteeAddress() view returns(address) -func (_Cdkvalidium *CdkvalidiumCallerSession) DataCommitteeAddress() (common.Address, error) { - return _Cdkvalidium.Contract.DataCommitteeAddress(&_Cdkvalidium.CallOpts) -} - -// ForceBatchTimeout is a free data retrieval call binding the contract method 0xc754c7ed. -// -// Solidity: function forceBatchTimeout() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) ForceBatchTimeout(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "forceBatchTimeout") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// ForceBatchTimeout is a free data retrieval call binding the contract method 0xc754c7ed. -// -// Solidity: function forceBatchTimeout() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) ForceBatchTimeout() (uint64, error) { - return _Cdkvalidium.Contract.ForceBatchTimeout(&_Cdkvalidium.CallOpts) -} - -// ForceBatchTimeout is a free data retrieval call binding the contract method 0xc754c7ed. -// -// Solidity: function forceBatchTimeout() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) ForceBatchTimeout() (uint64, error) { - return _Cdkvalidium.Contract.ForceBatchTimeout(&_Cdkvalidium.CallOpts) -} - -// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. -// -// Solidity: function forcedBatches(uint64 ) view returns(bytes32) -func (_Cdkvalidium *CdkvalidiumCaller) ForcedBatches(opts *bind.CallOpts, arg0 uint64) ([32]byte, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "forcedBatches", arg0) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. -// -// Solidity: function forcedBatches(uint64 ) view returns(bytes32) -func (_Cdkvalidium *CdkvalidiumSession) ForcedBatches(arg0 uint64) ([32]byte, error) { - return _Cdkvalidium.Contract.ForcedBatches(&_Cdkvalidium.CallOpts, arg0) -} - -// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. -// -// Solidity: function forcedBatches(uint64 ) view returns(bytes32) -func (_Cdkvalidium *CdkvalidiumCallerSession) ForcedBatches(arg0 uint64) ([32]byte, error) { - return _Cdkvalidium.Contract.ForcedBatches(&_Cdkvalidium.CallOpts, arg0) -} - -// ForkID is a free data retrieval call binding the contract method 0x831c7ead. -// -// Solidity: function forkID() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) ForkID(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "forkID") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// ForkID is a free data retrieval call binding the contract method 0x831c7ead. -// -// Solidity: function forkID() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) ForkID() (uint64, error) { - return _Cdkvalidium.Contract.ForkID(&_Cdkvalidium.CallOpts) -} - -// ForkID is a free data retrieval call binding the contract method 0x831c7ead. -// -// Solidity: function forkID() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) ForkID() (uint64, error) { - return _Cdkvalidium.Contract.ForkID(&_Cdkvalidium.CallOpts) -} - -// GetForcedBatchFee is a free data retrieval call binding the contract method 0x60469169. -// -// Solidity: function getForcedBatchFee() view returns(uint256) -func (_Cdkvalidium *CdkvalidiumCaller) GetForcedBatchFee(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "getForcedBatchFee") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// GetForcedBatchFee is a free data retrieval call binding the contract method 0x60469169. -// -// Solidity: function getForcedBatchFee() view returns(uint256) -func (_Cdkvalidium *CdkvalidiumSession) GetForcedBatchFee() (*big.Int, error) { - return _Cdkvalidium.Contract.GetForcedBatchFee(&_Cdkvalidium.CallOpts) -} - -// GetForcedBatchFee is a free data retrieval call binding the contract method 0x60469169. -// -// Solidity: function getForcedBatchFee() view returns(uint256) -func (_Cdkvalidium *CdkvalidiumCallerSession) GetForcedBatchFee() (*big.Int, error) { - return _Cdkvalidium.Contract.GetForcedBatchFee(&_Cdkvalidium.CallOpts) -} - -// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x220d7899. -// -// Solidity: function getInputSnarkBytes(uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) -func (_Cdkvalidium *CdkvalidiumCaller) GetInputSnarkBytes(opts *bind.CallOpts, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "getInputSnarkBytes", initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) - - if err != nil { - return *new([]byte), err - } - - out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) - - return out0, err - -} - -// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x220d7899. -// -// Solidity: function getInputSnarkBytes(uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) -func (_Cdkvalidium *CdkvalidiumSession) GetInputSnarkBytes(initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { - return _Cdkvalidium.Contract.GetInputSnarkBytes(&_Cdkvalidium.CallOpts, initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) -} - -// GetInputSnarkBytes is a free data retrieval call binding the contract method 0x220d7899. -// -// Solidity: function getInputSnarkBytes(uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 oldStateRoot, bytes32 newStateRoot) view returns(bytes) -func (_Cdkvalidium *CdkvalidiumCallerSession) GetInputSnarkBytes(initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, oldStateRoot [32]byte, newStateRoot [32]byte) ([]byte, error) { - return _Cdkvalidium.Contract.GetInputSnarkBytes(&_Cdkvalidium.CallOpts, initNumBatch, finalNewBatch, newLocalExitRoot, oldStateRoot, newStateRoot) -} - -// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0xc0ed84e0. -// -// Solidity: function getLastVerifiedBatch() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) GetLastVerifiedBatch(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "getLastVerifiedBatch") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0xc0ed84e0. -// -// Solidity: function getLastVerifiedBatch() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) GetLastVerifiedBatch() (uint64, error) { - return _Cdkvalidium.Contract.GetLastVerifiedBatch(&_Cdkvalidium.CallOpts) -} - -// GetLastVerifiedBatch is a free data retrieval call binding the contract method 0xc0ed84e0. -// -// Solidity: function getLastVerifiedBatch() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) GetLastVerifiedBatch() (uint64, error) { - return _Cdkvalidium.Contract.GetLastVerifiedBatch(&_Cdkvalidium.CallOpts) -} - -// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. -// -// Solidity: function globalExitRootManager() view returns(address) -func (_Cdkvalidium *CdkvalidiumCaller) GlobalExitRootManager(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "globalExitRootManager") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. -// -// Solidity: function globalExitRootManager() view returns(address) -func (_Cdkvalidium *CdkvalidiumSession) GlobalExitRootManager() (common.Address, error) { - return _Cdkvalidium.Contract.GlobalExitRootManager(&_Cdkvalidium.CallOpts) -} - -// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. -// -// Solidity: function globalExitRootManager() view returns(address) -func (_Cdkvalidium *CdkvalidiumCallerSession) GlobalExitRootManager() (common.Address, error) { - return _Cdkvalidium.Contract.GlobalExitRootManager(&_Cdkvalidium.CallOpts) -} - -// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. -// -// Solidity: function isEmergencyState() view returns(bool) -func (_Cdkvalidium *CdkvalidiumCaller) IsEmergencyState(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "isEmergencyState") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. -// -// Solidity: function isEmergencyState() view returns(bool) -func (_Cdkvalidium *CdkvalidiumSession) IsEmergencyState() (bool, error) { - return _Cdkvalidium.Contract.IsEmergencyState(&_Cdkvalidium.CallOpts) -} - -// IsEmergencyState is a free data retrieval call binding the contract method 0x15064c96. -// -// Solidity: function isEmergencyState() view returns(bool) -func (_Cdkvalidium *CdkvalidiumCallerSession) IsEmergencyState() (bool, error) { - return _Cdkvalidium.Contract.IsEmergencyState(&_Cdkvalidium.CallOpts) -} - -// IsForcedBatchDisallowed is a free data retrieval call binding the contract method 0xed6b0104. -// -// Solidity: function isForcedBatchDisallowed() view returns(bool) -func (_Cdkvalidium *CdkvalidiumCaller) IsForcedBatchDisallowed(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "isForcedBatchDisallowed") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// IsForcedBatchDisallowed is a free data retrieval call binding the contract method 0xed6b0104. -// -// Solidity: function isForcedBatchDisallowed() view returns(bool) -func (_Cdkvalidium *CdkvalidiumSession) IsForcedBatchDisallowed() (bool, error) { - return _Cdkvalidium.Contract.IsForcedBatchDisallowed(&_Cdkvalidium.CallOpts) -} - -// IsForcedBatchDisallowed is a free data retrieval call binding the contract method 0xed6b0104. -// -// Solidity: function isForcedBatchDisallowed() view returns(bool) -func (_Cdkvalidium *CdkvalidiumCallerSession) IsForcedBatchDisallowed() (bool, error) { - return _Cdkvalidium.Contract.IsForcedBatchDisallowed(&_Cdkvalidium.CallOpts) -} - -// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x383b3be8. -// -// Solidity: function isPendingStateConsolidable(uint64 pendingStateNum) view returns(bool) -func (_Cdkvalidium *CdkvalidiumCaller) IsPendingStateConsolidable(opts *bind.CallOpts, pendingStateNum uint64) (bool, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "isPendingStateConsolidable", pendingStateNum) - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x383b3be8. -// -// Solidity: function isPendingStateConsolidable(uint64 pendingStateNum) view returns(bool) -func (_Cdkvalidium *CdkvalidiumSession) IsPendingStateConsolidable(pendingStateNum uint64) (bool, error) { - return _Cdkvalidium.Contract.IsPendingStateConsolidable(&_Cdkvalidium.CallOpts, pendingStateNum) -} - -// IsPendingStateConsolidable is a free data retrieval call binding the contract method 0x383b3be8. -// -// Solidity: function isPendingStateConsolidable(uint64 pendingStateNum) view returns(bool) -func (_Cdkvalidium *CdkvalidiumCallerSession) IsPendingStateConsolidable(pendingStateNum uint64) (bool, error) { - return _Cdkvalidium.Contract.IsPendingStateConsolidable(&_Cdkvalidium.CallOpts, pendingStateNum) -} - -// LastBatchSequenced is a free data retrieval call binding the contract method 0x423fa856. -// -// Solidity: function lastBatchSequenced() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) LastBatchSequenced(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "lastBatchSequenced") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastBatchSequenced is a free data retrieval call binding the contract method 0x423fa856. -// -// Solidity: function lastBatchSequenced() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) LastBatchSequenced() (uint64, error) { - return _Cdkvalidium.Contract.LastBatchSequenced(&_Cdkvalidium.CallOpts) -} - -// LastBatchSequenced is a free data retrieval call binding the contract method 0x423fa856. -// -// Solidity: function lastBatchSequenced() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) LastBatchSequenced() (uint64, error) { - return _Cdkvalidium.Contract.LastBatchSequenced(&_Cdkvalidium.CallOpts) -} - -// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. -// -// Solidity: function lastForceBatch() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) LastForceBatch(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "lastForceBatch") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. -// -// Solidity: function lastForceBatch() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) LastForceBatch() (uint64, error) { - return _Cdkvalidium.Contract.LastForceBatch(&_Cdkvalidium.CallOpts) -} - -// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. -// -// Solidity: function lastForceBatch() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) LastForceBatch() (uint64, error) { - return _Cdkvalidium.Contract.LastForceBatch(&_Cdkvalidium.CallOpts) -} - -// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. -// -// Solidity: function lastForceBatchSequenced() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) LastForceBatchSequenced(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "lastForceBatchSequenced") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. -// -// Solidity: function lastForceBatchSequenced() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) LastForceBatchSequenced() (uint64, error) { - return _Cdkvalidium.Contract.LastForceBatchSequenced(&_Cdkvalidium.CallOpts) -} - -// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. -// -// Solidity: function lastForceBatchSequenced() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) LastForceBatchSequenced() (uint64, error) { - return _Cdkvalidium.Contract.LastForceBatchSequenced(&_Cdkvalidium.CallOpts) -} - -// LastPendingState is a free data retrieval call binding the contract method 0x458c0477. -// -// Solidity: function lastPendingState() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) LastPendingState(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "lastPendingState") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastPendingState is a free data retrieval call binding the contract method 0x458c0477. -// -// Solidity: function lastPendingState() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) LastPendingState() (uint64, error) { - return _Cdkvalidium.Contract.LastPendingState(&_Cdkvalidium.CallOpts) -} - -// LastPendingState is a free data retrieval call binding the contract method 0x458c0477. -// -// Solidity: function lastPendingState() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) LastPendingState() (uint64, error) { - return _Cdkvalidium.Contract.LastPendingState(&_Cdkvalidium.CallOpts) -} - -// LastPendingStateConsolidated is a free data retrieval call binding the contract method 0x4a1a89a7. -// -// Solidity: function lastPendingStateConsolidated() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) LastPendingStateConsolidated(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "lastPendingStateConsolidated") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastPendingStateConsolidated is a free data retrieval call binding the contract method 0x4a1a89a7. -// -// Solidity: function lastPendingStateConsolidated() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) LastPendingStateConsolidated() (uint64, error) { - return _Cdkvalidium.Contract.LastPendingStateConsolidated(&_Cdkvalidium.CallOpts) -} - -// LastPendingStateConsolidated is a free data retrieval call binding the contract method 0x4a1a89a7. -// -// Solidity: function lastPendingStateConsolidated() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) LastPendingStateConsolidated() (uint64, error) { - return _Cdkvalidium.Contract.LastPendingStateConsolidated(&_Cdkvalidium.CallOpts) -} - -// LastTimestamp is a free data retrieval call binding the contract method 0x19d8ac61. -// -// Solidity: function lastTimestamp() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) LastTimestamp(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "lastTimestamp") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastTimestamp is a free data retrieval call binding the contract method 0x19d8ac61. -// -// Solidity: function lastTimestamp() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) LastTimestamp() (uint64, error) { - return _Cdkvalidium.Contract.LastTimestamp(&_Cdkvalidium.CallOpts) -} - -// LastTimestamp is a free data retrieval call binding the contract method 0x19d8ac61. -// -// Solidity: function lastTimestamp() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) LastTimestamp() (uint64, error) { - return _Cdkvalidium.Contract.LastTimestamp(&_Cdkvalidium.CallOpts) -} - -// LastVerifiedBatch is a free data retrieval call binding the contract method 0x7fcb3653. -// -// Solidity: function lastVerifiedBatch() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) LastVerifiedBatch(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "lastVerifiedBatch") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// LastVerifiedBatch is a free data retrieval call binding the contract method 0x7fcb3653. -// -// Solidity: function lastVerifiedBatch() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) LastVerifiedBatch() (uint64, error) { - return _Cdkvalidium.Contract.LastVerifiedBatch(&_Cdkvalidium.CallOpts) -} - -// LastVerifiedBatch is a free data retrieval call binding the contract method 0x7fcb3653. -// -// Solidity: function lastVerifiedBatch() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) LastVerifiedBatch() (uint64, error) { - return _Cdkvalidium.Contract.LastVerifiedBatch(&_Cdkvalidium.CallOpts) -} - -// Matic is a free data retrieval call binding the contract method 0xb6b0b097. -// -// Solidity: function matic() view returns(address) -func (_Cdkvalidium *CdkvalidiumCaller) Matic(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "matic") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Matic is a free data retrieval call binding the contract method 0xb6b0b097. -// -// Solidity: function matic() view returns(address) -func (_Cdkvalidium *CdkvalidiumSession) Matic() (common.Address, error) { - return _Cdkvalidium.Contract.Matic(&_Cdkvalidium.CallOpts) -} - -// Matic is a free data retrieval call binding the contract method 0xb6b0b097. -// -// Solidity: function matic() view returns(address) -func (_Cdkvalidium *CdkvalidiumCallerSession) Matic() (common.Address, error) { - return _Cdkvalidium.Contract.Matic(&_Cdkvalidium.CallOpts) -} - -// MultiplierBatchFee is a free data retrieval call binding the contract method 0xafd23cbe. -// -// Solidity: function multiplierBatchFee() view returns(uint16) -func (_Cdkvalidium *CdkvalidiumCaller) MultiplierBatchFee(opts *bind.CallOpts) (uint16, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "multiplierBatchFee") - - if err != nil { - return *new(uint16), err - } - - out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) - - return out0, err - -} - -// MultiplierBatchFee is a free data retrieval call binding the contract method 0xafd23cbe. -// -// Solidity: function multiplierBatchFee() view returns(uint16) -func (_Cdkvalidium *CdkvalidiumSession) MultiplierBatchFee() (uint16, error) { - return _Cdkvalidium.Contract.MultiplierBatchFee(&_Cdkvalidium.CallOpts) -} - -// MultiplierBatchFee is a free data retrieval call binding the contract method 0xafd23cbe. -// -// Solidity: function multiplierBatchFee() view returns(uint16) -func (_Cdkvalidium *CdkvalidiumCallerSession) MultiplierBatchFee() (uint16, error) { - return _Cdkvalidium.Contract.MultiplierBatchFee(&_Cdkvalidium.CallOpts) -} - -// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. -// -// Solidity: function networkName() view returns(string) -func (_Cdkvalidium *CdkvalidiumCaller) NetworkName(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "networkName") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. -// -// Solidity: function networkName() view returns(string) -func (_Cdkvalidium *CdkvalidiumSession) NetworkName() (string, error) { - return _Cdkvalidium.Contract.NetworkName(&_Cdkvalidium.CallOpts) -} - -// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. -// -// Solidity: function networkName() view returns(string) -func (_Cdkvalidium *CdkvalidiumCallerSession) NetworkName() (string, error) { - return _Cdkvalidium.Contract.NetworkName(&_Cdkvalidium.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Cdkvalidium *CdkvalidiumCaller) Owner(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "owner") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Cdkvalidium *CdkvalidiumSession) Owner() (common.Address, error) { - return _Cdkvalidium.Contract.Owner(&_Cdkvalidium.CallOpts) -} - -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. -// -// Solidity: function owner() view returns(address) -func (_Cdkvalidium *CdkvalidiumCallerSession) Owner() (common.Address, error) { - return _Cdkvalidium.Contract.Owner(&_Cdkvalidium.CallOpts) -} - -// PendingAdmin is a free data retrieval call binding the contract method 0x26782247. -// -// Solidity: function pendingAdmin() view returns(address) -func (_Cdkvalidium *CdkvalidiumCaller) PendingAdmin(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "pendingAdmin") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// PendingAdmin is a free data retrieval call binding the contract method 0x26782247. -// -// Solidity: function pendingAdmin() view returns(address) -func (_Cdkvalidium *CdkvalidiumSession) PendingAdmin() (common.Address, error) { - return _Cdkvalidium.Contract.PendingAdmin(&_Cdkvalidium.CallOpts) -} - -// PendingAdmin is a free data retrieval call binding the contract method 0x26782247. -// -// Solidity: function pendingAdmin() view returns(address) -func (_Cdkvalidium *CdkvalidiumCallerSession) PendingAdmin() (common.Address, error) { - return _Cdkvalidium.Contract.PendingAdmin(&_Cdkvalidium.CallOpts) -} - -// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. -// -// Solidity: function pendingStateTimeout() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) PendingStateTimeout(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "pendingStateTimeout") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. -// -// Solidity: function pendingStateTimeout() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) PendingStateTimeout() (uint64, error) { - return _Cdkvalidium.Contract.PendingStateTimeout(&_Cdkvalidium.CallOpts) -} - -// PendingStateTimeout is a free data retrieval call binding the contract method 0xd939b315. -// -// Solidity: function pendingStateTimeout() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) PendingStateTimeout() (uint64, error) { - return _Cdkvalidium.Contract.PendingStateTimeout(&_Cdkvalidium.CallOpts) -} - -// PendingStateTransitions is a free data retrieval call binding the contract method 0x837a4738. -// -// Solidity: function pendingStateTransitions(uint256 ) view returns(uint64 timestamp, uint64 lastVerifiedBatch, bytes32 exitRoot, bytes32 stateRoot) -func (_Cdkvalidium *CdkvalidiumCaller) PendingStateTransitions(opts *bind.CallOpts, arg0 *big.Int) (struct { - Timestamp uint64 - LastVerifiedBatch uint64 - ExitRoot [32]byte - StateRoot [32]byte -}, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "pendingStateTransitions", arg0) - - outstruct := new(struct { - Timestamp uint64 - LastVerifiedBatch uint64 - ExitRoot [32]byte - StateRoot [32]byte - }) - if err != nil { - return *outstruct, err - } - - outstruct.Timestamp = *abi.ConvertType(out[0], new(uint64)).(*uint64) - outstruct.LastVerifiedBatch = *abi.ConvertType(out[1], new(uint64)).(*uint64) - outstruct.ExitRoot = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) - outstruct.StateRoot = *abi.ConvertType(out[3], new([32]byte)).(*[32]byte) - - return *outstruct, err - -} - -// PendingStateTransitions is a free data retrieval call binding the contract method 0x837a4738. -// -// Solidity: function pendingStateTransitions(uint256 ) view returns(uint64 timestamp, uint64 lastVerifiedBatch, bytes32 exitRoot, bytes32 stateRoot) -func (_Cdkvalidium *CdkvalidiumSession) PendingStateTransitions(arg0 *big.Int) (struct { - Timestamp uint64 - LastVerifiedBatch uint64 - ExitRoot [32]byte - StateRoot [32]byte -}, error) { - return _Cdkvalidium.Contract.PendingStateTransitions(&_Cdkvalidium.CallOpts, arg0) -} - -// PendingStateTransitions is a free data retrieval call binding the contract method 0x837a4738. -// -// Solidity: function pendingStateTransitions(uint256 ) view returns(uint64 timestamp, uint64 lastVerifiedBatch, bytes32 exitRoot, bytes32 stateRoot) -func (_Cdkvalidium *CdkvalidiumCallerSession) PendingStateTransitions(arg0 *big.Int) (struct { - Timestamp uint64 - LastVerifiedBatch uint64 - ExitRoot [32]byte - StateRoot [32]byte -}, error) { - return _Cdkvalidium.Contract.PendingStateTransitions(&_Cdkvalidium.CallOpts, arg0) -} - -// RollupVerifier is a free data retrieval call binding the contract method 0xe8bf92ed. -// -// Solidity: function rollupVerifier() view returns(address) -func (_Cdkvalidium *CdkvalidiumCaller) RollupVerifier(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "rollupVerifier") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// RollupVerifier is a free data retrieval call binding the contract method 0xe8bf92ed. -// -// Solidity: function rollupVerifier() view returns(address) -func (_Cdkvalidium *CdkvalidiumSession) RollupVerifier() (common.Address, error) { - return _Cdkvalidium.Contract.RollupVerifier(&_Cdkvalidium.CallOpts) -} - -// RollupVerifier is a free data retrieval call binding the contract method 0xe8bf92ed. -// -// Solidity: function rollupVerifier() view returns(address) -func (_Cdkvalidium *CdkvalidiumCallerSession) RollupVerifier() (common.Address, error) { - return _Cdkvalidium.Contract.RollupVerifier(&_Cdkvalidium.CallOpts) -} - -// SequencedBatches is a free data retrieval call binding the contract method 0xb4d63f58. -// -// Solidity: function sequencedBatches(uint64 ) view returns(bytes32 accInputHash, uint64 sequencedTimestamp, uint64 previousLastBatchSequenced) -func (_Cdkvalidium *CdkvalidiumCaller) SequencedBatches(opts *bind.CallOpts, arg0 uint64) (struct { - AccInputHash [32]byte - SequencedTimestamp uint64 - PreviousLastBatchSequenced uint64 -}, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "sequencedBatches", arg0) - - outstruct := new(struct { - AccInputHash [32]byte - SequencedTimestamp uint64 - PreviousLastBatchSequenced uint64 - }) - if err != nil { - return *outstruct, err - } - - outstruct.AccInputHash = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - outstruct.SequencedTimestamp = *abi.ConvertType(out[1], new(uint64)).(*uint64) - outstruct.PreviousLastBatchSequenced = *abi.ConvertType(out[2], new(uint64)).(*uint64) - - return *outstruct, err - -} - -// SequencedBatches is a free data retrieval call binding the contract method 0xb4d63f58. -// -// Solidity: function sequencedBatches(uint64 ) view returns(bytes32 accInputHash, uint64 sequencedTimestamp, uint64 previousLastBatchSequenced) -func (_Cdkvalidium *CdkvalidiumSession) SequencedBatches(arg0 uint64) (struct { - AccInputHash [32]byte - SequencedTimestamp uint64 - PreviousLastBatchSequenced uint64 -}, error) { - return _Cdkvalidium.Contract.SequencedBatches(&_Cdkvalidium.CallOpts, arg0) -} - -// SequencedBatches is a free data retrieval call binding the contract method 0xb4d63f58. -// -// Solidity: function sequencedBatches(uint64 ) view returns(bytes32 accInputHash, uint64 sequencedTimestamp, uint64 previousLastBatchSequenced) -func (_Cdkvalidium *CdkvalidiumCallerSession) SequencedBatches(arg0 uint64) (struct { - AccInputHash [32]byte - SequencedTimestamp uint64 - PreviousLastBatchSequenced uint64 -}, error) { - return _Cdkvalidium.Contract.SequencedBatches(&_Cdkvalidium.CallOpts, arg0) -} - -// TrustedAggregator is a free data retrieval call binding the contract method 0x29878983. -// -// Solidity: function trustedAggregator() view returns(address) -func (_Cdkvalidium *CdkvalidiumCaller) TrustedAggregator(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "trustedAggregator") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TrustedAggregator is a free data retrieval call binding the contract method 0x29878983. -// -// Solidity: function trustedAggregator() view returns(address) -func (_Cdkvalidium *CdkvalidiumSession) TrustedAggregator() (common.Address, error) { - return _Cdkvalidium.Contract.TrustedAggregator(&_Cdkvalidium.CallOpts) -} - -// TrustedAggregator is a free data retrieval call binding the contract method 0x29878983. -// -// Solidity: function trustedAggregator() view returns(address) -func (_Cdkvalidium *CdkvalidiumCallerSession) TrustedAggregator() (common.Address, error) { - return _Cdkvalidium.Contract.TrustedAggregator(&_Cdkvalidium.CallOpts) -} - -// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. -// -// Solidity: function trustedAggregatorTimeout() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) TrustedAggregatorTimeout(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "trustedAggregatorTimeout") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. -// -// Solidity: function trustedAggregatorTimeout() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) TrustedAggregatorTimeout() (uint64, error) { - return _Cdkvalidium.Contract.TrustedAggregatorTimeout(&_Cdkvalidium.CallOpts) -} - -// TrustedAggregatorTimeout is a free data retrieval call binding the contract method 0x841b24d7. -// -// Solidity: function trustedAggregatorTimeout() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) TrustedAggregatorTimeout() (uint64, error) { - return _Cdkvalidium.Contract.TrustedAggregatorTimeout(&_Cdkvalidium.CallOpts) -} - -// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. -// -// Solidity: function trustedSequencer() view returns(address) -func (_Cdkvalidium *CdkvalidiumCaller) TrustedSequencer(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "trustedSequencer") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. -// -// Solidity: function trustedSequencer() view returns(address) -func (_Cdkvalidium *CdkvalidiumSession) TrustedSequencer() (common.Address, error) { - return _Cdkvalidium.Contract.TrustedSequencer(&_Cdkvalidium.CallOpts) -} - -// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. -// -// Solidity: function trustedSequencer() view returns(address) -func (_Cdkvalidium *CdkvalidiumCallerSession) TrustedSequencer() (common.Address, error) { - return _Cdkvalidium.Contract.TrustedSequencer(&_Cdkvalidium.CallOpts) -} - -// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. -// -// Solidity: function trustedSequencerURL() view returns(string) -func (_Cdkvalidium *CdkvalidiumCaller) TrustedSequencerURL(opts *bind.CallOpts) (string, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "trustedSequencerURL") - - if err != nil { - return *new(string), err - } - - out0 := *abi.ConvertType(out[0], new(string)).(*string) - - return out0, err - -} - -// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. -// -// Solidity: function trustedSequencerURL() view returns(string) -func (_Cdkvalidium *CdkvalidiumSession) TrustedSequencerURL() (string, error) { - return _Cdkvalidium.Contract.TrustedSequencerURL(&_Cdkvalidium.CallOpts) -} - -// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. -// -// Solidity: function trustedSequencerURL() view returns(string) -func (_Cdkvalidium *CdkvalidiumCallerSession) TrustedSequencerURL() (string, error) { - return _Cdkvalidium.Contract.TrustedSequencerURL(&_Cdkvalidium.CallOpts) -} - -// VerifyBatchTimeTarget is a free data retrieval call binding the contract method 0x0a0d9fbe. -// -// Solidity: function verifyBatchTimeTarget() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCaller) VerifyBatchTimeTarget(opts *bind.CallOpts) (uint64, error) { - var out []interface{} - err := _Cdkvalidium.contract.Call(opts, &out, "verifyBatchTimeTarget") - - if err != nil { - return *new(uint64), err - } - - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) - - return out0, err - -} - -// VerifyBatchTimeTarget is a free data retrieval call binding the contract method 0x0a0d9fbe. -// -// Solidity: function verifyBatchTimeTarget() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumSession) VerifyBatchTimeTarget() (uint64, error) { - return _Cdkvalidium.Contract.VerifyBatchTimeTarget(&_Cdkvalidium.CallOpts) -} - -// VerifyBatchTimeTarget is a free data retrieval call binding the contract method 0x0a0d9fbe. -// -// Solidity: function verifyBatchTimeTarget() view returns(uint64) -func (_Cdkvalidium *CdkvalidiumCallerSession) VerifyBatchTimeTarget() (uint64, error) { - return _Cdkvalidium.Contract.VerifyBatchTimeTarget(&_Cdkvalidium.CallOpts) -} - -// AcceptAdminRole is a paid mutator transaction binding the contract method 0x8c3d7301. -// -// Solidity: function acceptAdminRole() returns() -func (_Cdkvalidium *CdkvalidiumTransactor) AcceptAdminRole(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "acceptAdminRole") -} - -// AcceptAdminRole is a paid mutator transaction binding the contract method 0x8c3d7301. -// -// Solidity: function acceptAdminRole() returns() -func (_Cdkvalidium *CdkvalidiumSession) AcceptAdminRole() (*types.Transaction, error) { - return _Cdkvalidium.Contract.AcceptAdminRole(&_Cdkvalidium.TransactOpts) -} - -// AcceptAdminRole is a paid mutator transaction binding the contract method 0x8c3d7301. -// -// Solidity: function acceptAdminRole() returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) AcceptAdminRole() (*types.Transaction, error) { - return _Cdkvalidium.Contract.AcceptAdminRole(&_Cdkvalidium.TransactOpts) -} - -// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x7215541a. -// -// Solidity: function activateEmergencyState(uint64 sequencedBatchNum) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) ActivateEmergencyState(opts *bind.TransactOpts, sequencedBatchNum uint64) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "activateEmergencyState", sequencedBatchNum) -} - -// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x7215541a. -// -// Solidity: function activateEmergencyState(uint64 sequencedBatchNum) returns() -func (_Cdkvalidium *CdkvalidiumSession) ActivateEmergencyState(sequencedBatchNum uint64) (*types.Transaction, error) { - return _Cdkvalidium.Contract.ActivateEmergencyState(&_Cdkvalidium.TransactOpts, sequencedBatchNum) -} - -// ActivateEmergencyState is a paid mutator transaction binding the contract method 0x7215541a. -// -// Solidity: function activateEmergencyState(uint64 sequencedBatchNum) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) ActivateEmergencyState(sequencedBatchNum uint64) (*types.Transaction, error) { - return _Cdkvalidium.Contract.ActivateEmergencyState(&_Cdkvalidium.TransactOpts, sequencedBatchNum) -} - -// ActivateForceBatches is a paid mutator transaction binding the contract method 0x5ec91958. -// -// Solidity: function activateForceBatches() returns() -func (_Cdkvalidium *CdkvalidiumTransactor) ActivateForceBatches(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "activateForceBatches") -} - -// ActivateForceBatches is a paid mutator transaction binding the contract method 0x5ec91958. -// -// Solidity: function activateForceBatches() returns() -func (_Cdkvalidium *CdkvalidiumSession) ActivateForceBatches() (*types.Transaction, error) { - return _Cdkvalidium.Contract.ActivateForceBatches(&_Cdkvalidium.TransactOpts) -} - -// ActivateForceBatches is a paid mutator transaction binding the contract method 0x5ec91958. -// -// Solidity: function activateForceBatches() returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) ActivateForceBatches() (*types.Transaction, error) { - return _Cdkvalidium.Contract.ActivateForceBatches(&_Cdkvalidium.TransactOpts) -} - -// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x4a910e6a. -// -// Solidity: function consolidatePendingState(uint64 pendingStateNum) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) ConsolidatePendingState(opts *bind.TransactOpts, pendingStateNum uint64) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "consolidatePendingState", pendingStateNum) -} - -// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x4a910e6a. -// -// Solidity: function consolidatePendingState(uint64 pendingStateNum) returns() -func (_Cdkvalidium *CdkvalidiumSession) ConsolidatePendingState(pendingStateNum uint64) (*types.Transaction, error) { - return _Cdkvalidium.Contract.ConsolidatePendingState(&_Cdkvalidium.TransactOpts, pendingStateNum) -} - -// ConsolidatePendingState is a paid mutator transaction binding the contract method 0x4a910e6a. -// -// Solidity: function consolidatePendingState(uint64 pendingStateNum) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) ConsolidatePendingState(pendingStateNum uint64) (*types.Transaction, error) { - return _Cdkvalidium.Contract.ConsolidatePendingState(&_Cdkvalidium.TransactOpts, pendingStateNum) -} - -// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. -// -// Solidity: function deactivateEmergencyState() returns() -func (_Cdkvalidium *CdkvalidiumTransactor) DeactivateEmergencyState(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "deactivateEmergencyState") -} - -// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. -// -// Solidity: function deactivateEmergencyState() returns() -func (_Cdkvalidium *CdkvalidiumSession) DeactivateEmergencyState() (*types.Transaction, error) { - return _Cdkvalidium.Contract.DeactivateEmergencyState(&_Cdkvalidium.TransactOpts) -} - -// DeactivateEmergencyState is a paid mutator transaction binding the contract method 0xdbc16976. -// -// Solidity: function deactivateEmergencyState() returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) DeactivateEmergencyState() (*types.Transaction, error) { - return _Cdkvalidium.Contract.DeactivateEmergencyState(&_Cdkvalidium.TransactOpts) -} - -// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. -// -// Solidity: function forceBatch(bytes transactions, uint256 maticAmount) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) ForceBatch(opts *bind.TransactOpts, transactions []byte, maticAmount *big.Int) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "forceBatch", transactions, maticAmount) -} - -// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. -// -// Solidity: function forceBatch(bytes transactions, uint256 maticAmount) returns() -func (_Cdkvalidium *CdkvalidiumSession) ForceBatch(transactions []byte, maticAmount *big.Int) (*types.Transaction, error) { - return _Cdkvalidium.Contract.ForceBatch(&_Cdkvalidium.TransactOpts, transactions, maticAmount) -} - -// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. -// -// Solidity: function forceBatch(bytes transactions, uint256 maticAmount) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) ForceBatch(transactions []byte, maticAmount *big.Int) (*types.Transaction, error) { - return _Cdkvalidium.Contract.ForceBatch(&_Cdkvalidium.TransactOpts, transactions, maticAmount) -} - -// Initialize is a paid mutator transaction binding the contract method 0xd2e129f9. -// -// Solidity: function initialize((address,address,uint64,address,uint64) initializePackedParameters, bytes32 genesisRoot, string _trustedSequencerURL, string _networkName, string _version) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) Initialize(opts *bind.TransactOpts, initializePackedParameters CDKValidiumInitializePackedParameters, genesisRoot [32]byte, _trustedSequencerURL string, _networkName string, _version string) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "initialize", initializePackedParameters, genesisRoot, _trustedSequencerURL, _networkName, _version) -} - -// Initialize is a paid mutator transaction binding the contract method 0xd2e129f9. -// -// Solidity: function initialize((address,address,uint64,address,uint64) initializePackedParameters, bytes32 genesisRoot, string _trustedSequencerURL, string _networkName, string _version) returns() -func (_Cdkvalidium *CdkvalidiumSession) Initialize(initializePackedParameters CDKValidiumInitializePackedParameters, genesisRoot [32]byte, _trustedSequencerURL string, _networkName string, _version string) (*types.Transaction, error) { - return _Cdkvalidium.Contract.Initialize(&_Cdkvalidium.TransactOpts, initializePackedParameters, genesisRoot, _trustedSequencerURL, _networkName, _version) -} - -// Initialize is a paid mutator transaction binding the contract method 0xd2e129f9. -// -// Solidity: function initialize((address,address,uint64,address,uint64) initializePackedParameters, bytes32 genesisRoot, string _trustedSequencerURL, string _networkName, string _version) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) Initialize(initializePackedParameters CDKValidiumInitializePackedParameters, genesisRoot [32]byte, _trustedSequencerURL string, _networkName string, _version string) (*types.Transaction, error) { - return _Cdkvalidium.Contract.Initialize(&_Cdkvalidium.TransactOpts, initializePackedParameters, genesisRoot, _trustedSequencerURL, _networkName, _version) -} - -// OverridePendingState is a paid mutator transaction binding the contract method 0x2c1f816a. -// -// Solidity: function overridePendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) OverridePendingState(opts *bind.TransactOpts, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "overridePendingState", initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// OverridePendingState is a paid mutator transaction binding the contract method 0x2c1f816a. -// -// Solidity: function overridePendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_Cdkvalidium *CdkvalidiumSession) OverridePendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _Cdkvalidium.Contract.OverridePendingState(&_Cdkvalidium.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// OverridePendingState is a paid mutator transaction binding the contract method 0x2c1f816a. -// -// Solidity: function overridePendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) OverridePendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _Cdkvalidium.Contract.OverridePendingState(&_Cdkvalidium.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x9aa972a3. -// -// Solidity: function proveNonDeterministicPendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) ProveNonDeterministicPendingState(opts *bind.TransactOpts, initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "proveNonDeterministicPendingState", initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x9aa972a3. -// -// Solidity: function proveNonDeterministicPendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_Cdkvalidium *CdkvalidiumSession) ProveNonDeterministicPendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _Cdkvalidium.Contract.ProveNonDeterministicPendingState(&_Cdkvalidium.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// ProveNonDeterministicPendingState is a paid mutator transaction binding the contract method 0x9aa972a3. -// -// Solidity: function proveNonDeterministicPendingState(uint64 initPendingStateNum, uint64 finalPendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) ProveNonDeterministicPendingState(initPendingStateNum uint64, finalPendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _Cdkvalidium.Contract.ProveNonDeterministicPendingState(&_Cdkvalidium.TransactOpts, initPendingStateNum, finalPendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Cdkvalidium *CdkvalidiumTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "renounceOwnership") -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Cdkvalidium *CdkvalidiumSession) RenounceOwnership() (*types.Transaction, error) { - return _Cdkvalidium.Contract.RenounceOwnership(&_Cdkvalidium.TransactOpts) -} - -// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. -// -// Solidity: function renounceOwnership() returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) RenounceOwnership() (*types.Transaction, error) { - return _Cdkvalidium.Contract.RenounceOwnership(&_Cdkvalidium.TransactOpts) -} - -// SequenceBatches is a paid mutator transaction binding the contract method 0x438a5399. -// -// Solidity: function sequenceBatches((bytes32,bytes32,uint64,uint64)[] batches, address l2Coinbase, bytes signaturesAndAddrs) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) SequenceBatches(opts *bind.TransactOpts, batches []CDKValidiumBatchData, l2Coinbase common.Address, signaturesAndAddrs []byte) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "sequenceBatches", batches, l2Coinbase, signaturesAndAddrs) -} - -// SequenceBatches is a paid mutator transaction binding the contract method 0x438a5399. -// -// Solidity: function sequenceBatches((bytes32,bytes32,uint64,uint64)[] batches, address l2Coinbase, bytes signaturesAndAddrs) returns() -func (_Cdkvalidium *CdkvalidiumSession) SequenceBatches(batches []CDKValidiumBatchData, l2Coinbase common.Address, signaturesAndAddrs []byte) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SequenceBatches(&_Cdkvalidium.TransactOpts, batches, l2Coinbase, signaturesAndAddrs) -} - -// SequenceBatches is a paid mutator transaction binding the contract method 0x438a5399. -// -// Solidity: function sequenceBatches((bytes32,bytes32,uint64,uint64)[] batches, address l2Coinbase, bytes signaturesAndAddrs) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) SequenceBatches(batches []CDKValidiumBatchData, l2Coinbase common.Address, signaturesAndAddrs []byte) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SequenceBatches(&_Cdkvalidium.TransactOpts, batches, l2Coinbase, signaturesAndAddrs) -} - -// SequenceForceBatches is a paid mutator transaction binding the contract method 0xd8d1091b. -// -// Solidity: function sequenceForceBatches((bytes,bytes32,uint64)[] batches) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) SequenceForceBatches(opts *bind.TransactOpts, batches []CDKValidiumForcedBatchData) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "sequenceForceBatches", batches) -} - -// SequenceForceBatches is a paid mutator transaction binding the contract method 0xd8d1091b. -// -// Solidity: function sequenceForceBatches((bytes,bytes32,uint64)[] batches) returns() -func (_Cdkvalidium *CdkvalidiumSession) SequenceForceBatches(batches []CDKValidiumForcedBatchData) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SequenceForceBatches(&_Cdkvalidium.TransactOpts, batches) -} - -// SequenceForceBatches is a paid mutator transaction binding the contract method 0xd8d1091b. -// -// Solidity: function sequenceForceBatches((bytes,bytes32,uint64)[] batches) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) SequenceForceBatches(batches []CDKValidiumForcedBatchData) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SequenceForceBatches(&_Cdkvalidium.TransactOpts, batches) -} - -// SetForceBatchTimeout is a paid mutator transaction binding the contract method 0x4e487706. -// -// Solidity: function setForceBatchTimeout(uint64 newforceBatchTimeout) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) SetForceBatchTimeout(opts *bind.TransactOpts, newforceBatchTimeout uint64) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "setForceBatchTimeout", newforceBatchTimeout) -} - -// SetForceBatchTimeout is a paid mutator transaction binding the contract method 0x4e487706. -// -// Solidity: function setForceBatchTimeout(uint64 newforceBatchTimeout) returns() -func (_Cdkvalidium *CdkvalidiumSession) SetForceBatchTimeout(newforceBatchTimeout uint64) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetForceBatchTimeout(&_Cdkvalidium.TransactOpts, newforceBatchTimeout) -} - -// SetForceBatchTimeout is a paid mutator transaction binding the contract method 0x4e487706. -// -// Solidity: function setForceBatchTimeout(uint64 newforceBatchTimeout) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) SetForceBatchTimeout(newforceBatchTimeout uint64) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetForceBatchTimeout(&_Cdkvalidium.TransactOpts, newforceBatchTimeout) -} - -// SetMultiplierBatchFee is a paid mutator transaction binding the contract method 0x1816b7e5. -// -// Solidity: function setMultiplierBatchFee(uint16 newMultiplierBatchFee) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) SetMultiplierBatchFee(opts *bind.TransactOpts, newMultiplierBatchFee uint16) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "setMultiplierBatchFee", newMultiplierBatchFee) -} - -// SetMultiplierBatchFee is a paid mutator transaction binding the contract method 0x1816b7e5. -// -// Solidity: function setMultiplierBatchFee(uint16 newMultiplierBatchFee) returns() -func (_Cdkvalidium *CdkvalidiumSession) SetMultiplierBatchFee(newMultiplierBatchFee uint16) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetMultiplierBatchFee(&_Cdkvalidium.TransactOpts, newMultiplierBatchFee) -} - -// SetMultiplierBatchFee is a paid mutator transaction binding the contract method 0x1816b7e5. -// -// Solidity: function setMultiplierBatchFee(uint16 newMultiplierBatchFee) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) SetMultiplierBatchFee(newMultiplierBatchFee uint16) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetMultiplierBatchFee(&_Cdkvalidium.TransactOpts, newMultiplierBatchFee) -} - -// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. -// -// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) SetPendingStateTimeout(opts *bind.TransactOpts, newPendingStateTimeout uint64) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "setPendingStateTimeout", newPendingStateTimeout) -} - -// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. -// -// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() -func (_Cdkvalidium *CdkvalidiumSession) SetPendingStateTimeout(newPendingStateTimeout uint64) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetPendingStateTimeout(&_Cdkvalidium.TransactOpts, newPendingStateTimeout) -} - -// SetPendingStateTimeout is a paid mutator transaction binding the contract method 0x9c9f3dfe. -// -// Solidity: function setPendingStateTimeout(uint64 newPendingStateTimeout) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) SetPendingStateTimeout(newPendingStateTimeout uint64) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetPendingStateTimeout(&_Cdkvalidium.TransactOpts, newPendingStateTimeout) -} - -// SetTrustedAggregator is a paid mutator transaction binding the contract method 0xf14916d6. -// -// Solidity: function setTrustedAggregator(address newTrustedAggregator) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) SetTrustedAggregator(opts *bind.TransactOpts, newTrustedAggregator common.Address) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "setTrustedAggregator", newTrustedAggregator) -} - -// SetTrustedAggregator is a paid mutator transaction binding the contract method 0xf14916d6. -// -// Solidity: function setTrustedAggregator(address newTrustedAggregator) returns() -func (_Cdkvalidium *CdkvalidiumSession) SetTrustedAggregator(newTrustedAggregator common.Address) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetTrustedAggregator(&_Cdkvalidium.TransactOpts, newTrustedAggregator) -} - -// SetTrustedAggregator is a paid mutator transaction binding the contract method 0xf14916d6. -// -// Solidity: function setTrustedAggregator(address newTrustedAggregator) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) SetTrustedAggregator(newTrustedAggregator common.Address) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetTrustedAggregator(&_Cdkvalidium.TransactOpts, newTrustedAggregator) -} - -// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. -// -// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) SetTrustedAggregatorTimeout(opts *bind.TransactOpts, newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "setTrustedAggregatorTimeout", newTrustedAggregatorTimeout) -} - -// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. -// -// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() -func (_Cdkvalidium *CdkvalidiumSession) SetTrustedAggregatorTimeout(newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetTrustedAggregatorTimeout(&_Cdkvalidium.TransactOpts, newTrustedAggregatorTimeout) -} - -// SetTrustedAggregatorTimeout is a paid mutator transaction binding the contract method 0x394218e9. -// -// Solidity: function setTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) SetTrustedAggregatorTimeout(newTrustedAggregatorTimeout uint64) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetTrustedAggregatorTimeout(&_Cdkvalidium.TransactOpts, newTrustedAggregatorTimeout) -} - -// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. -// -// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) SetTrustedSequencer(opts *bind.TransactOpts, newTrustedSequencer common.Address) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "setTrustedSequencer", newTrustedSequencer) -} - -// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. -// -// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() -func (_Cdkvalidium *CdkvalidiumSession) SetTrustedSequencer(newTrustedSequencer common.Address) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetTrustedSequencer(&_Cdkvalidium.TransactOpts, newTrustedSequencer) -} - -// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. -// -// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) SetTrustedSequencer(newTrustedSequencer common.Address) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetTrustedSequencer(&_Cdkvalidium.TransactOpts, newTrustedSequencer) -} - -// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. -// -// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) SetTrustedSequencerURL(opts *bind.TransactOpts, newTrustedSequencerURL string) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "setTrustedSequencerURL", newTrustedSequencerURL) -} - -// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. -// -// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() -func (_Cdkvalidium *CdkvalidiumSession) SetTrustedSequencerURL(newTrustedSequencerURL string) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetTrustedSequencerURL(&_Cdkvalidium.TransactOpts, newTrustedSequencerURL) -} - -// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. -// -// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) SetTrustedSequencerURL(newTrustedSequencerURL string) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetTrustedSequencerURL(&_Cdkvalidium.TransactOpts, newTrustedSequencerURL) -} - -// SetVerifyBatchTimeTarget is a paid mutator transaction binding the contract method 0xa066215c. -// -// Solidity: function setVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) SetVerifyBatchTimeTarget(opts *bind.TransactOpts, newVerifyBatchTimeTarget uint64) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "setVerifyBatchTimeTarget", newVerifyBatchTimeTarget) -} - -// SetVerifyBatchTimeTarget is a paid mutator transaction binding the contract method 0xa066215c. -// -// Solidity: function setVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) returns() -func (_Cdkvalidium *CdkvalidiumSession) SetVerifyBatchTimeTarget(newVerifyBatchTimeTarget uint64) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetVerifyBatchTimeTarget(&_Cdkvalidium.TransactOpts, newVerifyBatchTimeTarget) -} - -// SetVerifyBatchTimeTarget is a paid mutator transaction binding the contract method 0xa066215c. -// -// Solidity: function setVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) SetVerifyBatchTimeTarget(newVerifyBatchTimeTarget uint64) (*types.Transaction, error) { - return _Cdkvalidium.Contract.SetVerifyBatchTimeTarget(&_Cdkvalidium.TransactOpts, newVerifyBatchTimeTarget) -} - -// TransferAdminRole is a paid mutator transaction binding the contract method 0xada8f919. -// -// Solidity: function transferAdminRole(address newPendingAdmin) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) TransferAdminRole(opts *bind.TransactOpts, newPendingAdmin common.Address) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "transferAdminRole", newPendingAdmin) -} - -// TransferAdminRole is a paid mutator transaction binding the contract method 0xada8f919. -// -// Solidity: function transferAdminRole(address newPendingAdmin) returns() -func (_Cdkvalidium *CdkvalidiumSession) TransferAdminRole(newPendingAdmin common.Address) (*types.Transaction, error) { - return _Cdkvalidium.Contract.TransferAdminRole(&_Cdkvalidium.TransactOpts, newPendingAdmin) -} - -// TransferAdminRole is a paid mutator transaction binding the contract method 0xada8f919. -// -// Solidity: function transferAdminRole(address newPendingAdmin) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) TransferAdminRole(newPendingAdmin common.Address) (*types.Transaction, error) { - return _Cdkvalidium.Contract.TransferAdminRole(&_Cdkvalidium.TransactOpts, newPendingAdmin) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "transferOwnership", newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Cdkvalidium *CdkvalidiumSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Cdkvalidium.Contract.TransferOwnership(&_Cdkvalidium.TransactOpts, newOwner) -} - -// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. -// -// Solidity: function transferOwnership(address newOwner) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { - return _Cdkvalidium.Contract.TransferOwnership(&_Cdkvalidium.TransactOpts, newOwner) -} - -// VerifyBatches is a paid mutator transaction binding the contract method 0x621dd411. -// -// Solidity: function verifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) VerifyBatches(opts *bind.TransactOpts, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "verifyBatches", pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// VerifyBatches is a paid mutator transaction binding the contract method 0x621dd411. -// -// Solidity: function verifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_Cdkvalidium *CdkvalidiumSession) VerifyBatches(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _Cdkvalidium.Contract.VerifyBatches(&_Cdkvalidium.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// VerifyBatches is a paid mutator transaction binding the contract method 0x621dd411. -// -// Solidity: function verifyBatches(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) VerifyBatches(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _Cdkvalidium.Contract.VerifyBatches(&_Cdkvalidium.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// VerifyBatchesTrustedAggregator is a paid mutator transaction binding the contract method 0x2b0006fa. -// -// Solidity: function verifyBatchesTrustedAggregator(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_Cdkvalidium *CdkvalidiumTransactor) VerifyBatchesTrustedAggregator(opts *bind.TransactOpts, pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _Cdkvalidium.contract.Transact(opts, "verifyBatchesTrustedAggregator", pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// VerifyBatchesTrustedAggregator is a paid mutator transaction binding the contract method 0x2b0006fa. -// -// Solidity: function verifyBatchesTrustedAggregator(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_Cdkvalidium *CdkvalidiumSession) VerifyBatchesTrustedAggregator(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _Cdkvalidium.Contract.VerifyBatchesTrustedAggregator(&_Cdkvalidium.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// VerifyBatchesTrustedAggregator is a paid mutator transaction binding the contract method 0x2b0006fa. -// -// Solidity: function verifyBatchesTrustedAggregator(uint64 pendingStateNum, uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, bytes32 newStateRoot, bytes32[24] proof) returns() -func (_Cdkvalidium *CdkvalidiumTransactorSession) VerifyBatchesTrustedAggregator(pendingStateNum uint64, initNumBatch uint64, finalNewBatch uint64, newLocalExitRoot [32]byte, newStateRoot [32]byte, proof [24][32]byte) (*types.Transaction, error) { - return _Cdkvalidium.Contract.VerifyBatchesTrustedAggregator(&_Cdkvalidium.TransactOpts, pendingStateNum, initNumBatch, finalNewBatch, newLocalExitRoot, newStateRoot, proof) -} - -// CdkvalidiumAcceptAdminRoleIterator is returned from FilterAcceptAdminRole and is used to iterate over the raw logs and unpacked data for AcceptAdminRole events raised by the Cdkvalidium contract. -type CdkvalidiumAcceptAdminRoleIterator struct { - Event *CdkvalidiumAcceptAdminRole // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumAcceptAdminRoleIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumAcceptAdminRole) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumAcceptAdminRole) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumAcceptAdminRoleIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumAcceptAdminRoleIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumAcceptAdminRole represents a AcceptAdminRole event raised by the Cdkvalidium contract. -type CdkvalidiumAcceptAdminRole struct { - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAcceptAdminRole is a free log retrieval operation binding the contract event 0x056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e. -// -// Solidity: event AcceptAdminRole(address newAdmin) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterAcceptAdminRole(opts *bind.FilterOpts) (*CdkvalidiumAcceptAdminRoleIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "AcceptAdminRole") - if err != nil { - return nil, err - } - return &CdkvalidiumAcceptAdminRoleIterator{contract: _Cdkvalidium.contract, event: "AcceptAdminRole", logs: logs, sub: sub}, nil -} - -// WatchAcceptAdminRole is a free log subscription operation binding the contract event 0x056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e. -// -// Solidity: event AcceptAdminRole(address newAdmin) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchAcceptAdminRole(opts *bind.WatchOpts, sink chan<- *CdkvalidiumAcceptAdminRole) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "AcceptAdminRole") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumAcceptAdminRole) - if err := _Cdkvalidium.contract.UnpackLog(event, "AcceptAdminRole", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAcceptAdminRole is a log parse operation binding the contract event 0x056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e. -// -// Solidity: event AcceptAdminRole(address newAdmin) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseAcceptAdminRole(log types.Log) (*CdkvalidiumAcceptAdminRole, error) { - event := new(CdkvalidiumAcceptAdminRole) - if err := _Cdkvalidium.contract.UnpackLog(event, "AcceptAdminRole", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumActivateForceBatchesIterator is returned from FilterActivateForceBatches and is used to iterate over the raw logs and unpacked data for ActivateForceBatches events raised by the Cdkvalidium contract. -type CdkvalidiumActivateForceBatchesIterator struct { - Event *CdkvalidiumActivateForceBatches // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumActivateForceBatchesIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumActivateForceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumActivateForceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumActivateForceBatchesIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumActivateForceBatchesIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumActivateForceBatches represents a ActivateForceBatches event raised by the Cdkvalidium contract. -type CdkvalidiumActivateForceBatches struct { - Raw types.Log // Blockchain specific contextual infos -} - -// FilterActivateForceBatches is a free log retrieval operation binding the contract event 0x854dd6ce5a1445c4c54388b21cffd11cf5bba1b9e763aec48ce3da75d617412f. -// -// Solidity: event ActivateForceBatches() -func (_Cdkvalidium *CdkvalidiumFilterer) FilterActivateForceBatches(opts *bind.FilterOpts) (*CdkvalidiumActivateForceBatchesIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "ActivateForceBatches") - if err != nil { - return nil, err - } - return &CdkvalidiumActivateForceBatchesIterator{contract: _Cdkvalidium.contract, event: "ActivateForceBatches", logs: logs, sub: sub}, nil -} - -// WatchActivateForceBatches is a free log subscription operation binding the contract event 0x854dd6ce5a1445c4c54388b21cffd11cf5bba1b9e763aec48ce3da75d617412f. -// -// Solidity: event ActivateForceBatches() -func (_Cdkvalidium *CdkvalidiumFilterer) WatchActivateForceBatches(opts *bind.WatchOpts, sink chan<- *CdkvalidiumActivateForceBatches) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "ActivateForceBatches") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumActivateForceBatches) - if err := _Cdkvalidium.contract.UnpackLog(event, "ActivateForceBatches", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseActivateForceBatches is a log parse operation binding the contract event 0x854dd6ce5a1445c4c54388b21cffd11cf5bba1b9e763aec48ce3da75d617412f. -// -// Solidity: event ActivateForceBatches() -func (_Cdkvalidium *CdkvalidiumFilterer) ParseActivateForceBatches(log types.Log) (*CdkvalidiumActivateForceBatches, error) { - event := new(CdkvalidiumActivateForceBatches) - if err := _Cdkvalidium.contract.UnpackLog(event, "ActivateForceBatches", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumConsolidatePendingStateIterator is returned from FilterConsolidatePendingState and is used to iterate over the raw logs and unpacked data for ConsolidatePendingState events raised by the Cdkvalidium contract. -type CdkvalidiumConsolidatePendingStateIterator struct { - Event *CdkvalidiumConsolidatePendingState // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumConsolidatePendingStateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumConsolidatePendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumConsolidatePendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumConsolidatePendingStateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumConsolidatePendingStateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumConsolidatePendingState represents a ConsolidatePendingState event raised by the Cdkvalidium contract. -type CdkvalidiumConsolidatePendingState struct { - NumBatch uint64 - StateRoot [32]byte - PendingStateNum uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterConsolidatePendingState is a free log retrieval operation binding the contract event 0x328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e. -// -// Solidity: event ConsolidatePendingState(uint64 indexed numBatch, bytes32 stateRoot, uint64 indexed pendingStateNum) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterConsolidatePendingState(opts *bind.FilterOpts, numBatch []uint64, pendingStateNum []uint64) (*CdkvalidiumConsolidatePendingStateIterator, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var pendingStateNumRule []interface{} - for _, pendingStateNumItem := range pendingStateNum { - pendingStateNumRule = append(pendingStateNumRule, pendingStateNumItem) - } - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "ConsolidatePendingState", numBatchRule, pendingStateNumRule) - if err != nil { - return nil, err - } - return &CdkvalidiumConsolidatePendingStateIterator{contract: _Cdkvalidium.contract, event: "ConsolidatePendingState", logs: logs, sub: sub}, nil -} - -// WatchConsolidatePendingState is a free log subscription operation binding the contract event 0x328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e. -// -// Solidity: event ConsolidatePendingState(uint64 indexed numBatch, bytes32 stateRoot, uint64 indexed pendingStateNum) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchConsolidatePendingState(opts *bind.WatchOpts, sink chan<- *CdkvalidiumConsolidatePendingState, numBatch []uint64, pendingStateNum []uint64) (event.Subscription, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var pendingStateNumRule []interface{} - for _, pendingStateNumItem := range pendingStateNum { - pendingStateNumRule = append(pendingStateNumRule, pendingStateNumItem) - } - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "ConsolidatePendingState", numBatchRule, pendingStateNumRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumConsolidatePendingState) - if err := _Cdkvalidium.contract.UnpackLog(event, "ConsolidatePendingState", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseConsolidatePendingState is a log parse operation binding the contract event 0x328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e. -// -// Solidity: event ConsolidatePendingState(uint64 indexed numBatch, bytes32 stateRoot, uint64 indexed pendingStateNum) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseConsolidatePendingState(log types.Log) (*CdkvalidiumConsolidatePendingState, error) { - event := new(CdkvalidiumConsolidatePendingState) - if err := _Cdkvalidium.contract.UnpackLog(event, "ConsolidatePendingState", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumEmergencyStateActivatedIterator is returned from FilterEmergencyStateActivated and is used to iterate over the raw logs and unpacked data for EmergencyStateActivated events raised by the Cdkvalidium contract. -type CdkvalidiumEmergencyStateActivatedIterator struct { - Event *CdkvalidiumEmergencyStateActivated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumEmergencyStateActivatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumEmergencyStateActivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumEmergencyStateActivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumEmergencyStateActivatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumEmergencyStateActivatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumEmergencyStateActivated represents a EmergencyStateActivated event raised by the Cdkvalidium contract. -type CdkvalidiumEmergencyStateActivated struct { - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEmergencyStateActivated is a free log retrieval operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. -// -// Solidity: event EmergencyStateActivated() -func (_Cdkvalidium *CdkvalidiumFilterer) FilterEmergencyStateActivated(opts *bind.FilterOpts) (*CdkvalidiumEmergencyStateActivatedIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "EmergencyStateActivated") - if err != nil { - return nil, err - } - return &CdkvalidiumEmergencyStateActivatedIterator{contract: _Cdkvalidium.contract, event: "EmergencyStateActivated", logs: logs, sub: sub}, nil -} - -// WatchEmergencyStateActivated is a free log subscription operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. -// -// Solidity: event EmergencyStateActivated() -func (_Cdkvalidium *CdkvalidiumFilterer) WatchEmergencyStateActivated(opts *bind.WatchOpts, sink chan<- *CdkvalidiumEmergencyStateActivated) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "EmergencyStateActivated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumEmergencyStateActivated) - if err := _Cdkvalidium.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEmergencyStateActivated is a log parse operation binding the contract event 0x2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a5497. -// -// Solidity: event EmergencyStateActivated() -func (_Cdkvalidium *CdkvalidiumFilterer) ParseEmergencyStateActivated(log types.Log) (*CdkvalidiumEmergencyStateActivated, error) { - event := new(CdkvalidiumEmergencyStateActivated) - if err := _Cdkvalidium.contract.UnpackLog(event, "EmergencyStateActivated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumEmergencyStateDeactivatedIterator is returned from FilterEmergencyStateDeactivated and is used to iterate over the raw logs and unpacked data for EmergencyStateDeactivated events raised by the Cdkvalidium contract. -type CdkvalidiumEmergencyStateDeactivatedIterator struct { - Event *CdkvalidiumEmergencyStateDeactivated // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumEmergencyStateDeactivatedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumEmergencyStateDeactivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumEmergencyStateDeactivated) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumEmergencyStateDeactivatedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumEmergencyStateDeactivatedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumEmergencyStateDeactivated represents a EmergencyStateDeactivated event raised by the Cdkvalidium contract. -type CdkvalidiumEmergencyStateDeactivated struct { - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEmergencyStateDeactivated is a free log retrieval operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. -// -// Solidity: event EmergencyStateDeactivated() -func (_Cdkvalidium *CdkvalidiumFilterer) FilterEmergencyStateDeactivated(opts *bind.FilterOpts) (*CdkvalidiumEmergencyStateDeactivatedIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "EmergencyStateDeactivated") - if err != nil { - return nil, err - } - return &CdkvalidiumEmergencyStateDeactivatedIterator{contract: _Cdkvalidium.contract, event: "EmergencyStateDeactivated", logs: logs, sub: sub}, nil -} - -// WatchEmergencyStateDeactivated is a free log subscription operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. -// -// Solidity: event EmergencyStateDeactivated() -func (_Cdkvalidium *CdkvalidiumFilterer) WatchEmergencyStateDeactivated(opts *bind.WatchOpts, sink chan<- *CdkvalidiumEmergencyStateDeactivated) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "EmergencyStateDeactivated") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumEmergencyStateDeactivated) - if err := _Cdkvalidium.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEmergencyStateDeactivated is a log parse operation binding the contract event 0x1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b3. -// -// Solidity: event EmergencyStateDeactivated() -func (_Cdkvalidium *CdkvalidiumFilterer) ParseEmergencyStateDeactivated(log types.Log) (*CdkvalidiumEmergencyStateDeactivated, error) { - event := new(CdkvalidiumEmergencyStateDeactivated) - if err := _Cdkvalidium.contract.UnpackLog(event, "EmergencyStateDeactivated", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumForceBatchIterator is returned from FilterForceBatch and is used to iterate over the raw logs and unpacked data for ForceBatch events raised by the Cdkvalidium contract. -type CdkvalidiumForceBatchIterator struct { - Event *CdkvalidiumForceBatch // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumForceBatchIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumForceBatch) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumForceBatch) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumForceBatchIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumForceBatchIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumForceBatch represents a ForceBatch event raised by the Cdkvalidium contract. -type CdkvalidiumForceBatch struct { - ForceBatchNum uint64 - LastGlobalExitRoot [32]byte - Sequencer common.Address - Transactions []byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterForceBatch is a free log retrieval operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. -// -// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterForceBatch(opts *bind.FilterOpts, forceBatchNum []uint64) (*CdkvalidiumForceBatchIterator, error) { - - var forceBatchNumRule []interface{} - for _, forceBatchNumItem := range forceBatchNum { - forceBatchNumRule = append(forceBatchNumRule, forceBatchNumItem) - } - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "ForceBatch", forceBatchNumRule) - if err != nil { - return nil, err - } - return &CdkvalidiumForceBatchIterator{contract: _Cdkvalidium.contract, event: "ForceBatch", logs: logs, sub: sub}, nil -} - -// WatchForceBatch is a free log subscription operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. -// -// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchForceBatch(opts *bind.WatchOpts, sink chan<- *CdkvalidiumForceBatch, forceBatchNum []uint64) (event.Subscription, error) { - - var forceBatchNumRule []interface{} - for _, forceBatchNumItem := range forceBatchNum { - forceBatchNumRule = append(forceBatchNumRule, forceBatchNumItem) - } - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "ForceBatch", forceBatchNumRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumForceBatch) - if err := _Cdkvalidium.contract.UnpackLog(event, "ForceBatch", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseForceBatch is a log parse operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. -// -// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseForceBatch(log types.Log) (*CdkvalidiumForceBatch, error) { - event := new(CdkvalidiumForceBatch) - if err := _Cdkvalidium.contract.UnpackLog(event, "ForceBatch", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Cdkvalidium contract. -type CdkvalidiumInitializedIterator struct { - Event *CdkvalidiumInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumInitialized represents a Initialized event raised by the Cdkvalidium contract. -type CdkvalidiumInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterInitialized(opts *bind.FilterOpts) (*CdkvalidiumInitializedIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &CdkvalidiumInitializedIterator{contract: _Cdkvalidium.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *CdkvalidiumInitialized) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumInitialized) - if err := _Cdkvalidium.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseInitialized(log types.Log) (*CdkvalidiumInitialized, error) { - event := new(CdkvalidiumInitialized) - if err := _Cdkvalidium.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumOverridePendingStateIterator is returned from FilterOverridePendingState and is used to iterate over the raw logs and unpacked data for OverridePendingState events raised by the Cdkvalidium contract. -type CdkvalidiumOverridePendingStateIterator struct { - Event *CdkvalidiumOverridePendingState // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumOverridePendingStateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumOverridePendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumOverridePendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumOverridePendingStateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumOverridePendingStateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumOverridePendingState represents a OverridePendingState event raised by the Cdkvalidium contract. -type CdkvalidiumOverridePendingState struct { - NumBatch uint64 - StateRoot [32]byte - Aggregator common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOverridePendingState is a free log retrieval operation binding the contract event 0xcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf72. -// -// Solidity: event OverridePendingState(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterOverridePendingState(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*CdkvalidiumOverridePendingStateIterator, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "OverridePendingState", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return &CdkvalidiumOverridePendingStateIterator{contract: _Cdkvalidium.contract, event: "OverridePendingState", logs: logs, sub: sub}, nil -} - -// WatchOverridePendingState is a free log subscription operation binding the contract event 0xcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf72. -// -// Solidity: event OverridePendingState(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchOverridePendingState(opts *bind.WatchOpts, sink chan<- *CdkvalidiumOverridePendingState, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "OverridePendingState", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumOverridePendingState) - if err := _Cdkvalidium.contract.UnpackLog(event, "OverridePendingState", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOverridePendingState is a log parse operation binding the contract event 0xcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf72. -// -// Solidity: event OverridePendingState(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseOverridePendingState(log types.Log) (*CdkvalidiumOverridePendingState, error) { - event := new(CdkvalidiumOverridePendingState) - if err := _Cdkvalidium.contract.UnpackLog(event, "OverridePendingState", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Cdkvalidium contract. -type CdkvalidiumOwnershipTransferredIterator struct { - Event *CdkvalidiumOwnershipTransferred // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumOwnershipTransferredIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumOwnershipTransferred) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumOwnershipTransferredIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumOwnershipTransferredIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumOwnershipTransferred represents a OwnershipTransferred event raised by the Cdkvalidium contract. -type CdkvalidiumOwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*CdkvalidiumOwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return &CdkvalidiumOwnershipTransferredIterator{contract: _Cdkvalidium.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil -} - -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *CdkvalidiumOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumOwnershipTransferred) - if err := _Cdkvalidium.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. -// -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseOwnershipTransferred(log types.Log) (*CdkvalidiumOwnershipTransferred, error) { - event := new(CdkvalidiumOwnershipTransferred) - if err := _Cdkvalidium.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumProveNonDeterministicPendingStateIterator is returned from FilterProveNonDeterministicPendingState and is used to iterate over the raw logs and unpacked data for ProveNonDeterministicPendingState events raised by the Cdkvalidium contract. -type CdkvalidiumProveNonDeterministicPendingStateIterator struct { - Event *CdkvalidiumProveNonDeterministicPendingState // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumProveNonDeterministicPendingStateIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumProveNonDeterministicPendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumProveNonDeterministicPendingState) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumProveNonDeterministicPendingStateIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumProveNonDeterministicPendingStateIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumProveNonDeterministicPendingState represents a ProveNonDeterministicPendingState event raised by the Cdkvalidium contract. -type CdkvalidiumProveNonDeterministicPendingState struct { - StoredStateRoot [32]byte - ProvedStateRoot [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterProveNonDeterministicPendingState is a free log retrieval operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. -// -// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterProveNonDeterministicPendingState(opts *bind.FilterOpts) (*CdkvalidiumProveNonDeterministicPendingStateIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "ProveNonDeterministicPendingState") - if err != nil { - return nil, err - } - return &CdkvalidiumProveNonDeterministicPendingStateIterator{contract: _Cdkvalidium.contract, event: "ProveNonDeterministicPendingState", logs: logs, sub: sub}, nil -} - -// WatchProveNonDeterministicPendingState is a free log subscription operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. -// -// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchProveNonDeterministicPendingState(opts *bind.WatchOpts, sink chan<- *CdkvalidiumProveNonDeterministicPendingState) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "ProveNonDeterministicPendingState") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumProveNonDeterministicPendingState) - if err := _Cdkvalidium.contract.UnpackLog(event, "ProveNonDeterministicPendingState", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseProveNonDeterministicPendingState is a log parse operation binding the contract event 0x1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010. -// -// Solidity: event ProveNonDeterministicPendingState(bytes32 storedStateRoot, bytes32 provedStateRoot) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseProveNonDeterministicPendingState(log types.Log) (*CdkvalidiumProveNonDeterministicPendingState, error) { - event := new(CdkvalidiumProveNonDeterministicPendingState) - if err := _Cdkvalidium.contract.UnpackLog(event, "ProveNonDeterministicPendingState", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumSequenceBatchesIterator is returned from FilterSequenceBatches and is used to iterate over the raw logs and unpacked data for SequenceBatches events raised by the Cdkvalidium contract. -type CdkvalidiumSequenceBatchesIterator struct { - Event *CdkvalidiumSequenceBatches // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumSequenceBatchesIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSequenceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSequenceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumSequenceBatchesIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumSequenceBatchesIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumSequenceBatches represents a SequenceBatches event raised by the Cdkvalidium contract. -type CdkvalidiumSequenceBatches struct { - NumBatch uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSequenceBatches is a free log retrieval operation binding the contract event 0x303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce. -// -// Solidity: event SequenceBatches(uint64 indexed numBatch) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterSequenceBatches(opts *bind.FilterOpts, numBatch []uint64) (*CdkvalidiumSequenceBatchesIterator, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "SequenceBatches", numBatchRule) - if err != nil { - return nil, err - } - return &CdkvalidiumSequenceBatchesIterator{contract: _Cdkvalidium.contract, event: "SequenceBatches", logs: logs, sub: sub}, nil -} - -// WatchSequenceBatches is a free log subscription operation binding the contract event 0x303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce. -// -// Solidity: event SequenceBatches(uint64 indexed numBatch) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchSequenceBatches(opts *bind.WatchOpts, sink chan<- *CdkvalidiumSequenceBatches, numBatch []uint64) (event.Subscription, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "SequenceBatches", numBatchRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumSequenceBatches) - if err := _Cdkvalidium.contract.UnpackLog(event, "SequenceBatches", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSequenceBatches is a log parse operation binding the contract event 0x303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce. -// -// Solidity: event SequenceBatches(uint64 indexed numBatch) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseSequenceBatches(log types.Log) (*CdkvalidiumSequenceBatches, error) { - event := new(CdkvalidiumSequenceBatches) - if err := _Cdkvalidium.contract.UnpackLog(event, "SequenceBatches", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumSequenceForceBatchesIterator is returned from FilterSequenceForceBatches and is used to iterate over the raw logs and unpacked data for SequenceForceBatches events raised by the Cdkvalidium contract. -type CdkvalidiumSequenceForceBatchesIterator struct { - Event *CdkvalidiumSequenceForceBatches // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumSequenceForceBatchesIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSequenceForceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSequenceForceBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumSequenceForceBatchesIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumSequenceForceBatchesIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumSequenceForceBatches represents a SequenceForceBatches event raised by the Cdkvalidium contract. -type CdkvalidiumSequenceForceBatches struct { - NumBatch uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSequenceForceBatches is a free log retrieval operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. -// -// Solidity: event SequenceForceBatches(uint64 indexed numBatch) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterSequenceForceBatches(opts *bind.FilterOpts, numBatch []uint64) (*CdkvalidiumSequenceForceBatchesIterator, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "SequenceForceBatches", numBatchRule) - if err != nil { - return nil, err - } - return &CdkvalidiumSequenceForceBatchesIterator{contract: _Cdkvalidium.contract, event: "SequenceForceBatches", logs: logs, sub: sub}, nil -} - -// WatchSequenceForceBatches is a free log subscription operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. -// -// Solidity: event SequenceForceBatches(uint64 indexed numBatch) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchSequenceForceBatches(opts *bind.WatchOpts, sink chan<- *CdkvalidiumSequenceForceBatches, numBatch []uint64) (event.Subscription, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "SequenceForceBatches", numBatchRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumSequenceForceBatches) - if err := _Cdkvalidium.contract.UnpackLog(event, "SequenceForceBatches", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSequenceForceBatches is a log parse operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. -// -// Solidity: event SequenceForceBatches(uint64 indexed numBatch) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseSequenceForceBatches(log types.Log) (*CdkvalidiumSequenceForceBatches, error) { - event := new(CdkvalidiumSequenceForceBatches) - if err := _Cdkvalidium.contract.UnpackLog(event, "SequenceForceBatches", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumSetForceBatchTimeoutIterator is returned from FilterSetForceBatchTimeout and is used to iterate over the raw logs and unpacked data for SetForceBatchTimeout events raised by the Cdkvalidium contract. -type CdkvalidiumSetForceBatchTimeoutIterator struct { - Event *CdkvalidiumSetForceBatchTimeout // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumSetForceBatchTimeoutIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetForceBatchTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetForceBatchTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumSetForceBatchTimeoutIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumSetForceBatchTimeoutIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumSetForceBatchTimeout represents a SetForceBatchTimeout event raised by the Cdkvalidium contract. -type CdkvalidiumSetForceBatchTimeout struct { - NewforceBatchTimeout uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetForceBatchTimeout is a free log retrieval operation binding the contract event 0xa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b. -// -// Solidity: event SetForceBatchTimeout(uint64 newforceBatchTimeout) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterSetForceBatchTimeout(opts *bind.FilterOpts) (*CdkvalidiumSetForceBatchTimeoutIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "SetForceBatchTimeout") - if err != nil { - return nil, err - } - return &CdkvalidiumSetForceBatchTimeoutIterator{contract: _Cdkvalidium.contract, event: "SetForceBatchTimeout", logs: logs, sub: sub}, nil -} - -// WatchSetForceBatchTimeout is a free log subscription operation binding the contract event 0xa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b. -// -// Solidity: event SetForceBatchTimeout(uint64 newforceBatchTimeout) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchSetForceBatchTimeout(opts *bind.WatchOpts, sink chan<- *CdkvalidiumSetForceBatchTimeout) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "SetForceBatchTimeout") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumSetForceBatchTimeout) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetForceBatchTimeout", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetForceBatchTimeout is a log parse operation binding the contract event 0xa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b. -// -// Solidity: event SetForceBatchTimeout(uint64 newforceBatchTimeout) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseSetForceBatchTimeout(log types.Log) (*CdkvalidiumSetForceBatchTimeout, error) { - event := new(CdkvalidiumSetForceBatchTimeout) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetForceBatchTimeout", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumSetMultiplierBatchFeeIterator is returned from FilterSetMultiplierBatchFee and is used to iterate over the raw logs and unpacked data for SetMultiplierBatchFee events raised by the Cdkvalidium contract. -type CdkvalidiumSetMultiplierBatchFeeIterator struct { - Event *CdkvalidiumSetMultiplierBatchFee // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumSetMultiplierBatchFeeIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetMultiplierBatchFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetMultiplierBatchFee) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumSetMultiplierBatchFeeIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumSetMultiplierBatchFeeIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumSetMultiplierBatchFee represents a SetMultiplierBatchFee event raised by the Cdkvalidium contract. -type CdkvalidiumSetMultiplierBatchFee struct { - NewMultiplierBatchFee uint16 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetMultiplierBatchFee is a free log retrieval operation binding the contract event 0x7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5. -// -// Solidity: event SetMultiplierBatchFee(uint16 newMultiplierBatchFee) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterSetMultiplierBatchFee(opts *bind.FilterOpts) (*CdkvalidiumSetMultiplierBatchFeeIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "SetMultiplierBatchFee") - if err != nil { - return nil, err - } - return &CdkvalidiumSetMultiplierBatchFeeIterator{contract: _Cdkvalidium.contract, event: "SetMultiplierBatchFee", logs: logs, sub: sub}, nil -} - -// WatchSetMultiplierBatchFee is a free log subscription operation binding the contract event 0x7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5. -// -// Solidity: event SetMultiplierBatchFee(uint16 newMultiplierBatchFee) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchSetMultiplierBatchFee(opts *bind.WatchOpts, sink chan<- *CdkvalidiumSetMultiplierBatchFee) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "SetMultiplierBatchFee") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumSetMultiplierBatchFee) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetMultiplierBatchFee", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetMultiplierBatchFee is a log parse operation binding the contract event 0x7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5. -// -// Solidity: event SetMultiplierBatchFee(uint16 newMultiplierBatchFee) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseSetMultiplierBatchFee(log types.Log) (*CdkvalidiumSetMultiplierBatchFee, error) { - event := new(CdkvalidiumSetMultiplierBatchFee) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetMultiplierBatchFee", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumSetPendingStateTimeoutIterator is returned from FilterSetPendingStateTimeout and is used to iterate over the raw logs and unpacked data for SetPendingStateTimeout events raised by the Cdkvalidium contract. -type CdkvalidiumSetPendingStateTimeoutIterator struct { - Event *CdkvalidiumSetPendingStateTimeout // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumSetPendingStateTimeoutIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetPendingStateTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetPendingStateTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumSetPendingStateTimeoutIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumSetPendingStateTimeoutIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumSetPendingStateTimeout represents a SetPendingStateTimeout event raised by the Cdkvalidium contract. -type CdkvalidiumSetPendingStateTimeout struct { - NewPendingStateTimeout uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetPendingStateTimeout is a free log retrieval operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. -// -// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterSetPendingStateTimeout(opts *bind.FilterOpts) (*CdkvalidiumSetPendingStateTimeoutIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "SetPendingStateTimeout") - if err != nil { - return nil, err - } - return &CdkvalidiumSetPendingStateTimeoutIterator{contract: _Cdkvalidium.contract, event: "SetPendingStateTimeout", logs: logs, sub: sub}, nil -} - -// WatchSetPendingStateTimeout is a free log subscription operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. -// -// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchSetPendingStateTimeout(opts *bind.WatchOpts, sink chan<- *CdkvalidiumSetPendingStateTimeout) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "SetPendingStateTimeout") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumSetPendingStateTimeout) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetPendingStateTimeout", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetPendingStateTimeout is a log parse operation binding the contract event 0xc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c75. -// -// Solidity: event SetPendingStateTimeout(uint64 newPendingStateTimeout) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseSetPendingStateTimeout(log types.Log) (*CdkvalidiumSetPendingStateTimeout, error) { - event := new(CdkvalidiumSetPendingStateTimeout) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetPendingStateTimeout", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumSetTrustedAggregatorIterator is returned from FilterSetTrustedAggregator and is used to iterate over the raw logs and unpacked data for SetTrustedAggregator events raised by the Cdkvalidium contract. -type CdkvalidiumSetTrustedAggregatorIterator struct { - Event *CdkvalidiumSetTrustedAggregator // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumSetTrustedAggregatorIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetTrustedAggregator) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetTrustedAggregator) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumSetTrustedAggregatorIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumSetTrustedAggregatorIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumSetTrustedAggregator represents a SetTrustedAggregator event raised by the Cdkvalidium contract. -type CdkvalidiumSetTrustedAggregator struct { - NewTrustedAggregator common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetTrustedAggregator is a free log retrieval operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. -// -// Solidity: event SetTrustedAggregator(address newTrustedAggregator) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterSetTrustedAggregator(opts *bind.FilterOpts) (*CdkvalidiumSetTrustedAggregatorIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "SetTrustedAggregator") - if err != nil { - return nil, err - } - return &CdkvalidiumSetTrustedAggregatorIterator{contract: _Cdkvalidium.contract, event: "SetTrustedAggregator", logs: logs, sub: sub}, nil -} - -// WatchSetTrustedAggregator is a free log subscription operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. -// -// Solidity: event SetTrustedAggregator(address newTrustedAggregator) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchSetTrustedAggregator(opts *bind.WatchOpts, sink chan<- *CdkvalidiumSetTrustedAggregator) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "SetTrustedAggregator") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumSetTrustedAggregator) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetTrustedAggregator", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetTrustedAggregator is a log parse operation binding the contract event 0x61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca. -// -// Solidity: event SetTrustedAggregator(address newTrustedAggregator) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseSetTrustedAggregator(log types.Log) (*CdkvalidiumSetTrustedAggregator, error) { - event := new(CdkvalidiumSetTrustedAggregator) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetTrustedAggregator", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumSetTrustedAggregatorTimeoutIterator is returned from FilterSetTrustedAggregatorTimeout and is used to iterate over the raw logs and unpacked data for SetTrustedAggregatorTimeout events raised by the Cdkvalidium contract. -type CdkvalidiumSetTrustedAggregatorTimeoutIterator struct { - Event *CdkvalidiumSetTrustedAggregatorTimeout // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumSetTrustedAggregatorTimeoutIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetTrustedAggregatorTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetTrustedAggregatorTimeout) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumSetTrustedAggregatorTimeoutIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumSetTrustedAggregatorTimeoutIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumSetTrustedAggregatorTimeout represents a SetTrustedAggregatorTimeout event raised by the Cdkvalidium contract. -type CdkvalidiumSetTrustedAggregatorTimeout struct { - NewTrustedAggregatorTimeout uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetTrustedAggregatorTimeout is a free log retrieval operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. -// -// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterSetTrustedAggregatorTimeout(opts *bind.FilterOpts) (*CdkvalidiumSetTrustedAggregatorTimeoutIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "SetTrustedAggregatorTimeout") - if err != nil { - return nil, err - } - return &CdkvalidiumSetTrustedAggregatorTimeoutIterator{contract: _Cdkvalidium.contract, event: "SetTrustedAggregatorTimeout", logs: logs, sub: sub}, nil -} - -// WatchSetTrustedAggregatorTimeout is a free log subscription operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. -// -// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchSetTrustedAggregatorTimeout(opts *bind.WatchOpts, sink chan<- *CdkvalidiumSetTrustedAggregatorTimeout) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "SetTrustedAggregatorTimeout") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumSetTrustedAggregatorTimeout) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetTrustedAggregatorTimeout", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetTrustedAggregatorTimeout is a log parse operation binding the contract event 0x1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a1. -// -// Solidity: event SetTrustedAggregatorTimeout(uint64 newTrustedAggregatorTimeout) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseSetTrustedAggregatorTimeout(log types.Log) (*CdkvalidiumSetTrustedAggregatorTimeout, error) { - event := new(CdkvalidiumSetTrustedAggregatorTimeout) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetTrustedAggregatorTimeout", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumSetTrustedSequencerIterator is returned from FilterSetTrustedSequencer and is used to iterate over the raw logs and unpacked data for SetTrustedSequencer events raised by the Cdkvalidium contract. -type CdkvalidiumSetTrustedSequencerIterator struct { - Event *CdkvalidiumSetTrustedSequencer // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumSetTrustedSequencerIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetTrustedSequencer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetTrustedSequencer) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumSetTrustedSequencerIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumSetTrustedSequencerIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumSetTrustedSequencer represents a SetTrustedSequencer event raised by the Cdkvalidium contract. -type CdkvalidiumSetTrustedSequencer struct { - NewTrustedSequencer common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetTrustedSequencer is a free log retrieval operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. -// -// Solidity: event SetTrustedSequencer(address newTrustedSequencer) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterSetTrustedSequencer(opts *bind.FilterOpts) (*CdkvalidiumSetTrustedSequencerIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "SetTrustedSequencer") - if err != nil { - return nil, err - } - return &CdkvalidiumSetTrustedSequencerIterator{contract: _Cdkvalidium.contract, event: "SetTrustedSequencer", logs: logs, sub: sub}, nil -} - -// WatchSetTrustedSequencer is a free log subscription operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. -// -// Solidity: event SetTrustedSequencer(address newTrustedSequencer) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchSetTrustedSequencer(opts *bind.WatchOpts, sink chan<- *CdkvalidiumSetTrustedSequencer) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "SetTrustedSequencer") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumSetTrustedSequencer) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetTrustedSequencer", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetTrustedSequencer is a log parse operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. -// -// Solidity: event SetTrustedSequencer(address newTrustedSequencer) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseSetTrustedSequencer(log types.Log) (*CdkvalidiumSetTrustedSequencer, error) { - event := new(CdkvalidiumSetTrustedSequencer) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetTrustedSequencer", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumSetTrustedSequencerURLIterator is returned from FilterSetTrustedSequencerURL and is used to iterate over the raw logs and unpacked data for SetTrustedSequencerURL events raised by the Cdkvalidium contract. -type CdkvalidiumSetTrustedSequencerURLIterator struct { - Event *CdkvalidiumSetTrustedSequencerURL // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumSetTrustedSequencerURLIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetTrustedSequencerURL) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetTrustedSequencerURL) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumSetTrustedSequencerURLIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumSetTrustedSequencerURLIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumSetTrustedSequencerURL represents a SetTrustedSequencerURL event raised by the Cdkvalidium contract. -type CdkvalidiumSetTrustedSequencerURL struct { - NewTrustedSequencerURL string - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetTrustedSequencerURL is a free log retrieval operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. -// -// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterSetTrustedSequencerURL(opts *bind.FilterOpts) (*CdkvalidiumSetTrustedSequencerURLIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "SetTrustedSequencerURL") - if err != nil { - return nil, err - } - return &CdkvalidiumSetTrustedSequencerURLIterator{contract: _Cdkvalidium.contract, event: "SetTrustedSequencerURL", logs: logs, sub: sub}, nil -} - -// WatchSetTrustedSequencerURL is a free log subscription operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. -// -// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchSetTrustedSequencerURL(opts *bind.WatchOpts, sink chan<- *CdkvalidiumSetTrustedSequencerURL) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "SetTrustedSequencerURL") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumSetTrustedSequencerURL) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetTrustedSequencerURL", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetTrustedSequencerURL is a log parse operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. -// -// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseSetTrustedSequencerURL(log types.Log) (*CdkvalidiumSetTrustedSequencerURL, error) { - event := new(CdkvalidiumSetTrustedSequencerURL) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetTrustedSequencerURL", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumSetVerifyBatchTimeTargetIterator is returned from FilterSetVerifyBatchTimeTarget and is used to iterate over the raw logs and unpacked data for SetVerifyBatchTimeTarget events raised by the Cdkvalidium contract. -type CdkvalidiumSetVerifyBatchTimeTargetIterator struct { - Event *CdkvalidiumSetVerifyBatchTimeTarget // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumSetVerifyBatchTimeTargetIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetVerifyBatchTimeTarget) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumSetVerifyBatchTimeTarget) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumSetVerifyBatchTimeTargetIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumSetVerifyBatchTimeTargetIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumSetVerifyBatchTimeTarget represents a SetVerifyBatchTimeTarget event raised by the Cdkvalidium contract. -type CdkvalidiumSetVerifyBatchTimeTarget struct { - NewVerifyBatchTimeTarget uint64 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterSetVerifyBatchTimeTarget is a free log retrieval operation binding the contract event 0x1b023231a1ab6b5d93992f168fb44498e1a7e64cef58daff6f1c216de6a68c28. -// -// Solidity: event SetVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterSetVerifyBatchTimeTarget(opts *bind.FilterOpts) (*CdkvalidiumSetVerifyBatchTimeTargetIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "SetVerifyBatchTimeTarget") - if err != nil { - return nil, err - } - return &CdkvalidiumSetVerifyBatchTimeTargetIterator{contract: _Cdkvalidium.contract, event: "SetVerifyBatchTimeTarget", logs: logs, sub: sub}, nil -} - -// WatchSetVerifyBatchTimeTarget is a free log subscription operation binding the contract event 0x1b023231a1ab6b5d93992f168fb44498e1a7e64cef58daff6f1c216de6a68c28. -// -// Solidity: event SetVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchSetVerifyBatchTimeTarget(opts *bind.WatchOpts, sink chan<- *CdkvalidiumSetVerifyBatchTimeTarget) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "SetVerifyBatchTimeTarget") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumSetVerifyBatchTimeTarget) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetVerifyBatchTimeTarget", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseSetVerifyBatchTimeTarget is a log parse operation binding the contract event 0x1b023231a1ab6b5d93992f168fb44498e1a7e64cef58daff6f1c216de6a68c28. -// -// Solidity: event SetVerifyBatchTimeTarget(uint64 newVerifyBatchTimeTarget) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseSetVerifyBatchTimeTarget(log types.Log) (*CdkvalidiumSetVerifyBatchTimeTarget, error) { - event := new(CdkvalidiumSetVerifyBatchTimeTarget) - if err := _Cdkvalidium.contract.UnpackLog(event, "SetVerifyBatchTimeTarget", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumTransferAdminRoleIterator is returned from FilterTransferAdminRole and is used to iterate over the raw logs and unpacked data for TransferAdminRole events raised by the Cdkvalidium contract. -type CdkvalidiumTransferAdminRoleIterator struct { - Event *CdkvalidiumTransferAdminRole // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumTransferAdminRoleIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumTransferAdminRole) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumTransferAdminRole) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumTransferAdminRoleIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumTransferAdminRoleIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumTransferAdminRole represents a TransferAdminRole event raised by the Cdkvalidium contract. -type CdkvalidiumTransferAdminRole struct { - NewPendingAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTransferAdminRole is a free log retrieval operation binding the contract event 0xa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce6. -// -// Solidity: event TransferAdminRole(address newPendingAdmin) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterTransferAdminRole(opts *bind.FilterOpts) (*CdkvalidiumTransferAdminRoleIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "TransferAdminRole") - if err != nil { - return nil, err - } - return &CdkvalidiumTransferAdminRoleIterator{contract: _Cdkvalidium.contract, event: "TransferAdminRole", logs: logs, sub: sub}, nil -} - -// WatchTransferAdminRole is a free log subscription operation binding the contract event 0xa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce6. -// -// Solidity: event TransferAdminRole(address newPendingAdmin) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchTransferAdminRole(opts *bind.WatchOpts, sink chan<- *CdkvalidiumTransferAdminRole) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "TransferAdminRole") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumTransferAdminRole) - if err := _Cdkvalidium.contract.UnpackLog(event, "TransferAdminRole", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTransferAdminRole is a log parse operation binding the contract event 0xa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce6. -// -// Solidity: event TransferAdminRole(address newPendingAdmin) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseTransferAdminRole(log types.Log) (*CdkvalidiumTransferAdminRole, error) { - event := new(CdkvalidiumTransferAdminRole) - if err := _Cdkvalidium.contract.UnpackLog(event, "TransferAdminRole", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumUpdateZkEVMVersionIterator is returned from FilterUpdateZkEVMVersion and is used to iterate over the raw logs and unpacked data for UpdateZkEVMVersion events raised by the Cdkvalidium contract. -type CdkvalidiumUpdateZkEVMVersionIterator struct { - Event *CdkvalidiumUpdateZkEVMVersion // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumUpdateZkEVMVersionIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumUpdateZkEVMVersion) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumUpdateZkEVMVersion) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumUpdateZkEVMVersionIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumUpdateZkEVMVersionIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumUpdateZkEVMVersion represents a UpdateZkEVMVersion event raised by the Cdkvalidium contract. -type CdkvalidiumUpdateZkEVMVersion struct { - NumBatch uint64 - ForkID uint64 - Version string - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpdateZkEVMVersion is a free log retrieval operation binding the contract event 0xed7be53c9f1a96a481223b15568a5b1a475e01a74b347d6ca187c8bf0c078cd6. -// -// Solidity: event UpdateZkEVMVersion(uint64 numBatch, uint64 forkID, string version) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterUpdateZkEVMVersion(opts *bind.FilterOpts) (*CdkvalidiumUpdateZkEVMVersionIterator, error) { - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "UpdateZkEVMVersion") - if err != nil { - return nil, err - } - return &CdkvalidiumUpdateZkEVMVersionIterator{contract: _Cdkvalidium.contract, event: "UpdateZkEVMVersion", logs: logs, sub: sub}, nil -} - -// WatchUpdateZkEVMVersion is a free log subscription operation binding the contract event 0xed7be53c9f1a96a481223b15568a5b1a475e01a74b347d6ca187c8bf0c078cd6. -// -// Solidity: event UpdateZkEVMVersion(uint64 numBatch, uint64 forkID, string version) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchUpdateZkEVMVersion(opts *bind.WatchOpts, sink chan<- *CdkvalidiumUpdateZkEVMVersion) (event.Subscription, error) { - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "UpdateZkEVMVersion") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumUpdateZkEVMVersion) - if err := _Cdkvalidium.contract.UnpackLog(event, "UpdateZkEVMVersion", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpdateZkEVMVersion is a log parse operation binding the contract event 0xed7be53c9f1a96a481223b15568a5b1a475e01a74b347d6ca187c8bf0c078cd6. -// -// Solidity: event UpdateZkEVMVersion(uint64 numBatch, uint64 forkID, string version) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseUpdateZkEVMVersion(log types.Log) (*CdkvalidiumUpdateZkEVMVersion, error) { - event := new(CdkvalidiumUpdateZkEVMVersion) - if err := _Cdkvalidium.contract.UnpackLog(event, "UpdateZkEVMVersion", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumVerifyBatchesIterator is returned from FilterVerifyBatches and is used to iterate over the raw logs and unpacked data for VerifyBatches events raised by the Cdkvalidium contract. -type CdkvalidiumVerifyBatchesIterator struct { - Event *CdkvalidiumVerifyBatches // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumVerifyBatchesIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumVerifyBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumVerifyBatches) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumVerifyBatchesIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumVerifyBatchesIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumVerifyBatches represents a VerifyBatches event raised by the Cdkvalidium contract. -type CdkvalidiumVerifyBatches struct { - NumBatch uint64 - StateRoot [32]byte - Aggregator common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterVerifyBatches is a free log retrieval operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. -// -// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterVerifyBatches(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*CdkvalidiumVerifyBatchesIterator, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "VerifyBatches", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return &CdkvalidiumVerifyBatchesIterator{contract: _Cdkvalidium.contract, event: "VerifyBatches", logs: logs, sub: sub}, nil -} - -// WatchVerifyBatches is a free log subscription operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. -// -// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchVerifyBatches(opts *bind.WatchOpts, sink chan<- *CdkvalidiumVerifyBatches, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "VerifyBatches", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumVerifyBatches) - if err := _Cdkvalidium.contract.UnpackLog(event, "VerifyBatches", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseVerifyBatches is a log parse operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. -// -// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseVerifyBatches(log types.Log) (*CdkvalidiumVerifyBatches, error) { - event := new(CdkvalidiumVerifyBatches) - if err := _Cdkvalidium.contract.UnpackLog(event, "VerifyBatches", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// CdkvalidiumVerifyBatchesTrustedAggregatorIterator is returned from FilterVerifyBatchesTrustedAggregator and is used to iterate over the raw logs and unpacked data for VerifyBatchesTrustedAggregator events raised by the Cdkvalidium contract. -type CdkvalidiumVerifyBatchesTrustedAggregatorIterator struct { - Event *CdkvalidiumVerifyBatchesTrustedAggregator // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *CdkvalidiumVerifyBatchesTrustedAggregatorIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumVerifyBatchesTrustedAggregator) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(CdkvalidiumVerifyBatchesTrustedAggregator) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *CdkvalidiumVerifyBatchesTrustedAggregatorIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *CdkvalidiumVerifyBatchesTrustedAggregatorIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// CdkvalidiumVerifyBatchesTrustedAggregator represents a VerifyBatchesTrustedAggregator event raised by the Cdkvalidium contract. -type CdkvalidiumVerifyBatchesTrustedAggregator struct { - NumBatch uint64 - StateRoot [32]byte - Aggregator common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterVerifyBatchesTrustedAggregator is a free log retrieval operation binding the contract event 0xcb339b570a7f0b25afa7333371ff11192092a0aeace12b671f4c212f2815c6fe. -// -// Solidity: event VerifyBatchesTrustedAggregator(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Cdkvalidium *CdkvalidiumFilterer) FilterVerifyBatchesTrustedAggregator(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*CdkvalidiumVerifyBatchesTrustedAggregatorIterator, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _Cdkvalidium.contract.FilterLogs(opts, "VerifyBatchesTrustedAggregator", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return &CdkvalidiumVerifyBatchesTrustedAggregatorIterator{contract: _Cdkvalidium.contract, event: "VerifyBatchesTrustedAggregator", logs: logs, sub: sub}, nil -} - -// WatchVerifyBatchesTrustedAggregator is a free log subscription operation binding the contract event 0xcb339b570a7f0b25afa7333371ff11192092a0aeace12b671f4c212f2815c6fe. -// -// Solidity: event VerifyBatchesTrustedAggregator(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Cdkvalidium *CdkvalidiumFilterer) WatchVerifyBatchesTrustedAggregator(opts *bind.WatchOpts, sink chan<- *CdkvalidiumVerifyBatchesTrustedAggregator, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { - - var numBatchRule []interface{} - for _, numBatchItem := range numBatch { - numBatchRule = append(numBatchRule, numBatchItem) - } - - var aggregatorRule []interface{} - for _, aggregatorItem := range aggregator { - aggregatorRule = append(aggregatorRule, aggregatorItem) - } - - logs, sub, err := _Cdkvalidium.contract.WatchLogs(opts, "VerifyBatchesTrustedAggregator", numBatchRule, aggregatorRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(CdkvalidiumVerifyBatchesTrustedAggregator) - if err := _Cdkvalidium.contract.UnpackLog(event, "VerifyBatchesTrustedAggregator", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseVerifyBatchesTrustedAggregator is a log parse operation binding the contract event 0xcb339b570a7f0b25afa7333371ff11192092a0aeace12b671f4c212f2815c6fe. -// -// Solidity: event VerifyBatchesTrustedAggregator(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) -func (_Cdkvalidium *CdkvalidiumFilterer) ParseVerifyBatchesTrustedAggregator(log types.Log) (*CdkvalidiumVerifyBatchesTrustedAggregator, error) { - event := new(CdkvalidiumVerifyBatchesTrustedAggregator) - if err := _Cdkvalidium.contract.UnpackLog(event, "VerifyBatchesTrustedAggregator", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/etherman/smartcontracts/polygondatacommittee/polygondatacommittee.go b/etherman/smartcontracts/polygondatacommittee/polygondatacommittee.go new file mode 100644 index 00000000..d2e7d5e9 --- /dev/null +++ b/etherman/smartcontracts/polygondatacommittee/polygondatacommittee.go @@ -0,0 +1,937 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package polygondatacommittee + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// PolygondatacommitteeMetaData contains all meta data concerning the Polygondatacommittee contract. +var PolygondatacommitteeMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"CommitteeAddressDoesntExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyURLNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyRequiredSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedAddrsAndSignaturesSize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedAddrsBytesLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedCommitteeHash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongAddrOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"committeeHash\",\"type\":\"bytes32\"}],\"name\":\"CommitteeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"committeeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAmountOfMembers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProcotolName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"members\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requiredAmountOfSignatures\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requiredAmountOfSignatures\",\"type\":\"uint256\"},{\"internalType\":\"string[]\",\"name\":\"urls\",\"type\":\"string[]\"},{\"internalType\":\"bytes\",\"name\":\"addrsBytes\",\"type\":\"bytes\"}],\"name\":\"setupCommittee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"signedHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signaturesAndAddrs\",\"type\":\"bytes\"}],\"name\":\"verifyMessage\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b50611646806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063715018a611610081578063dce1e2b61161005b578063dce1e2b614610178578063e4f1712014610180578063f2fde38b146101bf57600080fd5b8063715018a6146101405780638129fc1c146101485780638da5cb5b1461015057600080fd5b80635daf08ca116100b25780635daf08ca146100f6578063609d4544146101205780636beedd391461013757600080fd5b8063078fba2a146100ce5780633b51be4b146100e3575b600080fd5b6100e16100dc366004610fe9565b6101d2565b005b6100e16100f1366004611094565b6104d4565b6101096101043660046110e0565b61071f565b60405161011792919061115d565b60405180910390f35b61012960665481565b604051908152602001610117565b61012960655481565b6100e16107f1565b6100e1610805565b60335460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610117565b606754610129565b604080518082018252601981527f44617461417661696c6162696c697479436f6d6d697474656500000000000000602082015290516101179190611195565b6100e16101cd3660046111af565b61099c565b6101da610a50565b8285811015610215576040517f2e7dcd6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610220601482611214565b8214610258576040517f2ab6a12900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61026460676000610ef5565b6000805b8281101561047857600061027d601483611214565b9050600086828761028f60148361122b565b9261029c9392919061123e565b6102a591611268565b60601c90508888848181106102bc576102bc6112b0565b90506020028101906102ce91906112df565b9050600003610309576040517fb54b70e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061036e576040517fd53cfbe000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606760405180604001604052808b8b8781811061038d5761038d6112b0565b905060200281019061039f91906112df565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093855250505073ffffffffffffffffffffffffffffffffffffffff851660209283015283546001810185559381522081519192600202019081906104139082611415565b5060209190910151600190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905592508190506104708161152f565b915050610268565b508383604051610489929190611567565b6040519081900381206066819055606589905581527f831403fd381b3e6ac875d912ec2eee0e0203d0d29f7b3e0c96fc8f582d6db6579060200160405180910390a150505050505050565b60655460006104e4826041611214565b905080831080610508575060146104fb8285611577565b61050591906115b9565b15155b1561053f576040517f6b8eec4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60665461054e8483818861123e565b60405161055c929190611567565b60405180910390201461059b576040517f6b156b2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060146105aa8487611577565b6105b491906115cd565b905060005b848110156107155760006105ce604183611214565b9050600061062b8a8a848b6105e460418361122b565b926105f19392919061123e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ad192505050565b90506000855b858110156106c7576000610646601483611214565b610650908a61122b565b905060008c828d61066260148361122b565b9261066f9392919061123e565b61067891611268565b60601c905073ffffffffffffffffffffffffffffffffffffffff851681036106b2576106a583600161122b565b98506001935050506106c7565b505080806106bf9061152f565b915050610631565b50806106ff576040517f8431721300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050808061070d9061152f565b9150506105b9565b5050505050505050565b6067818154811061072f57600080fd5b906000526020600020906002020160009150905080600001805461075290611373565b80601f016020809104026020016040519081016040528092919081815260200182805461077e90611373565b80156107cb5780601f106107a0576101008083540402835291602001916107cb565b820191906000526020600020905b8154815290600101906020018083116107ae57829003601f168201915b5050506001909301549192505073ffffffffffffffffffffffffffffffffffffffff1682565b6107f9610a50565b6108036000610af7565b565b600054610100900460ff16158080156108255750600054600160ff909116105b8061083f5750303b15801561083f575060005460ff166001145b6108d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561092e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610936610b6e565b801561099957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6109a4610a50565b73ffffffffffffffffffffffffffffffffffffffff8116610a47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108c7565b61099981610af7565b60335473ffffffffffffffffffffffffffffffffffffffff163314610803576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c7565b6000806000610ae08585610c0e565b91509150610aed81610c53565b5090505b92915050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610c05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108c7565b61080333610af7565b6000808251604103610c445760208301516040840151606085015160001a610c3887828585610e06565b94509450505050610c4c565b506000905060025b9250929050565b6000816004811115610c6757610c676115e1565b03610c6f5750565b6001816004811115610c8357610c836115e1565b03610cea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016108c7565b6002816004811115610cfe57610cfe6115e1565b03610d65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016108c7565b6003816004811115610d7957610d796115e1565b03610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016108c7565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610e3d5750600090506003610eec565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610e91573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610ee557600060019250925050610eec565b9150600090505b94509492505050565b508054600082556002029060005260206000209081019061099991905b80821115610f59576000610f268282610f5d565b506001810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600201610f12565b5090565b508054610f6990611373565b6000825580601f10610f79575050565b601f01602090049060005260206000209081019061099991905b80821115610f595760008155600101610f93565b60008083601f840112610fb957600080fd5b50813567ffffffffffffffff811115610fd157600080fd5b602083019150836020828501011115610c4c57600080fd5b60008060008060006060868803121561100157600080fd5b85359450602086013567ffffffffffffffff8082111561102057600080fd5b818801915088601f83011261103457600080fd5b81358181111561104357600080fd5b8960208260051b850101111561105857600080fd5b60208301965080955050604088013591508082111561107657600080fd5b5061108388828901610fa7565b969995985093965092949392505050565b6000806000604084860312156110a957600080fd5b83359250602084013567ffffffffffffffff8111156110c757600080fd5b6110d386828701610fa7565b9497909650939450505050565b6000602082840312156110f257600080fd5b5035919050565b6000815180845260005b8181101561111f57602081850181015186830182015201611103565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60408152600061117060408301856110f9565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b6020815260006111a860208301846110f9565b9392505050565b6000602082840312156111c157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146111a857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610af157610af16111e5565b80820180821115610af157610af16111e5565b6000808585111561124e57600080fd5b8386111561125b57600080fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156112a85780818660140360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261131457600080fd5b83018035915067ffffffffffffffff82111561132f57600080fd5b602001915036819003821315610c4c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061138757607f821691505b6020821081036113c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561141057600081815260208120601f850160051c810160208610156113ed5750805b601f850160051c820191505b8181101561140c578281556001016113f9565b5050505b505050565b815167ffffffffffffffff81111561142f5761142f611344565b6114438161143d8454611373565b846113c6565b602080601f83116001811461149657600084156114605750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561140c565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156114e3578886015182559484019460019091019084016114c4565b508582101561151f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611560576115606111e5565b5060010190565b8183823760009101908152919050565b81810381811115610af157610af16111e5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826115c8576115c861158a565b500690565b6000826115dc576115dc61158a565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220e34b71e7c7c23d67a42aa345fc1c3d9c57287ac1c2a2024084974dcc23e4088864736f6c63430008140033", +} + +// PolygondatacommitteeABI is the input ABI used to generate the binding from. +// Deprecated: Use PolygondatacommitteeMetaData.ABI instead. +var PolygondatacommitteeABI = PolygondatacommitteeMetaData.ABI + +// PolygondatacommitteeBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use PolygondatacommitteeMetaData.Bin instead. +var PolygondatacommitteeBin = PolygondatacommitteeMetaData.Bin + +// DeployPolygondatacommittee deploys a new Ethereum contract, binding an instance of Polygondatacommittee to it. +func DeployPolygondatacommittee(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Polygondatacommittee, error) { + parsed, err := PolygondatacommitteeMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PolygondatacommitteeBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Polygondatacommittee{PolygondatacommitteeCaller: PolygondatacommitteeCaller{contract: contract}, PolygondatacommitteeTransactor: PolygondatacommitteeTransactor{contract: contract}, PolygondatacommitteeFilterer: PolygondatacommitteeFilterer{contract: contract}}, nil +} + +// Polygondatacommittee is an auto generated Go binding around an Ethereum contract. +type Polygondatacommittee struct { + PolygondatacommitteeCaller // Read-only binding to the contract + PolygondatacommitteeTransactor // Write-only binding to the contract + PolygondatacommitteeFilterer // Log filterer for contract events +} + +// PolygondatacommitteeCaller is an auto generated read-only Go binding around an Ethereum contract. +type PolygondatacommitteeCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygondatacommitteeTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PolygondatacommitteeTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygondatacommitteeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PolygondatacommitteeFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygondatacommitteeSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PolygondatacommitteeSession struct { + Contract *Polygondatacommittee // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PolygondatacommitteeCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PolygondatacommitteeCallerSession struct { + Contract *PolygondatacommitteeCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PolygondatacommitteeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PolygondatacommitteeTransactorSession struct { + Contract *PolygondatacommitteeTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PolygondatacommitteeRaw is an auto generated low-level Go binding around an Ethereum contract. +type PolygondatacommitteeRaw struct { + Contract *Polygondatacommittee // Generic contract binding to access the raw methods on +} + +// PolygondatacommitteeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PolygondatacommitteeCallerRaw struct { + Contract *PolygondatacommitteeCaller // Generic read-only contract binding to access the raw methods on +} + +// PolygondatacommitteeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PolygondatacommitteeTransactorRaw struct { + Contract *PolygondatacommitteeTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPolygondatacommittee creates a new instance of Polygondatacommittee, bound to a specific deployed contract. +func NewPolygondatacommittee(address common.Address, backend bind.ContractBackend) (*Polygondatacommittee, error) { + contract, err := bindPolygondatacommittee(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Polygondatacommittee{PolygondatacommitteeCaller: PolygondatacommitteeCaller{contract: contract}, PolygondatacommitteeTransactor: PolygondatacommitteeTransactor{contract: contract}, PolygondatacommitteeFilterer: PolygondatacommitteeFilterer{contract: contract}}, nil +} + +// NewPolygondatacommitteeCaller creates a new read-only instance of Polygondatacommittee, bound to a specific deployed contract. +func NewPolygondatacommitteeCaller(address common.Address, caller bind.ContractCaller) (*PolygondatacommitteeCaller, error) { + contract, err := bindPolygondatacommittee(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PolygondatacommitteeCaller{contract: contract}, nil +} + +// NewPolygondatacommitteeTransactor creates a new write-only instance of Polygondatacommittee, bound to a specific deployed contract. +func NewPolygondatacommitteeTransactor(address common.Address, transactor bind.ContractTransactor) (*PolygondatacommitteeTransactor, error) { + contract, err := bindPolygondatacommittee(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PolygondatacommitteeTransactor{contract: contract}, nil +} + +// NewPolygondatacommitteeFilterer creates a new log filterer instance of Polygondatacommittee, bound to a specific deployed contract. +func NewPolygondatacommitteeFilterer(address common.Address, filterer bind.ContractFilterer) (*PolygondatacommitteeFilterer, error) { + contract, err := bindPolygondatacommittee(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PolygondatacommitteeFilterer{contract: contract}, nil +} + +// bindPolygondatacommittee binds a generic wrapper to an already deployed contract. +func bindPolygondatacommittee(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := PolygondatacommitteeMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Polygondatacommittee *PolygondatacommitteeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Polygondatacommittee.Contract.PolygondatacommitteeCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Polygondatacommittee *PolygondatacommitteeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygondatacommittee.Contract.PolygondatacommitteeTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Polygondatacommittee *PolygondatacommitteeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Polygondatacommittee.Contract.PolygondatacommitteeTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Polygondatacommittee *PolygondatacommitteeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Polygondatacommittee.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Polygondatacommittee *PolygondatacommitteeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygondatacommittee.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Polygondatacommittee *PolygondatacommitteeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Polygondatacommittee.Contract.contract.Transact(opts, method, params...) +} + +// CommitteeHash is a free data retrieval call binding the contract method 0x609d4544. +// +// Solidity: function committeeHash() view returns(bytes32) +func (_Polygondatacommittee *PolygondatacommitteeCaller) CommitteeHash(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Polygondatacommittee.contract.Call(opts, &out, "committeeHash") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// CommitteeHash is a free data retrieval call binding the contract method 0x609d4544. +// +// Solidity: function committeeHash() view returns(bytes32) +func (_Polygondatacommittee *PolygondatacommitteeSession) CommitteeHash() ([32]byte, error) { + return _Polygondatacommittee.Contract.CommitteeHash(&_Polygondatacommittee.CallOpts) +} + +// CommitteeHash is a free data retrieval call binding the contract method 0x609d4544. +// +// Solidity: function committeeHash() view returns(bytes32) +func (_Polygondatacommittee *PolygondatacommitteeCallerSession) CommitteeHash() ([32]byte, error) { + return _Polygondatacommittee.Contract.CommitteeHash(&_Polygondatacommittee.CallOpts) +} + +// GetAmountOfMembers is a free data retrieval call binding the contract method 0xdce1e2b6. +// +// Solidity: function getAmountOfMembers() view returns(uint256) +func (_Polygondatacommittee *PolygondatacommitteeCaller) GetAmountOfMembers(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Polygondatacommittee.contract.Call(opts, &out, "getAmountOfMembers") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetAmountOfMembers is a free data retrieval call binding the contract method 0xdce1e2b6. +// +// Solidity: function getAmountOfMembers() view returns(uint256) +func (_Polygondatacommittee *PolygondatacommitteeSession) GetAmountOfMembers() (*big.Int, error) { + return _Polygondatacommittee.Contract.GetAmountOfMembers(&_Polygondatacommittee.CallOpts) +} + +// GetAmountOfMembers is a free data retrieval call binding the contract method 0xdce1e2b6. +// +// Solidity: function getAmountOfMembers() view returns(uint256) +func (_Polygondatacommittee *PolygondatacommitteeCallerSession) GetAmountOfMembers() (*big.Int, error) { + return _Polygondatacommittee.Contract.GetAmountOfMembers(&_Polygondatacommittee.CallOpts) +} + +// GetProcotolName is a free data retrieval call binding the contract method 0xe4f17120. +// +// Solidity: function getProcotolName() pure returns(string) +func (_Polygondatacommittee *PolygondatacommitteeCaller) GetProcotolName(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Polygondatacommittee.contract.Call(opts, &out, "getProcotolName") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// GetProcotolName is a free data retrieval call binding the contract method 0xe4f17120. +// +// Solidity: function getProcotolName() pure returns(string) +func (_Polygondatacommittee *PolygondatacommitteeSession) GetProcotolName() (string, error) { + return _Polygondatacommittee.Contract.GetProcotolName(&_Polygondatacommittee.CallOpts) +} + +// GetProcotolName is a free data retrieval call binding the contract method 0xe4f17120. +// +// Solidity: function getProcotolName() pure returns(string) +func (_Polygondatacommittee *PolygondatacommitteeCallerSession) GetProcotolName() (string, error) { + return _Polygondatacommittee.Contract.GetProcotolName(&_Polygondatacommittee.CallOpts) +} + +// Members is a free data retrieval call binding the contract method 0x5daf08ca. +// +// Solidity: function members(uint256 ) view returns(string url, address addr) +func (_Polygondatacommittee *PolygondatacommitteeCaller) Members(opts *bind.CallOpts, arg0 *big.Int) (struct { + Url string + Addr common.Address +}, error) { + var out []interface{} + err := _Polygondatacommittee.contract.Call(opts, &out, "members", arg0) + + outstruct := new(struct { + Url string + Addr common.Address + }) + if err != nil { + return *outstruct, err + } + + outstruct.Url = *abi.ConvertType(out[0], new(string)).(*string) + outstruct.Addr = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) + + return *outstruct, err + +} + +// Members is a free data retrieval call binding the contract method 0x5daf08ca. +// +// Solidity: function members(uint256 ) view returns(string url, address addr) +func (_Polygondatacommittee *PolygondatacommitteeSession) Members(arg0 *big.Int) (struct { + Url string + Addr common.Address +}, error) { + return _Polygondatacommittee.Contract.Members(&_Polygondatacommittee.CallOpts, arg0) +} + +// Members is a free data retrieval call binding the contract method 0x5daf08ca. +// +// Solidity: function members(uint256 ) view returns(string url, address addr) +func (_Polygondatacommittee *PolygondatacommitteeCallerSession) Members(arg0 *big.Int) (struct { + Url string + Addr common.Address +}, error) { + return _Polygondatacommittee.Contract.Members(&_Polygondatacommittee.CallOpts, arg0) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Polygondatacommittee *PolygondatacommitteeCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygondatacommittee.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Polygondatacommittee *PolygondatacommitteeSession) Owner() (common.Address, error) { + return _Polygondatacommittee.Contract.Owner(&_Polygondatacommittee.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_Polygondatacommittee *PolygondatacommitteeCallerSession) Owner() (common.Address, error) { + return _Polygondatacommittee.Contract.Owner(&_Polygondatacommittee.CallOpts) +} + +// RequiredAmountOfSignatures is a free data retrieval call binding the contract method 0x6beedd39. +// +// Solidity: function requiredAmountOfSignatures() view returns(uint256) +func (_Polygondatacommittee *PolygondatacommitteeCaller) RequiredAmountOfSignatures(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Polygondatacommittee.contract.Call(opts, &out, "requiredAmountOfSignatures") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// RequiredAmountOfSignatures is a free data retrieval call binding the contract method 0x6beedd39. +// +// Solidity: function requiredAmountOfSignatures() view returns(uint256) +func (_Polygondatacommittee *PolygondatacommitteeSession) RequiredAmountOfSignatures() (*big.Int, error) { + return _Polygondatacommittee.Contract.RequiredAmountOfSignatures(&_Polygondatacommittee.CallOpts) +} + +// RequiredAmountOfSignatures is a free data retrieval call binding the contract method 0x6beedd39. +// +// Solidity: function requiredAmountOfSignatures() view returns(uint256) +func (_Polygondatacommittee *PolygondatacommitteeCallerSession) RequiredAmountOfSignatures() (*big.Int, error) { + return _Polygondatacommittee.Contract.RequiredAmountOfSignatures(&_Polygondatacommittee.CallOpts) +} + +// VerifyMessage is a free data retrieval call binding the contract method 0x3b51be4b. +// +// Solidity: function verifyMessage(bytes32 signedHash, bytes signaturesAndAddrs) view returns() +func (_Polygondatacommittee *PolygondatacommitteeCaller) VerifyMessage(opts *bind.CallOpts, signedHash [32]byte, signaturesAndAddrs []byte) error { + var out []interface{} + err := _Polygondatacommittee.contract.Call(opts, &out, "verifyMessage", signedHash, signaturesAndAddrs) + + if err != nil { + return err + } + + return err + +} + +// VerifyMessage is a free data retrieval call binding the contract method 0x3b51be4b. +// +// Solidity: function verifyMessage(bytes32 signedHash, bytes signaturesAndAddrs) view returns() +func (_Polygondatacommittee *PolygondatacommitteeSession) VerifyMessage(signedHash [32]byte, signaturesAndAddrs []byte) error { + return _Polygondatacommittee.Contract.VerifyMessage(&_Polygondatacommittee.CallOpts, signedHash, signaturesAndAddrs) +} + +// VerifyMessage is a free data retrieval call binding the contract method 0x3b51be4b. +// +// Solidity: function verifyMessage(bytes32 signedHash, bytes signaturesAndAddrs) view returns() +func (_Polygondatacommittee *PolygondatacommitteeCallerSession) VerifyMessage(signedHash [32]byte, signaturesAndAddrs []byte) error { + return _Polygondatacommittee.Contract.VerifyMessage(&_Polygondatacommittee.CallOpts, signedHash, signaturesAndAddrs) +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_Polygondatacommittee *PolygondatacommitteeTransactor) Initialize(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygondatacommittee.contract.Transact(opts, "initialize") +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_Polygondatacommittee *PolygondatacommitteeSession) Initialize() (*types.Transaction, error) { + return _Polygondatacommittee.Contract.Initialize(&_Polygondatacommittee.TransactOpts) +} + +// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// +// Solidity: function initialize() returns() +func (_Polygondatacommittee *PolygondatacommitteeTransactorSession) Initialize() (*types.Transaction, error) { + return _Polygondatacommittee.Contract.Initialize(&_Polygondatacommittee.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Polygondatacommittee *PolygondatacommitteeTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygondatacommittee.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Polygondatacommittee *PolygondatacommitteeSession) RenounceOwnership() (*types.Transaction, error) { + return _Polygondatacommittee.Contract.RenounceOwnership(&_Polygondatacommittee.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_Polygondatacommittee *PolygondatacommitteeTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _Polygondatacommittee.Contract.RenounceOwnership(&_Polygondatacommittee.TransactOpts) +} + +// SetupCommittee is a paid mutator transaction binding the contract method 0x078fba2a. +// +// Solidity: function setupCommittee(uint256 _requiredAmountOfSignatures, string[] urls, bytes addrsBytes) returns() +func (_Polygondatacommittee *PolygondatacommitteeTransactor) SetupCommittee(opts *bind.TransactOpts, _requiredAmountOfSignatures *big.Int, urls []string, addrsBytes []byte) (*types.Transaction, error) { + return _Polygondatacommittee.contract.Transact(opts, "setupCommittee", _requiredAmountOfSignatures, urls, addrsBytes) +} + +// SetupCommittee is a paid mutator transaction binding the contract method 0x078fba2a. +// +// Solidity: function setupCommittee(uint256 _requiredAmountOfSignatures, string[] urls, bytes addrsBytes) returns() +func (_Polygondatacommittee *PolygondatacommitteeSession) SetupCommittee(_requiredAmountOfSignatures *big.Int, urls []string, addrsBytes []byte) (*types.Transaction, error) { + return _Polygondatacommittee.Contract.SetupCommittee(&_Polygondatacommittee.TransactOpts, _requiredAmountOfSignatures, urls, addrsBytes) +} + +// SetupCommittee is a paid mutator transaction binding the contract method 0x078fba2a. +// +// Solidity: function setupCommittee(uint256 _requiredAmountOfSignatures, string[] urls, bytes addrsBytes) returns() +func (_Polygondatacommittee *PolygondatacommitteeTransactorSession) SetupCommittee(_requiredAmountOfSignatures *big.Int, urls []string, addrsBytes []byte) (*types.Transaction, error) { + return _Polygondatacommittee.Contract.SetupCommittee(&_Polygondatacommittee.TransactOpts, _requiredAmountOfSignatures, urls, addrsBytes) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Polygondatacommittee *PolygondatacommitteeTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _Polygondatacommittee.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Polygondatacommittee *PolygondatacommitteeSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Polygondatacommittee.Contract.TransferOwnership(&_Polygondatacommittee.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_Polygondatacommittee *PolygondatacommitteeTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _Polygondatacommittee.Contract.TransferOwnership(&_Polygondatacommittee.TransactOpts, newOwner) +} + +// PolygondatacommitteeCommitteeUpdatedIterator is returned from FilterCommitteeUpdated and is used to iterate over the raw logs and unpacked data for CommitteeUpdated events raised by the Polygondatacommittee contract. +type PolygondatacommitteeCommitteeUpdatedIterator struct { + Event *PolygondatacommitteeCommitteeUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygondatacommitteeCommitteeUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygondatacommitteeCommitteeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygondatacommitteeCommitteeUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygondatacommitteeCommitteeUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygondatacommitteeCommitteeUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygondatacommitteeCommitteeUpdated represents a CommitteeUpdated event raised by the Polygondatacommittee contract. +type PolygondatacommitteeCommitteeUpdated struct { + CommitteeHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCommitteeUpdated is a free log retrieval operation binding the contract event 0x831403fd381b3e6ac875d912ec2eee0e0203d0d29f7b3e0c96fc8f582d6db657. +// +// Solidity: event CommitteeUpdated(bytes32 committeeHash) +func (_Polygondatacommittee *PolygondatacommitteeFilterer) FilterCommitteeUpdated(opts *bind.FilterOpts) (*PolygondatacommitteeCommitteeUpdatedIterator, error) { + + logs, sub, err := _Polygondatacommittee.contract.FilterLogs(opts, "CommitteeUpdated") + if err != nil { + return nil, err + } + return &PolygondatacommitteeCommitteeUpdatedIterator{contract: _Polygondatacommittee.contract, event: "CommitteeUpdated", logs: logs, sub: sub}, nil +} + +// WatchCommitteeUpdated is a free log subscription operation binding the contract event 0x831403fd381b3e6ac875d912ec2eee0e0203d0d29f7b3e0c96fc8f582d6db657. +// +// Solidity: event CommitteeUpdated(bytes32 committeeHash) +func (_Polygondatacommittee *PolygondatacommitteeFilterer) WatchCommitteeUpdated(opts *bind.WatchOpts, sink chan<- *PolygondatacommitteeCommitteeUpdated) (event.Subscription, error) { + + logs, sub, err := _Polygondatacommittee.contract.WatchLogs(opts, "CommitteeUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygondatacommitteeCommitteeUpdated) + if err := _Polygondatacommittee.contract.UnpackLog(event, "CommitteeUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCommitteeUpdated is a log parse operation binding the contract event 0x831403fd381b3e6ac875d912ec2eee0e0203d0d29f7b3e0c96fc8f582d6db657. +// +// Solidity: event CommitteeUpdated(bytes32 committeeHash) +func (_Polygondatacommittee *PolygondatacommitteeFilterer) ParseCommitteeUpdated(log types.Log) (*PolygondatacommitteeCommitteeUpdated, error) { + event := new(PolygondatacommitteeCommitteeUpdated) + if err := _Polygondatacommittee.contract.UnpackLog(event, "CommitteeUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygondatacommitteeInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Polygondatacommittee contract. +type PolygondatacommitteeInitializedIterator struct { + Event *PolygondatacommitteeInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygondatacommitteeInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygondatacommitteeInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygondatacommitteeInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygondatacommitteeInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygondatacommitteeInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygondatacommitteeInitialized represents a Initialized event raised by the Polygondatacommittee contract. +type PolygondatacommitteeInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygondatacommittee *PolygondatacommitteeFilterer) FilterInitialized(opts *bind.FilterOpts) (*PolygondatacommitteeInitializedIterator, error) { + + logs, sub, err := _Polygondatacommittee.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &PolygondatacommitteeInitializedIterator{contract: _Polygondatacommittee.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygondatacommittee *PolygondatacommitteeFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PolygondatacommitteeInitialized) (event.Subscription, error) { + + logs, sub, err := _Polygondatacommittee.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygondatacommitteeInitialized) + if err := _Polygondatacommittee.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygondatacommittee *PolygondatacommitteeFilterer) ParseInitialized(log types.Log) (*PolygondatacommitteeInitialized, error) { + event := new(PolygondatacommitteeInitialized) + if err := _Polygondatacommittee.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygondatacommitteeOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Polygondatacommittee contract. +type PolygondatacommitteeOwnershipTransferredIterator struct { + Event *PolygondatacommitteeOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygondatacommitteeOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygondatacommitteeOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygondatacommitteeOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygondatacommitteeOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygondatacommitteeOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygondatacommitteeOwnershipTransferred represents a OwnershipTransferred event raised by the Polygondatacommittee contract. +type PolygondatacommitteeOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Polygondatacommittee *PolygondatacommitteeFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*PolygondatacommitteeOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Polygondatacommittee.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &PolygondatacommitteeOwnershipTransferredIterator{contract: _Polygondatacommittee.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Polygondatacommittee *PolygondatacommitteeFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *PolygondatacommitteeOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Polygondatacommittee.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygondatacommitteeOwnershipTransferred) + if err := _Polygondatacommittee.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_Polygondatacommittee *PolygondatacommitteeFilterer) ParseOwnershipTransferred(log types.Log) (*PolygondatacommitteeOwnershipTransferred, error) { + event := new(PolygondatacommitteeOwnershipTransferred) + if err := _Polygondatacommittee.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/etherman/smartcontracts/polygonvalidium/polygonvalidium.go b/etherman/smartcontracts/polygonvalidium/polygonvalidium.go new file mode 100644 index 00000000..e9271170 --- /dev/null +++ b/etherman/smartcontracts/polygonvalidium/polygonvalidium.go @@ -0,0 +1,3500 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package polygonvalidium + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// PolygonRollupBaseEtrogBatchData is an auto generated low-level Go binding around an user-defined struct. +type PolygonRollupBaseEtrogBatchData struct { + Transactions []byte + ForcedGlobalExitRoot [32]byte + ForcedTimestamp uint64 + ForcedBlockHashL1 [32]byte +} + +// PolygonValidiumEtrogValidiumBatchData is an auto generated low-level Go binding around an user-defined struct. +type PolygonValidiumEtrogValidiumBatchData struct { + TransactionsHash [32]byte + ForcedGlobalExitRoot [32]byte + ForcedTimestamp uint64 + ForcedBlockHashL1 [32]byte +} + +// PolygonvalidiumMetaData contains all meta data concerning the Polygonvalidium contract. +var PolygonvalidiumMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRootV2\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"_pol\",\"type\":\"address\"},{\"internalType\":\"contractIPolygonZkEVMBridgeV2\",\"name\":\"_bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"contractPolygonRollupManager\",\"name\":\"_rollupManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BatchAlreadyVerified\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchNotSequencedOrNotSequenceEnd\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExceedMaxVerifyBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchBelowLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FinalPendingStateNumInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesAlreadyActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesDescentralized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesNotAllowedOnEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForceBatchesOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForcedDataDoesNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasTokenNetworkMustBeZeroOnEther\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GlobalExitRootNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HaltTimeoutNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HaltTimeoutNotExpiredAfterEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HugeTokenMetadataNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchAboveLastVerifiedBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InitNumBatchDoesNotMatchPendingState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializeTransaction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeBatchTimeTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeForceBatchTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRangeMultiplierBatchFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewPendingStateTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewStateRootNotInsidePrime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewTrustedAggregatorTimeoutMustBeLower\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughMaticAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotEnoughPOLAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldAccInputHashDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OldStateRootDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPendingAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyRollupManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedAggregator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyTrustedSequencer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateNotConsolidable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingStateTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequenceWithDataAvailabilityNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequenceZeroBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampBelowForcedTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SequencedTimestampInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StoredRootMustBeDifferentThanNewRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwitchToSameValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransactionsLengthAboveMax\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutExceedHaltAggregationTimeout\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TrustedAggregatorTimeoutNotExpired\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AcceptAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"forceBatchNum\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"}],\"name\":\"ForceBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"lastGlobalExitRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"}],\"name\":\"InitialSequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"l1InfoRoot\",\"type\":\"bytes32\"}],\"name\":\"SequenceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"}],\"name\":\"SequenceForceBatches\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newDataAvailabilityProtocol\",\"type\":\"address\"}],\"name\":\"SetDataAvailabilityProtocol\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newForceBatchAddress\",\"type\":\"address\"}],\"name\":\"SetForceBatchAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"SetForceBatchTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"SetTrustedSequencer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"SetTrustedSequencerURL\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SwitchSequenceWithDataAvailability\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"TransferAdminRole\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"numBatch\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"VerifyBatches\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GLOBAL_EXIT_ROOT_MANAGER_L2\",\"outputs\":[{\"internalType\":\"contractIBasePolygonZkEVMGlobalExitRoot\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_LIST_LEN_LEN\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_PARAMS\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_CONSTANT_BYTES\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_DATA_LEN_EMPTY_METADATA\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INITIALIZE_TX_EFFECTIVE_PERCENTAGE\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"\",\"type\":\"bytes1\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIGNATURE_INITIALIZE_TX_R\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIGNATURE_INITIALIZE_TX_S\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIGNATURE_INITIALIZE_TX_V\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeAddress\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMBridgeV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"calculatePolPerForceBatch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dataAvailabilityProtocol\",\"outputs\":[{\"internalType\":\"contractIPolygonDataAvailabilityProtocol\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"polAmount\",\"type\":\"uint256\"}],\"name\":\"forceBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"forceBatchTimeout\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"forcedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gapLastTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasTokenNetwork\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"networkID\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_gasTokenNetwork\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_gasTokenMetadata\",\"type\":\"bytes\"}],\"name\":\"generateInitializeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRootV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sequencer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"networkID\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_gasTokenAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"sequencerURL\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_networkName\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSequenceWithDataAvailabilityAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastAccInputHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatch\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastForceBatchSequenced\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatch\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"newStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"aggregator\",\"type\":\"address\"}],\"name\":\"onVerifyBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pol\",\"outputs\":[{\"internalType\":\"contractIERC20Upgradeable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupManager\",\"outputs\":[{\"internalType\":\"contractPolygonRollupManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"forcedGlobalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"forcedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"forcedBlockHashL1\",\"type\":\"bytes32\"}],\"internalType\":\"structPolygonRollupBaseEtrog.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"l2Coinbase\",\"type\":\"address\"}],\"name\":\"sequenceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"transactionsHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"forcedGlobalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"forcedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"forcedBlockHashL1\",\"type\":\"bytes32\"}],\"internalType\":\"structPolygonValidiumEtrog.ValidiumBatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"l2Coinbase\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"dataAvailabilityMessage\",\"type\":\"bytes\"}],\"name\":\"sequenceBatchesValidium\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"transactions\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"forcedGlobalExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"forcedTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"forcedBlockHashL1\",\"type\":\"bytes32\"}],\"internalType\":\"structPolygonRollupBaseEtrog.BatchData[]\",\"name\":\"batches\",\"type\":\"tuple[]\"}],\"name\":\"sequenceForceBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIPolygonDataAvailabilityProtocol\",\"name\":\"newDataAvailabilityProtocol\",\"type\":\"address\"}],\"name\":\"setDataAvailabilityProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newForceBatchAddress\",\"type\":\"address\"}],\"name\":\"setForceBatchAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newforceBatchTimeout\",\"type\":\"uint64\"}],\"name\":\"setForceBatchTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTrustedSequencer\",\"type\":\"address\"}],\"name\":\"setTrustedSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newTrustedSequencerURL\",\"type\":\"string\"}],\"name\":\"setTrustedSequencerURL\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"switchSequenceWithDataAvailability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newPendingAdmin\",\"type\":\"address\"}],\"name\":\"transferAdminRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"trustedSequencerURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x6101006040523480156200001257600080fd5b506040516200551238038062005512833981016040819052620000359162000071565b6001600160a01b0393841660a052918316608052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e05161532d620001e56000396000818161056101528181610fd60152818161109f015281816110c1015281816111d90152818161133b015281816114a8015281816116fb01528181611c68015281816121d701528181612649015281816126ff01528181612e5501528181612f1d01528181613d3001528181613db101528181613dd30152613e7e01526000818161070301528181610b3001528181611955015281816128cf015281816129d701526138560152600081816107cf01528181610bb201528181611adc0152818161306801526138d8015260008181610801015281816108ff015281816110290152818161116f015261303c015261532d6000f3fe608060405234801561001057600080fd5b506004361061031f5760003560e01c80637a5460c5116101a7578063c7fffd4b116100ee578063e57a0b4c11610097578063ecef3f9911610071578063ecef3f9914610876578063f35dda4714610889578063f851a4401461089157600080fd5b8063e57a0b4c14610823578063e7a7ed0214610843578063eaeb077b1461086357600080fd5b8063d02103ca116100c8578063d02103ca146107ca578063d7bc90ff146107f1578063e46761c4146107fc57600080fd5b8063c7fffd4b1461078f578063c89e42df14610797578063cfa8ed47146107aa57600080fd5b8063a3c573eb11610150578063ada8f9191161012a578063ada8f91914610740578063b0afe15414610753578063c754c7ed1461075f57600080fd5b8063a3c573eb146106fe578063a652f26c14610725578063aa3587d31461073857600080fd5b806391cafe321161018157806391cafe32146106bd5780639e001877146106d05780639f26f840146106eb57600080fd5b80637a5460c5146106665780637cd76b8b146106a25780638c3d7301146106b557600080fd5b806340b5de6c1161026b578063542028d5116102145780636e05d2cd116101ee5780636e05d2cd146106375780636ff512cc14610640578063712570221461065357600080fd5b8063542028d514610607578063676870d21461060f5780636b8616ce1461061757600080fd5b80634c21fef3116102455780634c21fef3146105835780634e487706146105b857806352bdeb6d146105cb57600080fd5b806340b5de6c146104dc578063456052671461053457806349b7b8021461055c57600080fd5b80632a9f208f116102cd57806332c2d153116102a757806332c2d1531461046c5780633c351e101461047f5780633cbc795b1461049f57600080fd5b80632a9f208f1461040a5780632c111c06146104375780632d72c2481461045757600080fd5b8063107bf28c116102fe578063107bf28c146103a357806311e892d4146103ab57806326782247146103c557600080fd5b8062d0295d14610324578063035089631461033f57806305835f371461035a575b600080fd5b61032c6108b7565b6040519081526020015b60405180910390f35b610347602081565b60405161ffff9091168152602001610336565b6103966040518060400160405280600881526020017f80808401c9c3809400000000000000000000000000000000000000000000000081525081565b6040516103369190614419565b6103966109d7565b6103b360f981565b60405160ff9091168152602001610336565b6001546103e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610336565b60075461041e9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610336565b6008546103e59073ffffffffffffffffffffffffffffffffffffffff1681565b61046a6104653660046144ac565b610a65565b005b61046a61047a366004614574565b611339565b6009546103e59073ffffffffffffffffffffffffffffffffffffffff1681565b6009546104c79074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610336565b6105037fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610336565b60075461041e90700100000000000000000000000000000000900467ffffffffffffffff1681565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b600a546105a89074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610336565b61046a6105c63660046145b6565b611408565b6103966040518060400160405280600281526020017f80b800000000000000000000000000000000000000000000000000000000000081525081565b610396611622565b610347601f81565b61032c6106253660046145b6565b60066020526000908152604090205481565b61032c60055481565b61046a61064e3660046145d3565b61162f565b61046a610661366004614745565b6116f9565b6103966040518060400160405280600281526020017f80b900000000000000000000000000000000000000000000000000000000000081525081565b61046a6106b03660046145d3565b611ea4565b61046a611f6e565b61046a6106cb3660046145d3565b612041565b6103e573a40d5f56745a118d0906a34e69aec8c0db1cb8fa81565b61046a6106f9366004614837565b61215a565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b610396610733366004614879565b6127ce565b61046a612bb3565b61046a61074e3660046145d3565b612c80565b61032c6405ca1ab1e081565b60075461041e907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b6103b360e481565b61046a6107a53660046148ee565b612d4a565b6002546103e59073ffffffffffffffffffffffffffffffffffffffff1681565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b61032c635ca1ab1e81565b6103e57f000000000000000000000000000000000000000000000000000000000000000081565b600a546103e59073ffffffffffffffffffffffffffffffffffffffff1681565b60075461041e9068010000000000000000900467ffffffffffffffff1681565b61046a610871366004614923565b612ddd565b61046a61088436600461496f565b6132e5565b6103b3601b81565b6000546103e59062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a91906149bb565b6007549091506000906109a99067ffffffffffffffff700100000000000000000000000000000000820481169168010000000000000000900416614a03565b67ffffffffffffffff169050806000036109c65760009250505090565b6109d08183614a2b565b9250505090565b600480546109e490614a66565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1090614a66565b8015610a5d5780601f10610a3257610100808354040283529160200191610a5d565b820191906000526020600020905b815481529060010190602001808311610a4057829003601f168201915b505050505081565b60025473ffffffffffffffffffffffffffffffffffffffff163314610ab6576040517f11e7be1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836000819003610af2576040517fcb591a5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e8811115610b2e576040517fb59f753a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379e2cf976040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b9657600080fd5b505af1158015610baa573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ca1e1656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f91906149bb565b600754600554919250429170010000000000000000000000000000000090910467ffffffffffffffff16908160005b86811015610f3c5760008c8c83818110610c8a57610c8a614ab9565b905060800201803603810190610ca09190614ae8565b604081015190915067ffffffffffffffff1615610e945784610cc181614b36565b95505060008160000151826020015183604001518460600151604051602001610d289493929190938452602084019290925260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166040830152604882015260680190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012067ffffffffffffffff8916600090815260069093529120549091508114610db1576040517fce3d755e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848260000151836020015184604001518f8660600151604051602001610e4b969594939291909586526020860194909452604085019290925260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166060808501919091521b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166068830152607c820152609c0190565b604051602081830303815290604052805190602001209450600660008767ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206000905550610f29565b8051604080516020810187905290810191909152606080820189905260c088901b7fffffffffffffffff0000000000000000000000000000000000000000000000001660808301528c901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660888201526000609c82015260bc016040516020818303038152906040528051906020012093505b5080610f3481614b5d565b915050610c6e565b5060075467ffffffffffffffff6801000000000000000090910481169084161115610f93576040517fc630a00d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290558567ffffffffffffffff84811690831614611099576000610fb98386614a03565b9050610fcf67ffffffffffffffff821683614b95565b91506110507f00000000000000000000000000000000000000000000000000000000000000008267ffffffffffffffff166110086108b7565b6110129190614ba8565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169190613349565b50600780547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff8716021790555b611197337f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663477fa2706040518163ffffffff1660e01b8152600401602060405180830381865afa15801561112a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114e91906149bb565b6111589190614ba8565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692919061341d565b6040517f9a908e7300000000000000000000000000000000000000000000000000000000815267ffffffffffffffff88166004820152602481018490526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690639a908e73906044016020604051808303816000875af1158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125b9190614bbf565b600a546040517f3b51be4b00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690633b51be4b906112b69087908e908e90600401614c25565b60006040518083038186803b1580156112ce57600080fd5b505afa1580156112e2573d6000803e3d6000fd5b505050508067ffffffffffffffff167f3e54d0825ed78523037d00a81759237eb436ce774bd546993ee67a1b67b6e7668860405161132291815260200190565b60405180910390a250505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146113a8576040517fb9b3a2c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966846040516113fb91815260200190565b60405180910390a3505050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16331461145f576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62093a8067ffffffffffffffff821611156114a6576040517ff5e37f2f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166315064c966040518163ffffffff1660e01b8152600401602060405180830381865afa158015611511573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115359190614c48565b61159e5760075467ffffffffffffffff780100000000000000000000000000000000000000000000000090910481169082161061159e576040517ff5e37f2f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007805477ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff8416908102919091179091556040519081527fa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b906020015b60405180910390a150565b600380546109e490614a66565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314611686576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001611617565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314611768576040517fb9b3a2c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff16158080156117885750600054600160ff909116105b806117a25750303b1580156117a2575060005460ff166001145b611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561189157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606073ffffffffffffffffffffffffffffffffffffffff851615611a7d576118b885613481565b6118c186613591565b6118ca87613698565b6040516020016118dc93929190614c6a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f318aee3d00000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff878116600484015290925060009182917f0000000000000000000000000000000000000000000000000000000000000000169063318aee3d9060240160408051808303816000875af115801561199d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c19190614ca3565b915091508163ffffffff16600014611a39576009805463ffffffff841674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff841617179055611a7a565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89161790555b50505b600954600090611ac590889073ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900463ffffffff16856127ce565b9050600081805190602001209050600042905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ed691ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6991906149bb565b90506000808483858f611b7d600143614b95565b60408051602081019790975286019490945260608086019390935260c09190911b7fffffffffffffffff000000000000000000000000000000000000000000000000166080850152901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016608883015240609c82015260bc01604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052805160209091012060058190557f9a908e73000000000000000000000000000000000000000000000000000000008252600160048301526024820181905291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690639a908e73906044016020604051808303816000875af1158015611cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cea9190614bbf565b508c600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508860039081611d7c9190614d2b565b506004611d898982614d2b565b508c600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062069780600760186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507f060116213bcbf54ca19fd649dc84b59ab2bbd200ab199770e4d923e222a28e7f85838e604051611e2a93929190614e45565b60405180910390a15050505050508015611e9b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314611efb576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd331bd4c4cd1afecb94a225184bded161ff3213624ba4fb58c4f30c5a861144a90602001611617565b60015473ffffffffffffffffffffffffffffffffffffffff163314611fbf576040517fd1ec4b2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff1673ffffffffffffffffffffffffffffffffffffffff9092166201000081029290921790556040519081527f056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e9060200160405180910390a1565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314612098576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085473ffffffffffffffffffffffffffffffffffffffff166120e7576040517fd40d91c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f5fbd7dd171301c4a1611a84aac4ba86d119478560557755f7927595b082634fb90602001611617565b60085473ffffffffffffffffffffffffffffffffffffffff1615801590612199575060085473ffffffffffffffffffffffffffffffffffffffff163314155b156121d0576040517f24eff8c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4262093a807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166330c27dde6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612240573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122649190614bbf565b61226e9190614e84565b67ffffffffffffffff1611156122b0576040517f3d49ed4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190036122ec576040517fcb591a5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e8811115612328576040517fb59f753a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075467ffffffffffffffff680100000000000000008204811691612363918491700100000000000000000000000000000000900416614ea5565b111561239b576040517fc630a00d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075460055470010000000000000000000000000000000090910467ffffffffffffffff169060005b838110156126435760008686838181106123e0576123e0614ab9565b90506020028101906123f29190614eb8565b6123fb90614ef6565b90508361240781614b36565b825180516020918201208185015160408087015160608801519151959a50929550600094612474948794929101938452602084019290925260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166040830152604882015260680190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012067ffffffffffffffff89166000908152600690935291205490915081146124fd576040517fce3d755e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8616600090815260066020526040812055612522600188614b95565b84036125915742600760189054906101000a900467ffffffffffffffff16846040015161254f9190614e84565b67ffffffffffffffff161115612591576040517fc44a082100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208381015160408086015160608088015183519586018b90529285018790528481019390935260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660808401523390911b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088830152609c82015260bc01604051602081830303815290604052805190602001209450505050808061263b90614b5d565b9150506123c4565b506126717f0000000000000000000000000000000000000000000000000000000000000000846110086108b7565b60058190556007805467ffffffffffffffff8416700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff9091161790556040517f9a908e7300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690639a908e739061274b908790869060040167ffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af115801561276a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278e9190614bbf565b60405190915067ffffffffffffffff8216907f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a490600090a2505050505050565b6060600085858573a40d5f56745a118d0906a34e69aec8c0db1cb8fa60008760405160240161280296959493929190614f64565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff811bff70000000000000000000000000000000000000000000000000000000017905283519091506060906000036129535760f9601f83516128979190614fc7565b6040518060400160405280600881526020017f80808401c9c380940000000000000000000000000000000000000000000000008152507f00000000000000000000000000000000000000000000000000000000000000006040518060400160405280600281526020017f80b800000000000000000000000000000000000000000000000000000000000081525060e48760405160200161293d9796959493929190614fe2565b6040516020818303038152906040529050612a57565b815161ffff1015612990576040517f248b8f8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160f961299f602083614fc7565b6040518060400160405280600881526020017f80808401c9c380940000000000000000000000000000000000000000000000008152507f00000000000000000000000000000000000000000000000000000000000000006040518060400160405280600281526020017f80b90000000000000000000000000000000000000000000000000000000000008152508588604051602001612a4497969594939291906150c5565b6040516020818303038152906040529150505b805160208083019190912060408051600080825293810180835292909252601b908201526405ca1ab1e06060820152635ca1ab1e608082015260019060a0016020604051602081039080840390855afa158015612ab8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612b30576040517fcd16196600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051600090612b769084906405ca1ab1e090635ca1ab1e90601b907fff00000000000000000000000000000000000000000000000000000000000000906020016151a8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529450505050505b949350505050565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314612c0a576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116740100000000000000000000000000000000000000009182900460ff16159091021790556040517ff32a0473f809a720a4f8af1e50d353f1caf7452030626fdaac4273f5e6587f4190600090a1565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314612cd7576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce690602001611617565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff163314612da1576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003612dad8282614d2b565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20816040516116179190614419565b60085473ffffffffffffffffffffffffffffffffffffffff1615801590612e1c575060085473ffffffffffffffffffffffffffffffffffffffff163314155b15612e53576040517f24eff8c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166315064c966040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee29190614c48565b15612f19576040517f39258d1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663604691696040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612faa91906149bb565b905081811115612fe6576040517f2354600f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611388831115613022576040517fa29a6c7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61306473ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633308461341d565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633ed691ef6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f591906149bb565b600780549192506801000000000000000090910467ffffffffffffffff1690600861311f83614b36565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508484604051613156929190615204565b604051908190039020814261316c600143614b95565b60408051602081019590955284019290925260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166060830152406068820152608801604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152918152815160209283012060075468010000000000000000900467ffffffffffffffff166000908152600690935291205532330361327f576007546040805183815233602082015260609181018290526000918101919091526801000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a26132de565b600760089054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823388886040516132d59493929190615214565b60405180910390a25b5050505050565b600a5474010000000000000000000000000000000000000000900460ff16613339576040517f821935b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61334483838361378b565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526133449084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613f53565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261347b9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161339b565b50505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f06fdde03000000000000000000000000000000000000000000000000000000001790529051606091600091829173ffffffffffffffffffffffffffffffffffffffff8616916135039190615254565b600060405180830381855afa9150503d806000811461353e576040519150601f19603f3d011682016040523d82523d6000602084013e613543565b606091505b509150915081613588576040518060400160405280600781526020017f4e4f5f4e414d4500000000000000000000000000000000000000000000000000815250612bab565b612bab8161405f565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f95d89b41000000000000000000000000000000000000000000000000000000001790529051606091600091829173ffffffffffffffffffffffffffffffffffffffff8616916136139190615254565b600060405180830381855afa9150503d806000811461364e576040519150601f19603f3d011682016040523d82523d6000602084013e613653565b606091505b509150915081613588576040518060400160405280600981526020017f4e4f5f53594d424f4c0000000000000000000000000000000000000000000000815250612bab565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce5670000000000000000000000000000000000000000000000000000000017905290516000918291829173ffffffffffffffffffffffffffffffffffffffff8616916137199190615254565b600060405180830381855afa9150503d8060008114613754576040519150601f19603f3d011682016040523d82523d6000602084013e613759565b606091505b509150915081801561376c575080516020145b613777576012612bab565b80806020019051810190612bab9190615266565b60025473ffffffffffffffffffffffffffffffffffffffff1633146137dc576040517f11e7be1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816000819003613818576040517fcb591a5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103e8811115613854576040517fb59f753a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379e2cf976040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156138bc57600080fd5b505af11580156138d0573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ca1e1656040518163ffffffff1660e01b8152600401602060405180830381865afa158015613941573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396591906149bb565b600754600554919250429170010000000000000000000000000000000090910467ffffffffffffffff16908160005b86811015613c965760008a8a838181106139b0576139b0614ab9565b90506020028101906139c29190614eb8565b6139cb90614ef6565b8051805160209091012060408201519192509067ffffffffffffffff1615613bb057856139f781614b36565b965050600081836020015184604001518560600151604051602001613a5a9493929190938452602084019290925260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166040830152604882015260680190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012067ffffffffffffffff8a16600090815260069093529120549091508114613ae3576040517fce3d755e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208381015160408086015160608088015183519586018c90529285018790528481019390935260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166080840152908d901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088830152609c82015260bc01604051602081830303815290604052805190602001209550600660008867ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000206000905550613c81565b8151516201d4c01015613bef576040517fa29a6c7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516020810187905290810182905260608082018a905260c089901b7fffffffffffffffff0000000000000000000000000000000000000000000000001660808301528b901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660888201526000609c82015260bc016040516020818303038152906040528051906020012094505b50508080613c8e90614b5d565b915050613994565b5060075467ffffffffffffffff6801000000000000000090910481169084161115613ced576040517fc630a00d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290558567ffffffffffffffff84811690831614613dab576000613d138386614a03565b9050613d2967ffffffffffffffff821683614b95565b9150613d627f00000000000000000000000000000000000000000000000000000000000000008267ffffffffffffffff166110086108b7565b50600780547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff8716021790555b613e3c337f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663477fa2706040518163ffffffff1660e01b8152600401602060405180830381865afa15801561112a573d6000803e3d6000fd5b6040517f9a908e7300000000000000000000000000000000000000000000000000000000815267ffffffffffffffff88166004820152602481018490526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690639a908e73906044016020604051808303816000875af1158015613edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f009190614bbf565b90508067ffffffffffffffff167f3e54d0825ed78523037d00a81759237eb436ce774bd546993ee67a1b67b6e76688604051613f3e91815260200190565b60405180910390a25050505050505050505050565b6000613fb5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661423a9092919063ffffffff16565b8051909150156133445780806020019051810190613fd39190614c48565b613344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161182a565b60606040825110614084578180602001905181019061407e9190615289565b92915050565b81516020036141fc5760005b6020811080156140d757508281815181106140ad576140ad614ab9565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615155b156140ee57806140e681614b5d565b915050614090565b8060000361413157505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e4700000000000000000000000000006020820152919050565b60008167ffffffffffffffff81111561414c5761414c614602565b6040519080825280601f01601f191660200182016040528015614176576020820181803683370190505b50905060005b828110156141f45784818151811061419657614196614ab9565b602001015160f81c60f81b8282815181106141b3576141b3614ab9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350806141ec81614b5d565b91505061417c565b509392505050565b505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e470000000000000000000000000000602082015290565b919050565b6060612bab8484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161426e9190615254565b60006040518083038185875af1925050503d80600081146142ab576040519150601f19603f3d011682016040523d82523d6000602084013e6142b0565b606091505b50915091506142c1878383876142cc565b979650505050505050565b6060831561436257825160000361435b5773ffffffffffffffffffffffffffffffffffffffff85163b61435b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161182a565b5081612bab565b612bab83838151156143775781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a9190614419565b60005b838110156143c65781810151838201526020016143ae565b50506000910152565b600081518084526143e78160208601602086016143ab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061442c60208301846143cf565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461445557600080fd5b50565b803561423581614433565b60008083601f84011261447557600080fd5b50813567ffffffffffffffff81111561448d57600080fd5b6020830191508360208285010111156144a557600080fd5b9250929050565b6000806000806000606086880312156144c457600080fd5b853567ffffffffffffffff808211156144dc57600080fd5b818801915088601f8301126144f057600080fd5b8135818111156144ff57600080fd5b8960208260071b850101111561451457600080fd5b6020830197508096505061452a60208901614458565b9450604088013591508082111561454057600080fd5b5061454d88828901614463565b969995985093965092949392505050565b67ffffffffffffffff8116811461445557600080fd5b60008060006060848603121561458957600080fd5b83356145948161455e565b92506020840135915060408401356145ab81614433565b809150509250925092565b6000602082840312156145c857600080fd5b813561442c8161455e565b6000602082840312156145e557600080fd5b813561442c81614433565b63ffffffff8116811461445557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561465457614654614602565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156146a1576146a1614602565b604052919050565b600067ffffffffffffffff8211156146c3576146c3614602565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261470057600080fd5b813561471361470e826146a9565b61465a565b81815284602083860101111561472857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c0878903121561475e57600080fd5b863561476981614433565b9550602087013561477981614433565b94506040870135614789816145f0565b9350606087013561479981614433565b9250608087013567ffffffffffffffff808211156147b657600080fd5b6147c28a838b016146ef565b935060a08901359150808211156147d857600080fd5b506147e589828a016146ef565b9150509295509295509295565b60008083601f84011261480457600080fd5b50813567ffffffffffffffff81111561481c57600080fd5b6020830191508360208260051b85010111156144a557600080fd5b6000806020838503121561484a57600080fd5b823567ffffffffffffffff81111561486157600080fd5b61486d858286016147f2565b90969095509350505050565b6000806000806080858703121561488f57600080fd5b843561489a816145f0565b935060208501356148aa81614433565b925060408501356148ba816145f0565b9150606085013567ffffffffffffffff8111156148d657600080fd5b6148e2878288016146ef565b91505092959194509250565b60006020828403121561490057600080fd5b813567ffffffffffffffff81111561491757600080fd5b612bab848285016146ef565b60008060006040848603121561493857600080fd5b833567ffffffffffffffff81111561494f57600080fd5b61495b86828701614463565b909790965060209590950135949350505050565b60008060006040848603121561498457600080fd5b833567ffffffffffffffff81111561499b57600080fd5b6149a7868287016147f2565b90945092505060208401356145ab81614433565b6000602082840312156149cd57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b67ffffffffffffffff828116828216039080821115614a2457614a246149d4565b5092915050565b600082614a61577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600181811c90821680614a7a57607f821691505b602082108103614ab3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060808284031215614afa57600080fd5b614b02614631565b82358152602083013560208201526040830135614b1e8161455e565b60408201526060928301359281019290925250919050565b600067ffffffffffffffff808316818103614b5357614b536149d4565b6001019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b8e57614b8e6149d4565b5060010190565b8181038181111561407e5761407e6149d4565b808202811582820484141761407e5761407e6149d4565b600060208284031215614bd157600080fd5b815161442c8161455e565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b838152604060208201526000614c3f604083018486614bdc565b95945050505050565b600060208284031215614c5a57600080fd5b8151801515811461442c57600080fd5b606081526000614c7d60608301866143cf565b8281036020840152614c8f81866143cf565b91505060ff83166040830152949350505050565b60008060408385031215614cb657600080fd5b8251614cc1816145f0565b6020840151909250614cd281614433565b809150509250929050565b601f82111561334457600081815260208120601f850160051c81016020861015614d045750805b601f850160051c820191505b81811015614d2357828155600101614d10565b505050505050565b815167ffffffffffffffff811115614d4557614d45614602565b614d5981614d538454614a66565b84614cdd565b602080601f831160018114614dac5760008415614d765750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555614d23565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015614df957888601518255948401946001909101908401614dda565b5085821015614e3557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b606081526000614e5860608301866143cf565b905083602083015273ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b67ffffffffffffffff818116838216019080821115614a2457614a246149d4565b8082018082111561407e5761407e6149d4565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112614eec57600080fd5b9190910192915050565b600060808236031215614f0857600080fd5b614f10614631565b823567ffffffffffffffff811115614f2757600080fd5b614f33368286016146ef565b825250602083013560208201526040830135614f4e8161455e565b6040820152606092830135928101929092525090565b600063ffffffff808916835273ffffffffffffffffffffffffffffffffffffffff8089166020850152818816604085015280871660608501528086166080850152505060c060a0830152614fbb60c08301846143cf565b98975050505050505050565b61ffff818116838216019080821115614a2457614a246149d4565b60007fff00000000000000000000000000000000000000000000000000000000000000808a60f81b1683527fffff0000000000000000000000000000000000000000000000000000000000008960f01b166001840152875161504b816003860160208c016143ab565b80840190507fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008860601b166003820152865161508e816017840160208b016143ab565b808201915050818660f81b166017820152845191506150b48260188301602088016143ab565b016018019998505050505050505050565b7fff000000000000000000000000000000000000000000000000000000000000008860f81b16815260007fffff000000000000000000000000000000000000000000000000000000000000808960f01b166001840152875161512e816003860160208c016143ab565b80840190507fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008860601b1660038201528651615171816017840160208b016143ab565b808201915050818660f01b166017820152845191506151978260198301602088016143ab565b016019019998505050505050505050565b600086516151ba818460208b016143ab565b9190910194855250602084019290925260f81b7fff000000000000000000000000000000000000000000000000000000000000009081166040840152166041820152604201919050565b8183823760009101908152919050565b84815273ffffffffffffffffffffffffffffffffffffffff8416602082015260606040820152600061524a606083018486614bdc565b9695505050505050565b60008251614eec8184602087016143ab565b60006020828403121561527857600080fd5b815160ff8116811461442c57600080fd5b60006020828403121561529b57600080fd5b815167ffffffffffffffff8111156152b257600080fd5b8201601f810184136152c357600080fd5b80516152d161470e826146a9565b8181528560208385010111156152e657600080fd5b614c3f8260208301602086016143ab56fea26469706673582212202fd80959a1184f22bb4fffd043a1ac00b8eb3aa4ef72c43f73460ecc6e4e644364736f6c63430008140033", +} + +// PolygonvalidiumABI is the input ABI used to generate the binding from. +// Deprecated: Use PolygonvalidiumMetaData.ABI instead. +var PolygonvalidiumABI = PolygonvalidiumMetaData.ABI + +// PolygonvalidiumBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use PolygonvalidiumMetaData.Bin instead. +var PolygonvalidiumBin = PolygonvalidiumMetaData.Bin + +// DeployPolygonvalidium deploys a new Ethereum contract, binding an instance of Polygonvalidium to it. +func DeployPolygonvalidium(auth *bind.TransactOpts, backend bind.ContractBackend, _globalExitRootManager common.Address, _pol common.Address, _bridgeAddress common.Address, _rollupManager common.Address) (common.Address, *types.Transaction, *Polygonvalidium, error) { + parsed, err := PolygonvalidiumMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PolygonvalidiumBin), backend, _globalExitRootManager, _pol, _bridgeAddress, _rollupManager) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &Polygonvalidium{PolygonvalidiumCaller: PolygonvalidiumCaller{contract: contract}, PolygonvalidiumTransactor: PolygonvalidiumTransactor{contract: contract}, PolygonvalidiumFilterer: PolygonvalidiumFilterer{contract: contract}}, nil +} + +// Polygonvalidium is an auto generated Go binding around an Ethereum contract. +type Polygonvalidium struct { + PolygonvalidiumCaller // Read-only binding to the contract + PolygonvalidiumTransactor // Write-only binding to the contract + PolygonvalidiumFilterer // Log filterer for contract events +} + +// PolygonvalidiumCaller is an auto generated read-only Go binding around an Ethereum contract. +type PolygonvalidiumCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygonvalidiumTransactor is an auto generated write-only Go binding around an Ethereum contract. +type PolygonvalidiumTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygonvalidiumFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type PolygonvalidiumFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// PolygonvalidiumSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type PolygonvalidiumSession struct { + Contract *Polygonvalidium // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PolygonvalidiumCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type PolygonvalidiumCallerSession struct { + Contract *PolygonvalidiumCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// PolygonvalidiumTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type PolygonvalidiumTransactorSession struct { + Contract *PolygonvalidiumTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// PolygonvalidiumRaw is an auto generated low-level Go binding around an Ethereum contract. +type PolygonvalidiumRaw struct { + Contract *Polygonvalidium // Generic contract binding to access the raw methods on +} + +// PolygonvalidiumCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type PolygonvalidiumCallerRaw struct { + Contract *PolygonvalidiumCaller // Generic read-only contract binding to access the raw methods on +} + +// PolygonvalidiumTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type PolygonvalidiumTransactorRaw struct { + Contract *PolygonvalidiumTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewPolygonvalidium creates a new instance of Polygonvalidium, bound to a specific deployed contract. +func NewPolygonvalidium(address common.Address, backend bind.ContractBackend) (*Polygonvalidium, error) { + contract, err := bindPolygonvalidium(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Polygonvalidium{PolygonvalidiumCaller: PolygonvalidiumCaller{contract: contract}, PolygonvalidiumTransactor: PolygonvalidiumTransactor{contract: contract}, PolygonvalidiumFilterer: PolygonvalidiumFilterer{contract: contract}}, nil +} + +// NewPolygonvalidiumCaller creates a new read-only instance of Polygonvalidium, bound to a specific deployed contract. +func NewPolygonvalidiumCaller(address common.Address, caller bind.ContractCaller) (*PolygonvalidiumCaller, error) { + contract, err := bindPolygonvalidium(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &PolygonvalidiumCaller{contract: contract}, nil +} + +// NewPolygonvalidiumTransactor creates a new write-only instance of Polygonvalidium, bound to a specific deployed contract. +func NewPolygonvalidiumTransactor(address common.Address, transactor bind.ContractTransactor) (*PolygonvalidiumTransactor, error) { + contract, err := bindPolygonvalidium(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &PolygonvalidiumTransactor{contract: contract}, nil +} + +// NewPolygonvalidiumFilterer creates a new log filterer instance of Polygonvalidium, bound to a specific deployed contract. +func NewPolygonvalidiumFilterer(address common.Address, filterer bind.ContractFilterer) (*PolygonvalidiumFilterer, error) { + contract, err := bindPolygonvalidium(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &PolygonvalidiumFilterer{contract: contract}, nil +} + +// bindPolygonvalidium binds a generic wrapper to an already deployed contract. +func bindPolygonvalidium(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := PolygonvalidiumMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Polygonvalidium *PolygonvalidiumRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Polygonvalidium.Contract.PolygonvalidiumCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Polygonvalidium *PolygonvalidiumRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonvalidium.Contract.PolygonvalidiumTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Polygonvalidium *PolygonvalidiumRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Polygonvalidium.Contract.PolygonvalidiumTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Polygonvalidium *PolygonvalidiumCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Polygonvalidium.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Polygonvalidium *PolygonvalidiumTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonvalidium.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Polygonvalidium *PolygonvalidiumTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Polygonvalidium.Contract.contract.Transact(opts, method, params...) +} + +// GLOBALEXITROOTMANAGERL2 is a free data retrieval call binding the contract method 0x9e001877. +// +// Solidity: function GLOBAL_EXIT_ROOT_MANAGER_L2() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCaller) GLOBALEXITROOTMANAGERL2(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "GLOBAL_EXIT_ROOT_MANAGER_L2") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GLOBALEXITROOTMANAGERL2 is a free data retrieval call binding the contract method 0x9e001877. +// +// Solidity: function GLOBAL_EXIT_ROOT_MANAGER_L2() view returns(address) +func (_Polygonvalidium *PolygonvalidiumSession) GLOBALEXITROOTMANAGERL2() (common.Address, error) { + return _Polygonvalidium.Contract.GLOBALEXITROOTMANAGERL2(&_Polygonvalidium.CallOpts) +} + +// GLOBALEXITROOTMANAGERL2 is a free data retrieval call binding the contract method 0x9e001877. +// +// Solidity: function GLOBAL_EXIT_ROOT_MANAGER_L2() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCallerSession) GLOBALEXITROOTMANAGERL2() (common.Address, error) { + return _Polygonvalidium.Contract.GLOBALEXITROOTMANAGERL2(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXBRIDGELISTLENLEN is a free data retrieval call binding the contract method 0x11e892d4. +// +// Solidity: function INITIALIZE_TX_BRIDGE_LIST_LEN_LEN() view returns(uint8) +func (_Polygonvalidium *PolygonvalidiumCaller) INITIALIZETXBRIDGELISTLENLEN(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "INITIALIZE_TX_BRIDGE_LIST_LEN_LEN") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// INITIALIZETXBRIDGELISTLENLEN is a free data retrieval call binding the contract method 0x11e892d4. +// +// Solidity: function INITIALIZE_TX_BRIDGE_LIST_LEN_LEN() view returns(uint8) +func (_Polygonvalidium *PolygonvalidiumSession) INITIALIZETXBRIDGELISTLENLEN() (uint8, error) { + return _Polygonvalidium.Contract.INITIALIZETXBRIDGELISTLENLEN(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXBRIDGELISTLENLEN is a free data retrieval call binding the contract method 0x11e892d4. +// +// Solidity: function INITIALIZE_TX_BRIDGE_LIST_LEN_LEN() view returns(uint8) +func (_Polygonvalidium *PolygonvalidiumCallerSession) INITIALIZETXBRIDGELISTLENLEN() (uint8, error) { + return _Polygonvalidium.Contract.INITIALIZETXBRIDGELISTLENLEN(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXBRIDGEPARAMS is a free data retrieval call binding the contract method 0x05835f37. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS() view returns(bytes) +func (_Polygonvalidium *PolygonvalidiumCaller) INITIALIZETXBRIDGEPARAMS(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "INITIALIZE_TX_BRIDGE_PARAMS") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// INITIALIZETXBRIDGEPARAMS is a free data retrieval call binding the contract method 0x05835f37. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS() view returns(bytes) +func (_Polygonvalidium *PolygonvalidiumSession) INITIALIZETXBRIDGEPARAMS() ([]byte, error) { + return _Polygonvalidium.Contract.INITIALIZETXBRIDGEPARAMS(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXBRIDGEPARAMS is a free data retrieval call binding the contract method 0x05835f37. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS() view returns(bytes) +func (_Polygonvalidium *PolygonvalidiumCallerSession) INITIALIZETXBRIDGEPARAMS() ([]byte, error) { + return _Polygonvalidium.Contract.INITIALIZETXBRIDGEPARAMS(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS is a free data retrieval call binding the contract method 0x7a5460c5. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS() view returns(bytes) +func (_Polygonvalidium *PolygonvalidiumCaller) INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS is a free data retrieval call binding the contract method 0x7a5460c5. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS() view returns(bytes) +func (_Polygonvalidium *PolygonvalidiumSession) INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS() ([]byte, error) { + return _Polygonvalidium.Contract.INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS is a free data retrieval call binding the contract method 0x7a5460c5. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS() view returns(bytes) +func (_Polygonvalidium *PolygonvalidiumCallerSession) INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS() ([]byte, error) { + return _Polygonvalidium.Contract.INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA is a free data retrieval call binding the contract method 0x52bdeb6d. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA() view returns(bytes) +func (_Polygonvalidium *PolygonvalidiumCaller) INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA(opts *bind.CallOpts) ([]byte, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA") + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA is a free data retrieval call binding the contract method 0x52bdeb6d. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA() view returns(bytes) +func (_Polygonvalidium *PolygonvalidiumSession) INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA() ([]byte, error) { + return _Polygonvalidium.Contract.INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA is a free data retrieval call binding the contract method 0x52bdeb6d. +// +// Solidity: function INITIALIZE_TX_BRIDGE_PARAMS_AFTER_BRIDGE_ADDRESS_EMPTY_METADATA() view returns(bytes) +func (_Polygonvalidium *PolygonvalidiumCallerSession) INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA() ([]byte, error) { + return _Polygonvalidium.Contract.INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXCONSTANTBYTES is a free data retrieval call binding the contract method 0x03508963. +// +// Solidity: function INITIALIZE_TX_CONSTANT_BYTES() view returns(uint16) +func (_Polygonvalidium *PolygonvalidiumCaller) INITIALIZETXCONSTANTBYTES(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "INITIALIZE_TX_CONSTANT_BYTES") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// INITIALIZETXCONSTANTBYTES is a free data retrieval call binding the contract method 0x03508963. +// +// Solidity: function INITIALIZE_TX_CONSTANT_BYTES() view returns(uint16) +func (_Polygonvalidium *PolygonvalidiumSession) INITIALIZETXCONSTANTBYTES() (uint16, error) { + return _Polygonvalidium.Contract.INITIALIZETXCONSTANTBYTES(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXCONSTANTBYTES is a free data retrieval call binding the contract method 0x03508963. +// +// Solidity: function INITIALIZE_TX_CONSTANT_BYTES() view returns(uint16) +func (_Polygonvalidium *PolygonvalidiumCallerSession) INITIALIZETXCONSTANTBYTES() (uint16, error) { + return _Polygonvalidium.Contract.INITIALIZETXCONSTANTBYTES(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXCONSTANTBYTESEMPTYMETADATA is a free data retrieval call binding the contract method 0x676870d2. +// +// Solidity: function INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA() view returns(uint16) +func (_Polygonvalidium *PolygonvalidiumCaller) INITIALIZETXCONSTANTBYTESEMPTYMETADATA(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// INITIALIZETXCONSTANTBYTESEMPTYMETADATA is a free data retrieval call binding the contract method 0x676870d2. +// +// Solidity: function INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA() view returns(uint16) +func (_Polygonvalidium *PolygonvalidiumSession) INITIALIZETXCONSTANTBYTESEMPTYMETADATA() (uint16, error) { + return _Polygonvalidium.Contract.INITIALIZETXCONSTANTBYTESEMPTYMETADATA(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXCONSTANTBYTESEMPTYMETADATA is a free data retrieval call binding the contract method 0x676870d2. +// +// Solidity: function INITIALIZE_TX_CONSTANT_BYTES_EMPTY_METADATA() view returns(uint16) +func (_Polygonvalidium *PolygonvalidiumCallerSession) INITIALIZETXCONSTANTBYTESEMPTYMETADATA() (uint16, error) { + return _Polygonvalidium.Contract.INITIALIZETXCONSTANTBYTESEMPTYMETADATA(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXDATALENEMPTYMETADATA is a free data retrieval call binding the contract method 0xc7fffd4b. +// +// Solidity: function INITIALIZE_TX_DATA_LEN_EMPTY_METADATA() view returns(uint8) +func (_Polygonvalidium *PolygonvalidiumCaller) INITIALIZETXDATALENEMPTYMETADATA(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "INITIALIZE_TX_DATA_LEN_EMPTY_METADATA") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// INITIALIZETXDATALENEMPTYMETADATA is a free data retrieval call binding the contract method 0xc7fffd4b. +// +// Solidity: function INITIALIZE_TX_DATA_LEN_EMPTY_METADATA() view returns(uint8) +func (_Polygonvalidium *PolygonvalidiumSession) INITIALIZETXDATALENEMPTYMETADATA() (uint8, error) { + return _Polygonvalidium.Contract.INITIALIZETXDATALENEMPTYMETADATA(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXDATALENEMPTYMETADATA is a free data retrieval call binding the contract method 0xc7fffd4b. +// +// Solidity: function INITIALIZE_TX_DATA_LEN_EMPTY_METADATA() view returns(uint8) +func (_Polygonvalidium *PolygonvalidiumCallerSession) INITIALIZETXDATALENEMPTYMETADATA() (uint8, error) { + return _Polygonvalidium.Contract.INITIALIZETXDATALENEMPTYMETADATA(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXEFFECTIVEPERCENTAGE is a free data retrieval call binding the contract method 0x40b5de6c. +// +// Solidity: function INITIALIZE_TX_EFFECTIVE_PERCENTAGE() view returns(bytes1) +func (_Polygonvalidium *PolygonvalidiumCaller) INITIALIZETXEFFECTIVEPERCENTAGE(opts *bind.CallOpts) ([1]byte, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "INITIALIZE_TX_EFFECTIVE_PERCENTAGE") + + if err != nil { + return *new([1]byte), err + } + + out0 := *abi.ConvertType(out[0], new([1]byte)).(*[1]byte) + + return out0, err + +} + +// INITIALIZETXEFFECTIVEPERCENTAGE is a free data retrieval call binding the contract method 0x40b5de6c. +// +// Solidity: function INITIALIZE_TX_EFFECTIVE_PERCENTAGE() view returns(bytes1) +func (_Polygonvalidium *PolygonvalidiumSession) INITIALIZETXEFFECTIVEPERCENTAGE() ([1]byte, error) { + return _Polygonvalidium.Contract.INITIALIZETXEFFECTIVEPERCENTAGE(&_Polygonvalidium.CallOpts) +} + +// INITIALIZETXEFFECTIVEPERCENTAGE is a free data retrieval call binding the contract method 0x40b5de6c. +// +// Solidity: function INITIALIZE_TX_EFFECTIVE_PERCENTAGE() view returns(bytes1) +func (_Polygonvalidium *PolygonvalidiumCallerSession) INITIALIZETXEFFECTIVEPERCENTAGE() ([1]byte, error) { + return _Polygonvalidium.Contract.INITIALIZETXEFFECTIVEPERCENTAGE(&_Polygonvalidium.CallOpts) +} + +// SIGNATUREINITIALIZETXR is a free data retrieval call binding the contract method 0xb0afe154. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_R() view returns(bytes32) +func (_Polygonvalidium *PolygonvalidiumCaller) SIGNATUREINITIALIZETXR(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "SIGNATURE_INITIALIZE_TX_R") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// SIGNATUREINITIALIZETXR is a free data retrieval call binding the contract method 0xb0afe154. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_R() view returns(bytes32) +func (_Polygonvalidium *PolygonvalidiumSession) SIGNATUREINITIALIZETXR() ([32]byte, error) { + return _Polygonvalidium.Contract.SIGNATUREINITIALIZETXR(&_Polygonvalidium.CallOpts) +} + +// SIGNATUREINITIALIZETXR is a free data retrieval call binding the contract method 0xb0afe154. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_R() view returns(bytes32) +func (_Polygonvalidium *PolygonvalidiumCallerSession) SIGNATUREINITIALIZETXR() ([32]byte, error) { + return _Polygonvalidium.Contract.SIGNATUREINITIALIZETXR(&_Polygonvalidium.CallOpts) +} + +// SIGNATUREINITIALIZETXS is a free data retrieval call binding the contract method 0xd7bc90ff. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_S() view returns(bytes32) +func (_Polygonvalidium *PolygonvalidiumCaller) SIGNATUREINITIALIZETXS(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "SIGNATURE_INITIALIZE_TX_S") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// SIGNATUREINITIALIZETXS is a free data retrieval call binding the contract method 0xd7bc90ff. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_S() view returns(bytes32) +func (_Polygonvalidium *PolygonvalidiumSession) SIGNATUREINITIALIZETXS() ([32]byte, error) { + return _Polygonvalidium.Contract.SIGNATUREINITIALIZETXS(&_Polygonvalidium.CallOpts) +} + +// SIGNATUREINITIALIZETXS is a free data retrieval call binding the contract method 0xd7bc90ff. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_S() view returns(bytes32) +func (_Polygonvalidium *PolygonvalidiumCallerSession) SIGNATUREINITIALIZETXS() ([32]byte, error) { + return _Polygonvalidium.Contract.SIGNATUREINITIALIZETXS(&_Polygonvalidium.CallOpts) +} + +// SIGNATUREINITIALIZETXV is a free data retrieval call binding the contract method 0xf35dda47. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_V() view returns(uint8) +func (_Polygonvalidium *PolygonvalidiumCaller) SIGNATUREINITIALIZETXV(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "SIGNATURE_INITIALIZE_TX_V") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// SIGNATUREINITIALIZETXV is a free data retrieval call binding the contract method 0xf35dda47. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_V() view returns(uint8) +func (_Polygonvalidium *PolygonvalidiumSession) SIGNATUREINITIALIZETXV() (uint8, error) { + return _Polygonvalidium.Contract.SIGNATUREINITIALIZETXV(&_Polygonvalidium.CallOpts) +} + +// SIGNATUREINITIALIZETXV is a free data retrieval call binding the contract method 0xf35dda47. +// +// Solidity: function SIGNATURE_INITIALIZE_TX_V() view returns(uint8) +func (_Polygonvalidium *PolygonvalidiumCallerSession) SIGNATUREINITIALIZETXV() (uint8, error) { + return _Polygonvalidium.Contract.SIGNATUREINITIALIZETXV(&_Polygonvalidium.CallOpts) +} + +// Admin is a free data retrieval call binding the contract method 0xf851a440. +// +// Solidity: function admin() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCaller) Admin(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "admin") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Admin is a free data retrieval call binding the contract method 0xf851a440. +// +// Solidity: function admin() view returns(address) +func (_Polygonvalidium *PolygonvalidiumSession) Admin() (common.Address, error) { + return _Polygonvalidium.Contract.Admin(&_Polygonvalidium.CallOpts) +} + +// Admin is a free data retrieval call binding the contract method 0xf851a440. +// +// Solidity: function admin() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCallerSession) Admin() (common.Address, error) { + return _Polygonvalidium.Contract.Admin(&_Polygonvalidium.CallOpts) +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCaller) BridgeAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "bridgeAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Polygonvalidium *PolygonvalidiumSession) BridgeAddress() (common.Address, error) { + return _Polygonvalidium.Contract.BridgeAddress(&_Polygonvalidium.CallOpts) +} + +// BridgeAddress is a free data retrieval call binding the contract method 0xa3c573eb. +// +// Solidity: function bridgeAddress() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCallerSession) BridgeAddress() (common.Address, error) { + return _Polygonvalidium.Contract.BridgeAddress(&_Polygonvalidium.CallOpts) +} + +// CalculatePolPerForceBatch is a free data retrieval call binding the contract method 0x00d0295d. +// +// Solidity: function calculatePolPerForceBatch() view returns(uint256) +func (_Polygonvalidium *PolygonvalidiumCaller) CalculatePolPerForceBatch(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "calculatePolPerForceBatch") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// CalculatePolPerForceBatch is a free data retrieval call binding the contract method 0x00d0295d. +// +// Solidity: function calculatePolPerForceBatch() view returns(uint256) +func (_Polygonvalidium *PolygonvalidiumSession) CalculatePolPerForceBatch() (*big.Int, error) { + return _Polygonvalidium.Contract.CalculatePolPerForceBatch(&_Polygonvalidium.CallOpts) +} + +// CalculatePolPerForceBatch is a free data retrieval call binding the contract method 0x00d0295d. +// +// Solidity: function calculatePolPerForceBatch() view returns(uint256) +func (_Polygonvalidium *PolygonvalidiumCallerSession) CalculatePolPerForceBatch() (*big.Int, error) { + return _Polygonvalidium.Contract.CalculatePolPerForceBatch(&_Polygonvalidium.CallOpts) +} + +// DataAvailabilityProtocol is a free data retrieval call binding the contract method 0xe57a0b4c. +// +// Solidity: function dataAvailabilityProtocol() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCaller) DataAvailabilityProtocol(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "dataAvailabilityProtocol") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DataAvailabilityProtocol is a free data retrieval call binding the contract method 0xe57a0b4c. +// +// Solidity: function dataAvailabilityProtocol() view returns(address) +func (_Polygonvalidium *PolygonvalidiumSession) DataAvailabilityProtocol() (common.Address, error) { + return _Polygonvalidium.Contract.DataAvailabilityProtocol(&_Polygonvalidium.CallOpts) +} + +// DataAvailabilityProtocol is a free data retrieval call binding the contract method 0xe57a0b4c. +// +// Solidity: function dataAvailabilityProtocol() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCallerSession) DataAvailabilityProtocol() (common.Address, error) { + return _Polygonvalidium.Contract.DataAvailabilityProtocol(&_Polygonvalidium.CallOpts) +} + +// ForceBatchAddress is a free data retrieval call binding the contract method 0x2c111c06. +// +// Solidity: function forceBatchAddress() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCaller) ForceBatchAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "forceBatchAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ForceBatchAddress is a free data retrieval call binding the contract method 0x2c111c06. +// +// Solidity: function forceBatchAddress() view returns(address) +func (_Polygonvalidium *PolygonvalidiumSession) ForceBatchAddress() (common.Address, error) { + return _Polygonvalidium.Contract.ForceBatchAddress(&_Polygonvalidium.CallOpts) +} + +// ForceBatchAddress is a free data retrieval call binding the contract method 0x2c111c06. +// +// Solidity: function forceBatchAddress() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCallerSession) ForceBatchAddress() (common.Address, error) { + return _Polygonvalidium.Contract.ForceBatchAddress(&_Polygonvalidium.CallOpts) +} + +// ForceBatchTimeout is a free data retrieval call binding the contract method 0xc754c7ed. +// +// Solidity: function forceBatchTimeout() view returns(uint64) +func (_Polygonvalidium *PolygonvalidiumCaller) ForceBatchTimeout(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "forceBatchTimeout") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// ForceBatchTimeout is a free data retrieval call binding the contract method 0xc754c7ed. +// +// Solidity: function forceBatchTimeout() view returns(uint64) +func (_Polygonvalidium *PolygonvalidiumSession) ForceBatchTimeout() (uint64, error) { + return _Polygonvalidium.Contract.ForceBatchTimeout(&_Polygonvalidium.CallOpts) +} + +// ForceBatchTimeout is a free data retrieval call binding the contract method 0xc754c7ed. +// +// Solidity: function forceBatchTimeout() view returns(uint64) +func (_Polygonvalidium *PolygonvalidiumCallerSession) ForceBatchTimeout() (uint64, error) { + return _Polygonvalidium.Contract.ForceBatchTimeout(&_Polygonvalidium.CallOpts) +} + +// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. +// +// Solidity: function forcedBatches(uint64 ) view returns(bytes32) +func (_Polygonvalidium *PolygonvalidiumCaller) ForcedBatches(opts *bind.CallOpts, arg0 uint64) ([32]byte, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "forcedBatches", arg0) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. +// +// Solidity: function forcedBatches(uint64 ) view returns(bytes32) +func (_Polygonvalidium *PolygonvalidiumSession) ForcedBatches(arg0 uint64) ([32]byte, error) { + return _Polygonvalidium.Contract.ForcedBatches(&_Polygonvalidium.CallOpts, arg0) +} + +// ForcedBatches is a free data retrieval call binding the contract method 0x6b8616ce. +// +// Solidity: function forcedBatches(uint64 ) view returns(bytes32) +func (_Polygonvalidium *PolygonvalidiumCallerSession) ForcedBatches(arg0 uint64) ([32]byte, error) { + return _Polygonvalidium.Contract.ForcedBatches(&_Polygonvalidium.CallOpts, arg0) +} + +// GapLastTimestamp is a free data retrieval call binding the contract method 0x2a9f208f. +// +// Solidity: function gapLastTimestamp() view returns(uint64) +func (_Polygonvalidium *PolygonvalidiumCaller) GapLastTimestamp(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "gapLastTimestamp") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GapLastTimestamp is a free data retrieval call binding the contract method 0x2a9f208f. +// +// Solidity: function gapLastTimestamp() view returns(uint64) +func (_Polygonvalidium *PolygonvalidiumSession) GapLastTimestamp() (uint64, error) { + return _Polygonvalidium.Contract.GapLastTimestamp(&_Polygonvalidium.CallOpts) +} + +// GapLastTimestamp is a free data retrieval call binding the contract method 0x2a9f208f. +// +// Solidity: function gapLastTimestamp() view returns(uint64) +func (_Polygonvalidium *PolygonvalidiumCallerSession) GapLastTimestamp() (uint64, error) { + return _Polygonvalidium.Contract.GapLastTimestamp(&_Polygonvalidium.CallOpts) +} + +// GasTokenAddress is a free data retrieval call binding the contract method 0x3c351e10. +// +// Solidity: function gasTokenAddress() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCaller) GasTokenAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "gasTokenAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasTokenAddress is a free data retrieval call binding the contract method 0x3c351e10. +// +// Solidity: function gasTokenAddress() view returns(address) +func (_Polygonvalidium *PolygonvalidiumSession) GasTokenAddress() (common.Address, error) { + return _Polygonvalidium.Contract.GasTokenAddress(&_Polygonvalidium.CallOpts) +} + +// GasTokenAddress is a free data retrieval call binding the contract method 0x3c351e10. +// +// Solidity: function gasTokenAddress() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCallerSession) GasTokenAddress() (common.Address, error) { + return _Polygonvalidium.Contract.GasTokenAddress(&_Polygonvalidium.CallOpts) +} + +// GasTokenNetwork is a free data retrieval call binding the contract method 0x3cbc795b. +// +// Solidity: function gasTokenNetwork() view returns(uint32) +func (_Polygonvalidium *PolygonvalidiumCaller) GasTokenNetwork(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "gasTokenNetwork") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// GasTokenNetwork is a free data retrieval call binding the contract method 0x3cbc795b. +// +// Solidity: function gasTokenNetwork() view returns(uint32) +func (_Polygonvalidium *PolygonvalidiumSession) GasTokenNetwork() (uint32, error) { + return _Polygonvalidium.Contract.GasTokenNetwork(&_Polygonvalidium.CallOpts) +} + +// GasTokenNetwork is a free data retrieval call binding the contract method 0x3cbc795b. +// +// Solidity: function gasTokenNetwork() view returns(uint32) +func (_Polygonvalidium *PolygonvalidiumCallerSession) GasTokenNetwork() (uint32, error) { + return _Polygonvalidium.Contract.GasTokenNetwork(&_Polygonvalidium.CallOpts) +} + +// GenerateInitializeTransaction is a free data retrieval call binding the contract method 0xa652f26c. +// +// Solidity: function generateInitializeTransaction(uint32 networkID, address _gasTokenAddress, uint32 _gasTokenNetwork, bytes _gasTokenMetadata) view returns(bytes) +func (_Polygonvalidium *PolygonvalidiumCaller) GenerateInitializeTransaction(opts *bind.CallOpts, networkID uint32, _gasTokenAddress common.Address, _gasTokenNetwork uint32, _gasTokenMetadata []byte) ([]byte, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "generateInitializeTransaction", networkID, _gasTokenAddress, _gasTokenNetwork, _gasTokenMetadata) + + if err != nil { + return *new([]byte), err + } + + out0 := *abi.ConvertType(out[0], new([]byte)).(*[]byte) + + return out0, err + +} + +// GenerateInitializeTransaction is a free data retrieval call binding the contract method 0xa652f26c. +// +// Solidity: function generateInitializeTransaction(uint32 networkID, address _gasTokenAddress, uint32 _gasTokenNetwork, bytes _gasTokenMetadata) view returns(bytes) +func (_Polygonvalidium *PolygonvalidiumSession) GenerateInitializeTransaction(networkID uint32, _gasTokenAddress common.Address, _gasTokenNetwork uint32, _gasTokenMetadata []byte) ([]byte, error) { + return _Polygonvalidium.Contract.GenerateInitializeTransaction(&_Polygonvalidium.CallOpts, networkID, _gasTokenAddress, _gasTokenNetwork, _gasTokenMetadata) +} + +// GenerateInitializeTransaction is a free data retrieval call binding the contract method 0xa652f26c. +// +// Solidity: function generateInitializeTransaction(uint32 networkID, address _gasTokenAddress, uint32 _gasTokenNetwork, bytes _gasTokenMetadata) view returns(bytes) +func (_Polygonvalidium *PolygonvalidiumCallerSession) GenerateInitializeTransaction(networkID uint32, _gasTokenAddress common.Address, _gasTokenNetwork uint32, _gasTokenMetadata []byte) ([]byte, error) { + return _Polygonvalidium.Contract.GenerateInitializeTransaction(&_Polygonvalidium.CallOpts, networkID, _gasTokenAddress, _gasTokenNetwork, _gasTokenMetadata) +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCaller) GlobalExitRootManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "globalExitRootManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Polygonvalidium *PolygonvalidiumSession) GlobalExitRootManager() (common.Address, error) { + return _Polygonvalidium.Contract.GlobalExitRootManager(&_Polygonvalidium.CallOpts) +} + +// GlobalExitRootManager is a free data retrieval call binding the contract method 0xd02103ca. +// +// Solidity: function globalExitRootManager() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCallerSession) GlobalExitRootManager() (common.Address, error) { + return _Polygonvalidium.Contract.GlobalExitRootManager(&_Polygonvalidium.CallOpts) +} + +// IsSequenceWithDataAvailabilityAllowed is a free data retrieval call binding the contract method 0x4c21fef3. +// +// Solidity: function isSequenceWithDataAvailabilityAllowed() view returns(bool) +func (_Polygonvalidium *PolygonvalidiumCaller) IsSequenceWithDataAvailabilityAllowed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "isSequenceWithDataAvailabilityAllowed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsSequenceWithDataAvailabilityAllowed is a free data retrieval call binding the contract method 0x4c21fef3. +// +// Solidity: function isSequenceWithDataAvailabilityAllowed() view returns(bool) +func (_Polygonvalidium *PolygonvalidiumSession) IsSequenceWithDataAvailabilityAllowed() (bool, error) { + return _Polygonvalidium.Contract.IsSequenceWithDataAvailabilityAllowed(&_Polygonvalidium.CallOpts) +} + +// IsSequenceWithDataAvailabilityAllowed is a free data retrieval call binding the contract method 0x4c21fef3. +// +// Solidity: function isSequenceWithDataAvailabilityAllowed() view returns(bool) +func (_Polygonvalidium *PolygonvalidiumCallerSession) IsSequenceWithDataAvailabilityAllowed() (bool, error) { + return _Polygonvalidium.Contract.IsSequenceWithDataAvailabilityAllowed(&_Polygonvalidium.CallOpts) +} + +// LastAccInputHash is a free data retrieval call binding the contract method 0x6e05d2cd. +// +// Solidity: function lastAccInputHash() view returns(bytes32) +func (_Polygonvalidium *PolygonvalidiumCaller) LastAccInputHash(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "lastAccInputHash") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// LastAccInputHash is a free data retrieval call binding the contract method 0x6e05d2cd. +// +// Solidity: function lastAccInputHash() view returns(bytes32) +func (_Polygonvalidium *PolygonvalidiumSession) LastAccInputHash() ([32]byte, error) { + return _Polygonvalidium.Contract.LastAccInputHash(&_Polygonvalidium.CallOpts) +} + +// LastAccInputHash is a free data retrieval call binding the contract method 0x6e05d2cd. +// +// Solidity: function lastAccInputHash() view returns(bytes32) +func (_Polygonvalidium *PolygonvalidiumCallerSession) LastAccInputHash() ([32]byte, error) { + return _Polygonvalidium.Contract.LastAccInputHash(&_Polygonvalidium.CallOpts) +} + +// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. +// +// Solidity: function lastForceBatch() view returns(uint64) +func (_Polygonvalidium *PolygonvalidiumCaller) LastForceBatch(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "lastForceBatch") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. +// +// Solidity: function lastForceBatch() view returns(uint64) +func (_Polygonvalidium *PolygonvalidiumSession) LastForceBatch() (uint64, error) { + return _Polygonvalidium.Contract.LastForceBatch(&_Polygonvalidium.CallOpts) +} + +// LastForceBatch is a free data retrieval call binding the contract method 0xe7a7ed02. +// +// Solidity: function lastForceBatch() view returns(uint64) +func (_Polygonvalidium *PolygonvalidiumCallerSession) LastForceBatch() (uint64, error) { + return _Polygonvalidium.Contract.LastForceBatch(&_Polygonvalidium.CallOpts) +} + +// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. +// +// Solidity: function lastForceBatchSequenced() view returns(uint64) +func (_Polygonvalidium *PolygonvalidiumCaller) LastForceBatchSequenced(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "lastForceBatchSequenced") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. +// +// Solidity: function lastForceBatchSequenced() view returns(uint64) +func (_Polygonvalidium *PolygonvalidiumSession) LastForceBatchSequenced() (uint64, error) { + return _Polygonvalidium.Contract.LastForceBatchSequenced(&_Polygonvalidium.CallOpts) +} + +// LastForceBatchSequenced is a free data retrieval call binding the contract method 0x45605267. +// +// Solidity: function lastForceBatchSequenced() view returns(uint64) +func (_Polygonvalidium *PolygonvalidiumCallerSession) LastForceBatchSequenced() (uint64, error) { + return _Polygonvalidium.Contract.LastForceBatchSequenced(&_Polygonvalidium.CallOpts) +} + +// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. +// +// Solidity: function networkName() view returns(string) +func (_Polygonvalidium *PolygonvalidiumCaller) NetworkName(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "networkName") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. +// +// Solidity: function networkName() view returns(string) +func (_Polygonvalidium *PolygonvalidiumSession) NetworkName() (string, error) { + return _Polygonvalidium.Contract.NetworkName(&_Polygonvalidium.CallOpts) +} + +// NetworkName is a free data retrieval call binding the contract method 0x107bf28c. +// +// Solidity: function networkName() view returns(string) +func (_Polygonvalidium *PolygonvalidiumCallerSession) NetworkName() (string, error) { + return _Polygonvalidium.Contract.NetworkName(&_Polygonvalidium.CallOpts) +} + +// PendingAdmin is a free data retrieval call binding the contract method 0x26782247. +// +// Solidity: function pendingAdmin() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCaller) PendingAdmin(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "pendingAdmin") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingAdmin is a free data retrieval call binding the contract method 0x26782247. +// +// Solidity: function pendingAdmin() view returns(address) +func (_Polygonvalidium *PolygonvalidiumSession) PendingAdmin() (common.Address, error) { + return _Polygonvalidium.Contract.PendingAdmin(&_Polygonvalidium.CallOpts) +} + +// PendingAdmin is a free data retrieval call binding the contract method 0x26782247. +// +// Solidity: function pendingAdmin() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCallerSession) PendingAdmin() (common.Address, error) { + return _Polygonvalidium.Contract.PendingAdmin(&_Polygonvalidium.CallOpts) +} + +// Pol is a free data retrieval call binding the contract method 0xe46761c4. +// +// Solidity: function pol() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCaller) Pol(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "pol") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Pol is a free data retrieval call binding the contract method 0xe46761c4. +// +// Solidity: function pol() view returns(address) +func (_Polygonvalidium *PolygonvalidiumSession) Pol() (common.Address, error) { + return _Polygonvalidium.Contract.Pol(&_Polygonvalidium.CallOpts) +} + +// Pol is a free data retrieval call binding the contract method 0xe46761c4. +// +// Solidity: function pol() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCallerSession) Pol() (common.Address, error) { + return _Polygonvalidium.Contract.Pol(&_Polygonvalidium.CallOpts) +} + +// RollupManager is a free data retrieval call binding the contract method 0x49b7b802. +// +// Solidity: function rollupManager() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCaller) RollupManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "rollupManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// RollupManager is a free data retrieval call binding the contract method 0x49b7b802. +// +// Solidity: function rollupManager() view returns(address) +func (_Polygonvalidium *PolygonvalidiumSession) RollupManager() (common.Address, error) { + return _Polygonvalidium.Contract.RollupManager(&_Polygonvalidium.CallOpts) +} + +// RollupManager is a free data retrieval call binding the contract method 0x49b7b802. +// +// Solidity: function rollupManager() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCallerSession) RollupManager() (common.Address, error) { + return _Polygonvalidium.Contract.RollupManager(&_Polygonvalidium.CallOpts) +} + +// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. +// +// Solidity: function trustedSequencer() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCaller) TrustedSequencer(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "trustedSequencer") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. +// +// Solidity: function trustedSequencer() view returns(address) +func (_Polygonvalidium *PolygonvalidiumSession) TrustedSequencer() (common.Address, error) { + return _Polygonvalidium.Contract.TrustedSequencer(&_Polygonvalidium.CallOpts) +} + +// TrustedSequencer is a free data retrieval call binding the contract method 0xcfa8ed47. +// +// Solidity: function trustedSequencer() view returns(address) +func (_Polygonvalidium *PolygonvalidiumCallerSession) TrustedSequencer() (common.Address, error) { + return _Polygonvalidium.Contract.TrustedSequencer(&_Polygonvalidium.CallOpts) +} + +// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. +// +// Solidity: function trustedSequencerURL() view returns(string) +func (_Polygonvalidium *PolygonvalidiumCaller) TrustedSequencerURL(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _Polygonvalidium.contract.Call(opts, &out, "trustedSequencerURL") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. +// +// Solidity: function trustedSequencerURL() view returns(string) +func (_Polygonvalidium *PolygonvalidiumSession) TrustedSequencerURL() (string, error) { + return _Polygonvalidium.Contract.TrustedSequencerURL(&_Polygonvalidium.CallOpts) +} + +// TrustedSequencerURL is a free data retrieval call binding the contract method 0x542028d5. +// +// Solidity: function trustedSequencerURL() view returns(string) +func (_Polygonvalidium *PolygonvalidiumCallerSession) TrustedSequencerURL() (string, error) { + return _Polygonvalidium.Contract.TrustedSequencerURL(&_Polygonvalidium.CallOpts) +} + +// AcceptAdminRole is a paid mutator transaction binding the contract method 0x8c3d7301. +// +// Solidity: function acceptAdminRole() returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) AcceptAdminRole(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "acceptAdminRole") +} + +// AcceptAdminRole is a paid mutator transaction binding the contract method 0x8c3d7301. +// +// Solidity: function acceptAdminRole() returns() +func (_Polygonvalidium *PolygonvalidiumSession) AcceptAdminRole() (*types.Transaction, error) { + return _Polygonvalidium.Contract.AcceptAdminRole(&_Polygonvalidium.TransactOpts) +} + +// AcceptAdminRole is a paid mutator transaction binding the contract method 0x8c3d7301. +// +// Solidity: function acceptAdminRole() returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) AcceptAdminRole() (*types.Transaction, error) { + return _Polygonvalidium.Contract.AcceptAdminRole(&_Polygonvalidium.TransactOpts) +} + +// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. +// +// Solidity: function forceBatch(bytes transactions, uint256 polAmount) returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) ForceBatch(opts *bind.TransactOpts, transactions []byte, polAmount *big.Int) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "forceBatch", transactions, polAmount) +} + +// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. +// +// Solidity: function forceBatch(bytes transactions, uint256 polAmount) returns() +func (_Polygonvalidium *PolygonvalidiumSession) ForceBatch(transactions []byte, polAmount *big.Int) (*types.Transaction, error) { + return _Polygonvalidium.Contract.ForceBatch(&_Polygonvalidium.TransactOpts, transactions, polAmount) +} + +// ForceBatch is a paid mutator transaction binding the contract method 0xeaeb077b. +// +// Solidity: function forceBatch(bytes transactions, uint256 polAmount) returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) ForceBatch(transactions []byte, polAmount *big.Int) (*types.Transaction, error) { + return _Polygonvalidium.Contract.ForceBatch(&_Polygonvalidium.TransactOpts, transactions, polAmount) +} + +// Initialize is a paid mutator transaction binding the contract method 0x71257022. +// +// Solidity: function initialize(address _admin, address sequencer, uint32 networkID, address _gasTokenAddress, string sequencerURL, string _networkName) returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) Initialize(opts *bind.TransactOpts, _admin common.Address, sequencer common.Address, networkID uint32, _gasTokenAddress common.Address, sequencerURL string, _networkName string) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "initialize", _admin, sequencer, networkID, _gasTokenAddress, sequencerURL, _networkName) +} + +// Initialize is a paid mutator transaction binding the contract method 0x71257022. +// +// Solidity: function initialize(address _admin, address sequencer, uint32 networkID, address _gasTokenAddress, string sequencerURL, string _networkName) returns() +func (_Polygonvalidium *PolygonvalidiumSession) Initialize(_admin common.Address, sequencer common.Address, networkID uint32, _gasTokenAddress common.Address, sequencerURL string, _networkName string) (*types.Transaction, error) { + return _Polygonvalidium.Contract.Initialize(&_Polygonvalidium.TransactOpts, _admin, sequencer, networkID, _gasTokenAddress, sequencerURL, _networkName) +} + +// Initialize is a paid mutator transaction binding the contract method 0x71257022. +// +// Solidity: function initialize(address _admin, address sequencer, uint32 networkID, address _gasTokenAddress, string sequencerURL, string _networkName) returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) Initialize(_admin common.Address, sequencer common.Address, networkID uint32, _gasTokenAddress common.Address, sequencerURL string, _networkName string) (*types.Transaction, error) { + return _Polygonvalidium.Contract.Initialize(&_Polygonvalidium.TransactOpts, _admin, sequencer, networkID, _gasTokenAddress, sequencerURL, _networkName) +} + +// OnVerifyBatches is a paid mutator transaction binding the contract method 0x32c2d153. +// +// Solidity: function onVerifyBatches(uint64 lastVerifiedBatch, bytes32 newStateRoot, address aggregator) returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) OnVerifyBatches(opts *bind.TransactOpts, lastVerifiedBatch uint64, newStateRoot [32]byte, aggregator common.Address) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "onVerifyBatches", lastVerifiedBatch, newStateRoot, aggregator) +} + +// OnVerifyBatches is a paid mutator transaction binding the contract method 0x32c2d153. +// +// Solidity: function onVerifyBatches(uint64 lastVerifiedBatch, bytes32 newStateRoot, address aggregator) returns() +func (_Polygonvalidium *PolygonvalidiumSession) OnVerifyBatches(lastVerifiedBatch uint64, newStateRoot [32]byte, aggregator common.Address) (*types.Transaction, error) { + return _Polygonvalidium.Contract.OnVerifyBatches(&_Polygonvalidium.TransactOpts, lastVerifiedBatch, newStateRoot, aggregator) +} + +// OnVerifyBatches is a paid mutator transaction binding the contract method 0x32c2d153. +// +// Solidity: function onVerifyBatches(uint64 lastVerifiedBatch, bytes32 newStateRoot, address aggregator) returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) OnVerifyBatches(lastVerifiedBatch uint64, newStateRoot [32]byte, aggregator common.Address) (*types.Transaction, error) { + return _Polygonvalidium.Contract.OnVerifyBatches(&_Polygonvalidium.TransactOpts, lastVerifiedBatch, newStateRoot, aggregator) +} + +// SequenceBatches is a paid mutator transaction binding the contract method 0xecef3f99. +// +// Solidity: function sequenceBatches((bytes,bytes32,uint64,bytes32)[] batches, address l2Coinbase) returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) SequenceBatches(opts *bind.TransactOpts, batches []PolygonRollupBaseEtrogBatchData, l2Coinbase common.Address) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "sequenceBatches", batches, l2Coinbase) +} + +// SequenceBatches is a paid mutator transaction binding the contract method 0xecef3f99. +// +// Solidity: function sequenceBatches((bytes,bytes32,uint64,bytes32)[] batches, address l2Coinbase) returns() +func (_Polygonvalidium *PolygonvalidiumSession) SequenceBatches(batches []PolygonRollupBaseEtrogBatchData, l2Coinbase common.Address) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SequenceBatches(&_Polygonvalidium.TransactOpts, batches, l2Coinbase) +} + +// SequenceBatches is a paid mutator transaction binding the contract method 0xecef3f99. +// +// Solidity: function sequenceBatches((bytes,bytes32,uint64,bytes32)[] batches, address l2Coinbase) returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) SequenceBatches(batches []PolygonRollupBaseEtrogBatchData, l2Coinbase common.Address) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SequenceBatches(&_Polygonvalidium.TransactOpts, batches, l2Coinbase) +} + +// SequenceBatchesValidium is a paid mutator transaction binding the contract method 0x2d72c248. +// +// Solidity: function sequenceBatchesValidium((bytes32,bytes32,uint64,bytes32)[] batches, address l2Coinbase, bytes dataAvailabilityMessage) returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) SequenceBatchesValidium(opts *bind.TransactOpts, batches []PolygonValidiumEtrogValidiumBatchData, l2Coinbase common.Address, dataAvailabilityMessage []byte) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "sequenceBatchesValidium", batches, l2Coinbase, dataAvailabilityMessage) +} + +// SequenceBatchesValidium is a paid mutator transaction binding the contract method 0x2d72c248. +// +// Solidity: function sequenceBatchesValidium((bytes32,bytes32,uint64,bytes32)[] batches, address l2Coinbase, bytes dataAvailabilityMessage) returns() +func (_Polygonvalidium *PolygonvalidiumSession) SequenceBatchesValidium(batches []PolygonValidiumEtrogValidiumBatchData, l2Coinbase common.Address, dataAvailabilityMessage []byte) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SequenceBatchesValidium(&_Polygonvalidium.TransactOpts, batches, l2Coinbase, dataAvailabilityMessage) +} + +// SequenceBatchesValidium is a paid mutator transaction binding the contract method 0x2d72c248. +// +// Solidity: function sequenceBatchesValidium((bytes32,bytes32,uint64,bytes32)[] batches, address l2Coinbase, bytes dataAvailabilityMessage) returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) SequenceBatchesValidium(batches []PolygonValidiumEtrogValidiumBatchData, l2Coinbase common.Address, dataAvailabilityMessage []byte) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SequenceBatchesValidium(&_Polygonvalidium.TransactOpts, batches, l2Coinbase, dataAvailabilityMessage) +} + +// SequenceForceBatches is a paid mutator transaction binding the contract method 0x9f26f840. +// +// Solidity: function sequenceForceBatches((bytes,bytes32,uint64,bytes32)[] batches) returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) SequenceForceBatches(opts *bind.TransactOpts, batches []PolygonRollupBaseEtrogBatchData) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "sequenceForceBatches", batches) +} + +// SequenceForceBatches is a paid mutator transaction binding the contract method 0x9f26f840. +// +// Solidity: function sequenceForceBatches((bytes,bytes32,uint64,bytes32)[] batches) returns() +func (_Polygonvalidium *PolygonvalidiumSession) SequenceForceBatches(batches []PolygonRollupBaseEtrogBatchData) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SequenceForceBatches(&_Polygonvalidium.TransactOpts, batches) +} + +// SequenceForceBatches is a paid mutator transaction binding the contract method 0x9f26f840. +// +// Solidity: function sequenceForceBatches((bytes,bytes32,uint64,bytes32)[] batches) returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) SequenceForceBatches(batches []PolygonRollupBaseEtrogBatchData) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SequenceForceBatches(&_Polygonvalidium.TransactOpts, batches) +} + +// SetDataAvailabilityProtocol is a paid mutator transaction binding the contract method 0x7cd76b8b. +// +// Solidity: function setDataAvailabilityProtocol(address newDataAvailabilityProtocol) returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) SetDataAvailabilityProtocol(opts *bind.TransactOpts, newDataAvailabilityProtocol common.Address) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "setDataAvailabilityProtocol", newDataAvailabilityProtocol) +} + +// SetDataAvailabilityProtocol is a paid mutator transaction binding the contract method 0x7cd76b8b. +// +// Solidity: function setDataAvailabilityProtocol(address newDataAvailabilityProtocol) returns() +func (_Polygonvalidium *PolygonvalidiumSession) SetDataAvailabilityProtocol(newDataAvailabilityProtocol common.Address) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SetDataAvailabilityProtocol(&_Polygonvalidium.TransactOpts, newDataAvailabilityProtocol) +} + +// SetDataAvailabilityProtocol is a paid mutator transaction binding the contract method 0x7cd76b8b. +// +// Solidity: function setDataAvailabilityProtocol(address newDataAvailabilityProtocol) returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) SetDataAvailabilityProtocol(newDataAvailabilityProtocol common.Address) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SetDataAvailabilityProtocol(&_Polygonvalidium.TransactOpts, newDataAvailabilityProtocol) +} + +// SetForceBatchAddress is a paid mutator transaction binding the contract method 0x91cafe32. +// +// Solidity: function setForceBatchAddress(address newForceBatchAddress) returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) SetForceBatchAddress(opts *bind.TransactOpts, newForceBatchAddress common.Address) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "setForceBatchAddress", newForceBatchAddress) +} + +// SetForceBatchAddress is a paid mutator transaction binding the contract method 0x91cafe32. +// +// Solidity: function setForceBatchAddress(address newForceBatchAddress) returns() +func (_Polygonvalidium *PolygonvalidiumSession) SetForceBatchAddress(newForceBatchAddress common.Address) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SetForceBatchAddress(&_Polygonvalidium.TransactOpts, newForceBatchAddress) +} + +// SetForceBatchAddress is a paid mutator transaction binding the contract method 0x91cafe32. +// +// Solidity: function setForceBatchAddress(address newForceBatchAddress) returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) SetForceBatchAddress(newForceBatchAddress common.Address) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SetForceBatchAddress(&_Polygonvalidium.TransactOpts, newForceBatchAddress) +} + +// SetForceBatchTimeout is a paid mutator transaction binding the contract method 0x4e487706. +// +// Solidity: function setForceBatchTimeout(uint64 newforceBatchTimeout) returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) SetForceBatchTimeout(opts *bind.TransactOpts, newforceBatchTimeout uint64) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "setForceBatchTimeout", newforceBatchTimeout) +} + +// SetForceBatchTimeout is a paid mutator transaction binding the contract method 0x4e487706. +// +// Solidity: function setForceBatchTimeout(uint64 newforceBatchTimeout) returns() +func (_Polygonvalidium *PolygonvalidiumSession) SetForceBatchTimeout(newforceBatchTimeout uint64) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SetForceBatchTimeout(&_Polygonvalidium.TransactOpts, newforceBatchTimeout) +} + +// SetForceBatchTimeout is a paid mutator transaction binding the contract method 0x4e487706. +// +// Solidity: function setForceBatchTimeout(uint64 newforceBatchTimeout) returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) SetForceBatchTimeout(newforceBatchTimeout uint64) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SetForceBatchTimeout(&_Polygonvalidium.TransactOpts, newforceBatchTimeout) +} + +// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. +// +// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) SetTrustedSequencer(opts *bind.TransactOpts, newTrustedSequencer common.Address) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "setTrustedSequencer", newTrustedSequencer) +} + +// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. +// +// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() +func (_Polygonvalidium *PolygonvalidiumSession) SetTrustedSequencer(newTrustedSequencer common.Address) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SetTrustedSequencer(&_Polygonvalidium.TransactOpts, newTrustedSequencer) +} + +// SetTrustedSequencer is a paid mutator transaction binding the contract method 0x6ff512cc. +// +// Solidity: function setTrustedSequencer(address newTrustedSequencer) returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) SetTrustedSequencer(newTrustedSequencer common.Address) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SetTrustedSequencer(&_Polygonvalidium.TransactOpts, newTrustedSequencer) +} + +// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. +// +// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) SetTrustedSequencerURL(opts *bind.TransactOpts, newTrustedSequencerURL string) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "setTrustedSequencerURL", newTrustedSequencerURL) +} + +// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. +// +// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() +func (_Polygonvalidium *PolygonvalidiumSession) SetTrustedSequencerURL(newTrustedSequencerURL string) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SetTrustedSequencerURL(&_Polygonvalidium.TransactOpts, newTrustedSequencerURL) +} + +// SetTrustedSequencerURL is a paid mutator transaction binding the contract method 0xc89e42df. +// +// Solidity: function setTrustedSequencerURL(string newTrustedSequencerURL) returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) SetTrustedSequencerURL(newTrustedSequencerURL string) (*types.Transaction, error) { + return _Polygonvalidium.Contract.SetTrustedSequencerURL(&_Polygonvalidium.TransactOpts, newTrustedSequencerURL) +} + +// SwitchSequenceWithDataAvailability is a paid mutator transaction binding the contract method 0xaa3587d3. +// +// Solidity: function switchSequenceWithDataAvailability() returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) SwitchSequenceWithDataAvailability(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "switchSequenceWithDataAvailability") +} + +// SwitchSequenceWithDataAvailability is a paid mutator transaction binding the contract method 0xaa3587d3. +// +// Solidity: function switchSequenceWithDataAvailability() returns() +func (_Polygonvalidium *PolygonvalidiumSession) SwitchSequenceWithDataAvailability() (*types.Transaction, error) { + return _Polygonvalidium.Contract.SwitchSequenceWithDataAvailability(&_Polygonvalidium.TransactOpts) +} + +// SwitchSequenceWithDataAvailability is a paid mutator transaction binding the contract method 0xaa3587d3. +// +// Solidity: function switchSequenceWithDataAvailability() returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) SwitchSequenceWithDataAvailability() (*types.Transaction, error) { + return _Polygonvalidium.Contract.SwitchSequenceWithDataAvailability(&_Polygonvalidium.TransactOpts) +} + +// TransferAdminRole is a paid mutator transaction binding the contract method 0xada8f919. +// +// Solidity: function transferAdminRole(address newPendingAdmin) returns() +func (_Polygonvalidium *PolygonvalidiumTransactor) TransferAdminRole(opts *bind.TransactOpts, newPendingAdmin common.Address) (*types.Transaction, error) { + return _Polygonvalidium.contract.Transact(opts, "transferAdminRole", newPendingAdmin) +} + +// TransferAdminRole is a paid mutator transaction binding the contract method 0xada8f919. +// +// Solidity: function transferAdminRole(address newPendingAdmin) returns() +func (_Polygonvalidium *PolygonvalidiumSession) TransferAdminRole(newPendingAdmin common.Address) (*types.Transaction, error) { + return _Polygonvalidium.Contract.TransferAdminRole(&_Polygonvalidium.TransactOpts, newPendingAdmin) +} + +// TransferAdminRole is a paid mutator transaction binding the contract method 0xada8f919. +// +// Solidity: function transferAdminRole(address newPendingAdmin) returns() +func (_Polygonvalidium *PolygonvalidiumTransactorSession) TransferAdminRole(newPendingAdmin common.Address) (*types.Transaction, error) { + return _Polygonvalidium.Contract.TransferAdminRole(&_Polygonvalidium.TransactOpts, newPendingAdmin) +} + +// PolygonvalidiumAcceptAdminRoleIterator is returned from FilterAcceptAdminRole and is used to iterate over the raw logs and unpacked data for AcceptAdminRole events raised by the Polygonvalidium contract. +type PolygonvalidiumAcceptAdminRoleIterator struct { + Event *PolygonvalidiumAcceptAdminRole // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumAcceptAdminRoleIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumAcceptAdminRole) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumAcceptAdminRole) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumAcceptAdminRoleIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumAcceptAdminRoleIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumAcceptAdminRole represents a AcceptAdminRole event raised by the Polygonvalidium contract. +type PolygonvalidiumAcceptAdminRole struct { + NewAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAcceptAdminRole is a free log retrieval operation binding the contract event 0x056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e. +// +// Solidity: event AcceptAdminRole(address newAdmin) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterAcceptAdminRole(opts *bind.FilterOpts) (*PolygonvalidiumAcceptAdminRoleIterator, error) { + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "AcceptAdminRole") + if err != nil { + return nil, err + } + return &PolygonvalidiumAcceptAdminRoleIterator{contract: _Polygonvalidium.contract, event: "AcceptAdminRole", logs: logs, sub: sub}, nil +} + +// WatchAcceptAdminRole is a free log subscription operation binding the contract event 0x056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e. +// +// Solidity: event AcceptAdminRole(address newAdmin) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchAcceptAdminRole(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumAcceptAdminRole) (event.Subscription, error) { + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "AcceptAdminRole") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumAcceptAdminRole) + if err := _Polygonvalidium.contract.UnpackLog(event, "AcceptAdminRole", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAcceptAdminRole is a log parse operation binding the contract event 0x056dc487bbf0795d0bbb1b4f0af523a855503cff740bfb4d5475f7a90c091e8e. +// +// Solidity: event AcceptAdminRole(address newAdmin) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseAcceptAdminRole(log types.Log) (*PolygonvalidiumAcceptAdminRole, error) { + event := new(PolygonvalidiumAcceptAdminRole) + if err := _Polygonvalidium.contract.UnpackLog(event, "AcceptAdminRole", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumForceBatchIterator is returned from FilterForceBatch and is used to iterate over the raw logs and unpacked data for ForceBatch events raised by the Polygonvalidium contract. +type PolygonvalidiumForceBatchIterator struct { + Event *PolygonvalidiumForceBatch // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumForceBatchIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumForceBatch) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumForceBatch) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumForceBatchIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumForceBatchIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumForceBatch represents a ForceBatch event raised by the Polygonvalidium contract. +type PolygonvalidiumForceBatch struct { + ForceBatchNum uint64 + LastGlobalExitRoot [32]byte + Sequencer common.Address + Transactions []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterForceBatch is a free log retrieval operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. +// +// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterForceBatch(opts *bind.FilterOpts, forceBatchNum []uint64) (*PolygonvalidiumForceBatchIterator, error) { + + var forceBatchNumRule []interface{} + for _, forceBatchNumItem := range forceBatchNum { + forceBatchNumRule = append(forceBatchNumRule, forceBatchNumItem) + } + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "ForceBatch", forceBatchNumRule) + if err != nil { + return nil, err + } + return &PolygonvalidiumForceBatchIterator{contract: _Polygonvalidium.contract, event: "ForceBatch", logs: logs, sub: sub}, nil +} + +// WatchForceBatch is a free log subscription operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. +// +// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchForceBatch(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumForceBatch, forceBatchNum []uint64) (event.Subscription, error) { + + var forceBatchNumRule []interface{} + for _, forceBatchNumItem := range forceBatchNum { + forceBatchNumRule = append(forceBatchNumRule, forceBatchNumItem) + } + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "ForceBatch", forceBatchNumRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumForceBatch) + if err := _Polygonvalidium.contract.UnpackLog(event, "ForceBatch", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseForceBatch is a log parse operation binding the contract event 0xf94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931. +// +// Solidity: event ForceBatch(uint64 indexed forceBatchNum, bytes32 lastGlobalExitRoot, address sequencer, bytes transactions) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseForceBatch(log types.Log) (*PolygonvalidiumForceBatch, error) { + event := new(PolygonvalidiumForceBatch) + if err := _Polygonvalidium.contract.UnpackLog(event, "ForceBatch", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumInitialSequenceBatchesIterator is returned from FilterInitialSequenceBatches and is used to iterate over the raw logs and unpacked data for InitialSequenceBatches events raised by the Polygonvalidium contract. +type PolygonvalidiumInitialSequenceBatchesIterator struct { + Event *PolygonvalidiumInitialSequenceBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumInitialSequenceBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumInitialSequenceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumInitialSequenceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumInitialSequenceBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumInitialSequenceBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumInitialSequenceBatches represents a InitialSequenceBatches event raised by the Polygonvalidium contract. +type PolygonvalidiumInitialSequenceBatches struct { + Transactions []byte + LastGlobalExitRoot [32]byte + Sequencer common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialSequenceBatches is a free log retrieval operation binding the contract event 0x060116213bcbf54ca19fd649dc84b59ab2bbd200ab199770e4d923e222a28e7f. +// +// Solidity: event InitialSequenceBatches(bytes transactions, bytes32 lastGlobalExitRoot, address sequencer) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterInitialSequenceBatches(opts *bind.FilterOpts) (*PolygonvalidiumInitialSequenceBatchesIterator, error) { + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "InitialSequenceBatches") + if err != nil { + return nil, err + } + return &PolygonvalidiumInitialSequenceBatchesIterator{contract: _Polygonvalidium.contract, event: "InitialSequenceBatches", logs: logs, sub: sub}, nil +} + +// WatchInitialSequenceBatches is a free log subscription operation binding the contract event 0x060116213bcbf54ca19fd649dc84b59ab2bbd200ab199770e4d923e222a28e7f. +// +// Solidity: event InitialSequenceBatches(bytes transactions, bytes32 lastGlobalExitRoot, address sequencer) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchInitialSequenceBatches(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumInitialSequenceBatches) (event.Subscription, error) { + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "InitialSequenceBatches") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumInitialSequenceBatches) + if err := _Polygonvalidium.contract.UnpackLog(event, "InitialSequenceBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialSequenceBatches is a log parse operation binding the contract event 0x060116213bcbf54ca19fd649dc84b59ab2bbd200ab199770e4d923e222a28e7f. +// +// Solidity: event InitialSequenceBatches(bytes transactions, bytes32 lastGlobalExitRoot, address sequencer) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseInitialSequenceBatches(log types.Log) (*PolygonvalidiumInitialSequenceBatches, error) { + event := new(PolygonvalidiumInitialSequenceBatches) + if err := _Polygonvalidium.contract.UnpackLog(event, "InitialSequenceBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Polygonvalidium contract. +type PolygonvalidiumInitializedIterator struct { + Event *PolygonvalidiumInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumInitialized represents a Initialized event raised by the Polygonvalidium contract. +type PolygonvalidiumInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterInitialized(opts *bind.FilterOpts) (*PolygonvalidiumInitializedIterator, error) { + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &PolygonvalidiumInitializedIterator{contract: _Polygonvalidium.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumInitialized) (event.Subscription, error) { + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumInitialized) + if err := _Polygonvalidium.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseInitialized(log types.Log) (*PolygonvalidiumInitialized, error) { + event := new(PolygonvalidiumInitialized) + if err := _Polygonvalidium.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumSequenceBatchesIterator is returned from FilterSequenceBatches and is used to iterate over the raw logs and unpacked data for SequenceBatches events raised by the Polygonvalidium contract. +type PolygonvalidiumSequenceBatchesIterator struct { + Event *PolygonvalidiumSequenceBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumSequenceBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSequenceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSequenceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumSequenceBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumSequenceBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumSequenceBatches represents a SequenceBatches event raised by the Polygonvalidium contract. +type PolygonvalidiumSequenceBatches struct { + NumBatch uint64 + L1InfoRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSequenceBatches is a free log retrieval operation binding the contract event 0x3e54d0825ed78523037d00a81759237eb436ce774bd546993ee67a1b67b6e766. +// +// Solidity: event SequenceBatches(uint64 indexed numBatch, bytes32 l1InfoRoot) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterSequenceBatches(opts *bind.FilterOpts, numBatch []uint64) (*PolygonvalidiumSequenceBatchesIterator, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "SequenceBatches", numBatchRule) + if err != nil { + return nil, err + } + return &PolygonvalidiumSequenceBatchesIterator{contract: _Polygonvalidium.contract, event: "SequenceBatches", logs: logs, sub: sub}, nil +} + +// WatchSequenceBatches is a free log subscription operation binding the contract event 0x3e54d0825ed78523037d00a81759237eb436ce774bd546993ee67a1b67b6e766. +// +// Solidity: event SequenceBatches(uint64 indexed numBatch, bytes32 l1InfoRoot) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchSequenceBatches(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumSequenceBatches, numBatch []uint64) (event.Subscription, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "SequenceBatches", numBatchRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumSequenceBatches) + if err := _Polygonvalidium.contract.UnpackLog(event, "SequenceBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSequenceBatches is a log parse operation binding the contract event 0x3e54d0825ed78523037d00a81759237eb436ce774bd546993ee67a1b67b6e766. +// +// Solidity: event SequenceBatches(uint64 indexed numBatch, bytes32 l1InfoRoot) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseSequenceBatches(log types.Log) (*PolygonvalidiumSequenceBatches, error) { + event := new(PolygonvalidiumSequenceBatches) + if err := _Polygonvalidium.contract.UnpackLog(event, "SequenceBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumSequenceForceBatchesIterator is returned from FilterSequenceForceBatches and is used to iterate over the raw logs and unpacked data for SequenceForceBatches events raised by the Polygonvalidium contract. +type PolygonvalidiumSequenceForceBatchesIterator struct { + Event *PolygonvalidiumSequenceForceBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumSequenceForceBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSequenceForceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSequenceForceBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumSequenceForceBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumSequenceForceBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumSequenceForceBatches represents a SequenceForceBatches event raised by the Polygonvalidium contract. +type PolygonvalidiumSequenceForceBatches struct { + NumBatch uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSequenceForceBatches is a free log retrieval operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. +// +// Solidity: event SequenceForceBatches(uint64 indexed numBatch) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterSequenceForceBatches(opts *bind.FilterOpts, numBatch []uint64) (*PolygonvalidiumSequenceForceBatchesIterator, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "SequenceForceBatches", numBatchRule) + if err != nil { + return nil, err + } + return &PolygonvalidiumSequenceForceBatchesIterator{contract: _Polygonvalidium.contract, event: "SequenceForceBatches", logs: logs, sub: sub}, nil +} + +// WatchSequenceForceBatches is a free log subscription operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. +// +// Solidity: event SequenceForceBatches(uint64 indexed numBatch) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchSequenceForceBatches(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumSequenceForceBatches, numBatch []uint64) (event.Subscription, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "SequenceForceBatches", numBatchRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumSequenceForceBatches) + if err := _Polygonvalidium.contract.UnpackLog(event, "SequenceForceBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSequenceForceBatches is a log parse operation binding the contract event 0x648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a4. +// +// Solidity: event SequenceForceBatches(uint64 indexed numBatch) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseSequenceForceBatches(log types.Log) (*PolygonvalidiumSequenceForceBatches, error) { + event := new(PolygonvalidiumSequenceForceBatches) + if err := _Polygonvalidium.contract.UnpackLog(event, "SequenceForceBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumSetDataAvailabilityProtocolIterator is returned from FilterSetDataAvailabilityProtocol and is used to iterate over the raw logs and unpacked data for SetDataAvailabilityProtocol events raised by the Polygonvalidium contract. +type PolygonvalidiumSetDataAvailabilityProtocolIterator struct { + Event *PolygonvalidiumSetDataAvailabilityProtocol // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumSetDataAvailabilityProtocolIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSetDataAvailabilityProtocol) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSetDataAvailabilityProtocol) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumSetDataAvailabilityProtocolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumSetDataAvailabilityProtocolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumSetDataAvailabilityProtocol represents a SetDataAvailabilityProtocol event raised by the Polygonvalidium contract. +type PolygonvalidiumSetDataAvailabilityProtocol struct { + NewDataAvailabilityProtocol common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetDataAvailabilityProtocol is a free log retrieval operation binding the contract event 0xd331bd4c4cd1afecb94a225184bded161ff3213624ba4fb58c4f30c5a861144a. +// +// Solidity: event SetDataAvailabilityProtocol(address newDataAvailabilityProtocol) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterSetDataAvailabilityProtocol(opts *bind.FilterOpts) (*PolygonvalidiumSetDataAvailabilityProtocolIterator, error) { + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "SetDataAvailabilityProtocol") + if err != nil { + return nil, err + } + return &PolygonvalidiumSetDataAvailabilityProtocolIterator{contract: _Polygonvalidium.contract, event: "SetDataAvailabilityProtocol", logs: logs, sub: sub}, nil +} + +// WatchSetDataAvailabilityProtocol is a free log subscription operation binding the contract event 0xd331bd4c4cd1afecb94a225184bded161ff3213624ba4fb58c4f30c5a861144a. +// +// Solidity: event SetDataAvailabilityProtocol(address newDataAvailabilityProtocol) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchSetDataAvailabilityProtocol(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumSetDataAvailabilityProtocol) (event.Subscription, error) { + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "SetDataAvailabilityProtocol") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumSetDataAvailabilityProtocol) + if err := _Polygonvalidium.contract.UnpackLog(event, "SetDataAvailabilityProtocol", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetDataAvailabilityProtocol is a log parse operation binding the contract event 0xd331bd4c4cd1afecb94a225184bded161ff3213624ba4fb58c4f30c5a861144a. +// +// Solidity: event SetDataAvailabilityProtocol(address newDataAvailabilityProtocol) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseSetDataAvailabilityProtocol(log types.Log) (*PolygonvalidiumSetDataAvailabilityProtocol, error) { + event := new(PolygonvalidiumSetDataAvailabilityProtocol) + if err := _Polygonvalidium.contract.UnpackLog(event, "SetDataAvailabilityProtocol", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumSetForceBatchAddressIterator is returned from FilterSetForceBatchAddress and is used to iterate over the raw logs and unpacked data for SetForceBatchAddress events raised by the Polygonvalidium contract. +type PolygonvalidiumSetForceBatchAddressIterator struct { + Event *PolygonvalidiumSetForceBatchAddress // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumSetForceBatchAddressIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSetForceBatchAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSetForceBatchAddress) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumSetForceBatchAddressIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumSetForceBatchAddressIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumSetForceBatchAddress represents a SetForceBatchAddress event raised by the Polygonvalidium contract. +type PolygonvalidiumSetForceBatchAddress struct { + NewForceBatchAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetForceBatchAddress is a free log retrieval operation binding the contract event 0x5fbd7dd171301c4a1611a84aac4ba86d119478560557755f7927595b082634fb. +// +// Solidity: event SetForceBatchAddress(address newForceBatchAddress) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterSetForceBatchAddress(opts *bind.FilterOpts) (*PolygonvalidiumSetForceBatchAddressIterator, error) { + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "SetForceBatchAddress") + if err != nil { + return nil, err + } + return &PolygonvalidiumSetForceBatchAddressIterator{contract: _Polygonvalidium.contract, event: "SetForceBatchAddress", logs: logs, sub: sub}, nil +} + +// WatchSetForceBatchAddress is a free log subscription operation binding the contract event 0x5fbd7dd171301c4a1611a84aac4ba86d119478560557755f7927595b082634fb. +// +// Solidity: event SetForceBatchAddress(address newForceBatchAddress) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchSetForceBatchAddress(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumSetForceBatchAddress) (event.Subscription, error) { + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "SetForceBatchAddress") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumSetForceBatchAddress) + if err := _Polygonvalidium.contract.UnpackLog(event, "SetForceBatchAddress", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetForceBatchAddress is a log parse operation binding the contract event 0x5fbd7dd171301c4a1611a84aac4ba86d119478560557755f7927595b082634fb. +// +// Solidity: event SetForceBatchAddress(address newForceBatchAddress) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseSetForceBatchAddress(log types.Log) (*PolygonvalidiumSetForceBatchAddress, error) { + event := new(PolygonvalidiumSetForceBatchAddress) + if err := _Polygonvalidium.contract.UnpackLog(event, "SetForceBatchAddress", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumSetForceBatchTimeoutIterator is returned from FilterSetForceBatchTimeout and is used to iterate over the raw logs and unpacked data for SetForceBatchTimeout events raised by the Polygonvalidium contract. +type PolygonvalidiumSetForceBatchTimeoutIterator struct { + Event *PolygonvalidiumSetForceBatchTimeout // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumSetForceBatchTimeoutIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSetForceBatchTimeout) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSetForceBatchTimeout) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumSetForceBatchTimeoutIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumSetForceBatchTimeoutIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumSetForceBatchTimeout represents a SetForceBatchTimeout event raised by the Polygonvalidium contract. +type PolygonvalidiumSetForceBatchTimeout struct { + NewforceBatchTimeout uint64 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetForceBatchTimeout is a free log retrieval operation binding the contract event 0xa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b. +// +// Solidity: event SetForceBatchTimeout(uint64 newforceBatchTimeout) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterSetForceBatchTimeout(opts *bind.FilterOpts) (*PolygonvalidiumSetForceBatchTimeoutIterator, error) { + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "SetForceBatchTimeout") + if err != nil { + return nil, err + } + return &PolygonvalidiumSetForceBatchTimeoutIterator{contract: _Polygonvalidium.contract, event: "SetForceBatchTimeout", logs: logs, sub: sub}, nil +} + +// WatchSetForceBatchTimeout is a free log subscription operation binding the contract event 0xa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b. +// +// Solidity: event SetForceBatchTimeout(uint64 newforceBatchTimeout) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchSetForceBatchTimeout(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumSetForceBatchTimeout) (event.Subscription, error) { + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "SetForceBatchTimeout") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumSetForceBatchTimeout) + if err := _Polygonvalidium.contract.UnpackLog(event, "SetForceBatchTimeout", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetForceBatchTimeout is a log parse operation binding the contract event 0xa7eb6cb8a613eb4e8bddc1ac3d61ec6cf10898760f0b187bcca794c6ca6fa40b. +// +// Solidity: event SetForceBatchTimeout(uint64 newforceBatchTimeout) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseSetForceBatchTimeout(log types.Log) (*PolygonvalidiumSetForceBatchTimeout, error) { + event := new(PolygonvalidiumSetForceBatchTimeout) + if err := _Polygonvalidium.contract.UnpackLog(event, "SetForceBatchTimeout", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumSetTrustedSequencerIterator is returned from FilterSetTrustedSequencer and is used to iterate over the raw logs and unpacked data for SetTrustedSequencer events raised by the Polygonvalidium contract. +type PolygonvalidiumSetTrustedSequencerIterator struct { + Event *PolygonvalidiumSetTrustedSequencer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumSetTrustedSequencerIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSetTrustedSequencer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSetTrustedSequencer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumSetTrustedSequencerIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumSetTrustedSequencerIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumSetTrustedSequencer represents a SetTrustedSequencer event raised by the Polygonvalidium contract. +type PolygonvalidiumSetTrustedSequencer struct { + NewTrustedSequencer common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetTrustedSequencer is a free log retrieval operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. +// +// Solidity: event SetTrustedSequencer(address newTrustedSequencer) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterSetTrustedSequencer(opts *bind.FilterOpts) (*PolygonvalidiumSetTrustedSequencerIterator, error) { + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "SetTrustedSequencer") + if err != nil { + return nil, err + } + return &PolygonvalidiumSetTrustedSequencerIterator{contract: _Polygonvalidium.contract, event: "SetTrustedSequencer", logs: logs, sub: sub}, nil +} + +// WatchSetTrustedSequencer is a free log subscription operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. +// +// Solidity: event SetTrustedSequencer(address newTrustedSequencer) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchSetTrustedSequencer(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumSetTrustedSequencer) (event.Subscription, error) { + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "SetTrustedSequencer") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumSetTrustedSequencer) + if err := _Polygonvalidium.contract.UnpackLog(event, "SetTrustedSequencer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetTrustedSequencer is a log parse operation binding the contract event 0xf54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0. +// +// Solidity: event SetTrustedSequencer(address newTrustedSequencer) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseSetTrustedSequencer(log types.Log) (*PolygonvalidiumSetTrustedSequencer, error) { + event := new(PolygonvalidiumSetTrustedSequencer) + if err := _Polygonvalidium.contract.UnpackLog(event, "SetTrustedSequencer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumSetTrustedSequencerURLIterator is returned from FilterSetTrustedSequencerURL and is used to iterate over the raw logs and unpacked data for SetTrustedSequencerURL events raised by the Polygonvalidium contract. +type PolygonvalidiumSetTrustedSequencerURLIterator struct { + Event *PolygonvalidiumSetTrustedSequencerURL // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumSetTrustedSequencerURLIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSetTrustedSequencerURL) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSetTrustedSequencerURL) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumSetTrustedSequencerURLIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumSetTrustedSequencerURLIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumSetTrustedSequencerURL represents a SetTrustedSequencerURL event raised by the Polygonvalidium contract. +type PolygonvalidiumSetTrustedSequencerURL struct { + NewTrustedSequencerURL string + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetTrustedSequencerURL is a free log retrieval operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. +// +// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterSetTrustedSequencerURL(opts *bind.FilterOpts) (*PolygonvalidiumSetTrustedSequencerURLIterator, error) { + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "SetTrustedSequencerURL") + if err != nil { + return nil, err + } + return &PolygonvalidiumSetTrustedSequencerURLIterator{contract: _Polygonvalidium.contract, event: "SetTrustedSequencerURL", logs: logs, sub: sub}, nil +} + +// WatchSetTrustedSequencerURL is a free log subscription operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. +// +// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchSetTrustedSequencerURL(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumSetTrustedSequencerURL) (event.Subscription, error) { + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "SetTrustedSequencerURL") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumSetTrustedSequencerURL) + if err := _Polygonvalidium.contract.UnpackLog(event, "SetTrustedSequencerURL", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetTrustedSequencerURL is a log parse operation binding the contract event 0x6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20. +// +// Solidity: event SetTrustedSequencerURL(string newTrustedSequencerURL) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseSetTrustedSequencerURL(log types.Log) (*PolygonvalidiumSetTrustedSequencerURL, error) { + event := new(PolygonvalidiumSetTrustedSequencerURL) + if err := _Polygonvalidium.contract.UnpackLog(event, "SetTrustedSequencerURL", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumSwitchSequenceWithDataAvailabilityIterator is returned from FilterSwitchSequenceWithDataAvailability and is used to iterate over the raw logs and unpacked data for SwitchSequenceWithDataAvailability events raised by the Polygonvalidium contract. +type PolygonvalidiumSwitchSequenceWithDataAvailabilityIterator struct { + Event *PolygonvalidiumSwitchSequenceWithDataAvailability // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumSwitchSequenceWithDataAvailabilityIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSwitchSequenceWithDataAvailability) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumSwitchSequenceWithDataAvailability) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumSwitchSequenceWithDataAvailabilityIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumSwitchSequenceWithDataAvailabilityIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumSwitchSequenceWithDataAvailability represents a SwitchSequenceWithDataAvailability event raised by the Polygonvalidium contract. +type PolygonvalidiumSwitchSequenceWithDataAvailability struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSwitchSequenceWithDataAvailability is a free log retrieval operation binding the contract event 0xf32a0473f809a720a4f8af1e50d353f1caf7452030626fdaac4273f5e6587f41. +// +// Solidity: event SwitchSequenceWithDataAvailability() +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterSwitchSequenceWithDataAvailability(opts *bind.FilterOpts) (*PolygonvalidiumSwitchSequenceWithDataAvailabilityIterator, error) { + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "SwitchSequenceWithDataAvailability") + if err != nil { + return nil, err + } + return &PolygonvalidiumSwitchSequenceWithDataAvailabilityIterator{contract: _Polygonvalidium.contract, event: "SwitchSequenceWithDataAvailability", logs: logs, sub: sub}, nil +} + +// WatchSwitchSequenceWithDataAvailability is a free log subscription operation binding the contract event 0xf32a0473f809a720a4f8af1e50d353f1caf7452030626fdaac4273f5e6587f41. +// +// Solidity: event SwitchSequenceWithDataAvailability() +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchSwitchSequenceWithDataAvailability(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumSwitchSequenceWithDataAvailability) (event.Subscription, error) { + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "SwitchSequenceWithDataAvailability") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumSwitchSequenceWithDataAvailability) + if err := _Polygonvalidium.contract.UnpackLog(event, "SwitchSequenceWithDataAvailability", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSwitchSequenceWithDataAvailability is a log parse operation binding the contract event 0xf32a0473f809a720a4f8af1e50d353f1caf7452030626fdaac4273f5e6587f41. +// +// Solidity: event SwitchSequenceWithDataAvailability() +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseSwitchSequenceWithDataAvailability(log types.Log) (*PolygonvalidiumSwitchSequenceWithDataAvailability, error) { + event := new(PolygonvalidiumSwitchSequenceWithDataAvailability) + if err := _Polygonvalidium.contract.UnpackLog(event, "SwitchSequenceWithDataAvailability", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumTransferAdminRoleIterator is returned from FilterTransferAdminRole and is used to iterate over the raw logs and unpacked data for TransferAdminRole events raised by the Polygonvalidium contract. +type PolygonvalidiumTransferAdminRoleIterator struct { + Event *PolygonvalidiumTransferAdminRole // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumTransferAdminRoleIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumTransferAdminRole) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumTransferAdminRole) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumTransferAdminRoleIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumTransferAdminRoleIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumTransferAdminRole represents a TransferAdminRole event raised by the Polygonvalidium contract. +type PolygonvalidiumTransferAdminRole struct { + NewPendingAdmin common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransferAdminRole is a free log retrieval operation binding the contract event 0xa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce6. +// +// Solidity: event TransferAdminRole(address newPendingAdmin) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterTransferAdminRole(opts *bind.FilterOpts) (*PolygonvalidiumTransferAdminRoleIterator, error) { + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "TransferAdminRole") + if err != nil { + return nil, err + } + return &PolygonvalidiumTransferAdminRoleIterator{contract: _Polygonvalidium.contract, event: "TransferAdminRole", logs: logs, sub: sub}, nil +} + +// WatchTransferAdminRole is a free log subscription operation binding the contract event 0xa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce6. +// +// Solidity: event TransferAdminRole(address newPendingAdmin) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchTransferAdminRole(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumTransferAdminRole) (event.Subscription, error) { + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "TransferAdminRole") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumTransferAdminRole) + if err := _Polygonvalidium.contract.UnpackLog(event, "TransferAdminRole", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransferAdminRole is a log parse operation binding the contract event 0xa5b56b7906fd0a20e3f35120dd8343db1e12e037a6c90111c7e42885e82a1ce6. +// +// Solidity: event TransferAdminRole(address newPendingAdmin) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseTransferAdminRole(log types.Log) (*PolygonvalidiumTransferAdminRole, error) { + event := new(PolygonvalidiumTransferAdminRole) + if err := _Polygonvalidium.contract.UnpackLog(event, "TransferAdminRole", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// PolygonvalidiumVerifyBatchesIterator is returned from FilterVerifyBatches and is used to iterate over the raw logs and unpacked data for VerifyBatches events raised by the Polygonvalidium contract. +type PolygonvalidiumVerifyBatchesIterator struct { + Event *PolygonvalidiumVerifyBatches // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *PolygonvalidiumVerifyBatchesIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumVerifyBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(PolygonvalidiumVerifyBatches) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *PolygonvalidiumVerifyBatchesIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *PolygonvalidiumVerifyBatchesIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// PolygonvalidiumVerifyBatches represents a VerifyBatches event raised by the Polygonvalidium contract. +type PolygonvalidiumVerifyBatches struct { + NumBatch uint64 + StateRoot [32]byte + Aggregator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterVerifyBatches is a free log retrieval operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. +// +// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Polygonvalidium *PolygonvalidiumFilterer) FilterVerifyBatches(opts *bind.FilterOpts, numBatch []uint64, aggregator []common.Address) (*PolygonvalidiumVerifyBatchesIterator, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Polygonvalidium.contract.FilterLogs(opts, "VerifyBatches", numBatchRule, aggregatorRule) + if err != nil { + return nil, err + } + return &PolygonvalidiumVerifyBatchesIterator{contract: _Polygonvalidium.contract, event: "VerifyBatches", logs: logs, sub: sub}, nil +} + +// WatchVerifyBatches is a free log subscription operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. +// +// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Polygonvalidium *PolygonvalidiumFilterer) WatchVerifyBatches(opts *bind.WatchOpts, sink chan<- *PolygonvalidiumVerifyBatches, numBatch []uint64, aggregator []common.Address) (event.Subscription, error) { + + var numBatchRule []interface{} + for _, numBatchItem := range numBatch { + numBatchRule = append(numBatchRule, numBatchItem) + } + + var aggregatorRule []interface{} + for _, aggregatorItem := range aggregator { + aggregatorRule = append(aggregatorRule, aggregatorItem) + } + + logs, sub, err := _Polygonvalidium.contract.WatchLogs(opts, "VerifyBatches", numBatchRule, aggregatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(PolygonvalidiumVerifyBatches) + if err := _Polygonvalidium.contract.UnpackLog(event, "VerifyBatches", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseVerifyBatches is a log parse operation binding the contract event 0x9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966. +// +// Solidity: event VerifyBatches(uint64 indexed numBatch, bytes32 stateRoot, address indexed aggregator) +func (_Polygonvalidium *PolygonvalidiumFilterer) ParseVerifyBatches(log types.Log) (*PolygonvalidiumVerifyBatches, error) { + event := new(PolygonvalidiumVerifyBatches) + if err := _Polygonvalidium.contract.UnpackLog(event, "VerifyBatches", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/mocks/client.generated.go b/mocks/client.generated.go index 333f1c35..1bcf5872 100644 --- a/mocks/client.generated.go +++ b/mocks/client.generated.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.38.0. DO NOT EDIT. +// Code generated by mockery v2.40.1. DO NOT EDIT. package mocks diff --git a/mocks/client_factory.generated.go b/mocks/client_factory.generated.go index aff44994..694661f4 100644 --- a/mocks/client_factory.generated.go +++ b/mocks/client_factory.generated.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.38.0. DO NOT EDIT. +// Code generated by mockery v2.40.1. DO NOT EDIT. package mocks diff --git a/mocks/db.generated.go b/mocks/db.generated.go index f893c772..06e1b116 100644 --- a/mocks/db.generated.go +++ b/mocks/db.generated.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.38.0. DO NOT EDIT. +// Code generated by mockery v2.40.1. DO NOT EDIT. package mocks diff --git a/mocks/eth_client.generated.go b/mocks/eth_client.generated.go index fa905b6b..2cbfe779 100644 --- a/mocks/eth_client.generated.go +++ b/mocks/eth_client.generated.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.38.0. DO NOT EDIT. +// Code generated by mockery v2.40.1. DO NOT EDIT. package mocks diff --git a/mocks/eth_client_factory.generated.go b/mocks/eth_client_factory.generated.go index aa47fed0..6cbfd230 100644 --- a/mocks/eth_client_factory.generated.go +++ b/mocks/eth_client_factory.generated.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.38.0. DO NOT EDIT. +// Code generated by mockery v2.40.1. DO NOT EDIT. package mocks diff --git a/mocks/etherman.generated.go b/mocks/etherman.generated.go index ea285b09..2a94e12d 100644 --- a/mocks/etherman.generated.go +++ b/mocks/etherman.generated.go @@ -1,13 +1,11 @@ -// Code generated by mockery v2.38.0. DO NOT EDIT. +// Code generated by mockery v2.40.1. DO NOT EDIT. package mocks import ( big "math/big" - cdkvalidium "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/cdkvalidium" bind "github.com/ethereum/go-ethereum/accounts/abi/bind" - common "github.com/ethereum/go-ethereum/common" context "context" @@ -18,6 +16,8 @@ import ( mock "github.com/stretchr/testify/mock" + polygonvalidium "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/polygonvalidium" + types "github.com/ethereum/go-ethereum/core/types" ) @@ -35,23 +35,23 @@ func (_m *Etherman) EXPECT() *Etherman_Expecter { } // FilterSequenceBatches provides a mock function with given fields: opts, numBatch -func (_m *Etherman) FilterSequenceBatches(opts *bind.FilterOpts, numBatch []uint64) (*cdkvalidium.CdkvalidiumSequenceBatchesIterator, error) { +func (_m *Etherman) FilterSequenceBatches(opts *bind.FilterOpts, numBatch []uint64) (*polygonvalidium.PolygonvalidiumSequenceBatchesIterator, error) { ret := _m.Called(opts, numBatch) if len(ret) == 0 { panic("no return value specified for FilterSequenceBatches") } - var r0 *cdkvalidium.CdkvalidiumSequenceBatchesIterator + var r0 *polygonvalidium.PolygonvalidiumSequenceBatchesIterator var r1 error - if rf, ok := ret.Get(0).(func(*bind.FilterOpts, []uint64) (*cdkvalidium.CdkvalidiumSequenceBatchesIterator, error)); ok { + if rf, ok := ret.Get(0).(func(*bind.FilterOpts, []uint64) (*polygonvalidium.PolygonvalidiumSequenceBatchesIterator, error)); ok { return rf(opts, numBatch) } - if rf, ok := ret.Get(0).(func(*bind.FilterOpts, []uint64) *cdkvalidium.CdkvalidiumSequenceBatchesIterator); ok { + if rf, ok := ret.Get(0).(func(*bind.FilterOpts, []uint64) *polygonvalidium.PolygonvalidiumSequenceBatchesIterator); ok { r0 = rf(opts, numBatch) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*cdkvalidium.CdkvalidiumSequenceBatchesIterator) + r0 = ret.Get(0).(*polygonvalidium.PolygonvalidiumSequenceBatchesIterator) } } @@ -83,12 +83,12 @@ func (_c *Etherman_FilterSequenceBatches_Call) Run(run func(opts *bind.FilterOpt return _c } -func (_c *Etherman_FilterSequenceBatches_Call) Return(_a0 *cdkvalidium.CdkvalidiumSequenceBatchesIterator, _a1 error) *Etherman_FilterSequenceBatches_Call { +func (_c *Etherman_FilterSequenceBatches_Call) Return(_a0 *polygonvalidium.PolygonvalidiumSequenceBatchesIterator, _a1 error) *Etherman_FilterSequenceBatches_Call { _c.Call.Return(_a0, _a1) return _c } -func (_c *Etherman_FilterSequenceBatches_Call) RunAndReturn(run func(*bind.FilterOpts, []uint64) (*cdkvalidium.CdkvalidiumSequenceBatchesIterator, error)) *Etherman_FilterSequenceBatches_Call { +func (_c *Etherman_FilterSequenceBatches_Call) RunAndReturn(run func(*bind.FilterOpts, []uint64) (*polygonvalidium.PolygonvalidiumSequenceBatchesIterator, error)) *Etherman_FilterSequenceBatches_Call { _c.Call.Return(run) return _c } @@ -445,7 +445,7 @@ func (_c *Etherman_TrustedSequencerURL_Call) RunAndReturn(run func() (string, er } // WatchSetTrustedSequencer provides a mock function with given fields: ctx, events -func (_m *Etherman) WatchSetTrustedSequencer(ctx context.Context, events chan *cdkvalidium.CdkvalidiumSetTrustedSequencer) (event.Subscription, error) { +func (_m *Etherman) WatchSetTrustedSequencer(ctx context.Context, events chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer) (event.Subscription, error) { ret := _m.Called(ctx, events) if len(ret) == 0 { @@ -454,10 +454,10 @@ func (_m *Etherman) WatchSetTrustedSequencer(ctx context.Context, events chan *c var r0 event.Subscription var r1 error - if rf, ok := ret.Get(0).(func(context.Context, chan *cdkvalidium.CdkvalidiumSetTrustedSequencer) (event.Subscription, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer) (event.Subscription, error)); ok { return rf(ctx, events) } - if rf, ok := ret.Get(0).(func(context.Context, chan *cdkvalidium.CdkvalidiumSetTrustedSequencer) event.Subscription); ok { + if rf, ok := ret.Get(0).(func(context.Context, chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer) event.Subscription); ok { r0 = rf(ctx, events) } else { if ret.Get(0) != nil { @@ -465,7 +465,7 @@ func (_m *Etherman) WatchSetTrustedSequencer(ctx context.Context, events chan *c } } - if rf, ok := ret.Get(1).(func(context.Context, chan *cdkvalidium.CdkvalidiumSetTrustedSequencer) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer) error); ok { r1 = rf(ctx, events) } else { r1 = ret.Error(1) @@ -481,14 +481,14 @@ type Etherman_WatchSetTrustedSequencer_Call struct { // WatchSetTrustedSequencer is a helper method to define mock.On call // - ctx context.Context -// - events chan *cdkvalidium.CdkvalidiumSetTrustedSequencer +// - events chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer func (_e *Etherman_Expecter) WatchSetTrustedSequencer(ctx interface{}, events interface{}) *Etherman_WatchSetTrustedSequencer_Call { return &Etherman_WatchSetTrustedSequencer_Call{Call: _e.mock.On("WatchSetTrustedSequencer", ctx, events)} } -func (_c *Etherman_WatchSetTrustedSequencer_Call) Run(run func(ctx context.Context, events chan *cdkvalidium.CdkvalidiumSetTrustedSequencer)) *Etherman_WatchSetTrustedSequencer_Call { +func (_c *Etherman_WatchSetTrustedSequencer_Call) Run(run func(ctx context.Context, events chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer)) *Etherman_WatchSetTrustedSequencer_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(chan *cdkvalidium.CdkvalidiumSetTrustedSequencer)) + run(args[0].(context.Context), args[1].(chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer)) }) return _c } @@ -498,13 +498,13 @@ func (_c *Etherman_WatchSetTrustedSequencer_Call) Return(_a0 event.Subscription, return _c } -func (_c *Etherman_WatchSetTrustedSequencer_Call) RunAndReturn(run func(context.Context, chan *cdkvalidium.CdkvalidiumSetTrustedSequencer) (event.Subscription, error)) *Etherman_WatchSetTrustedSequencer_Call { +func (_c *Etherman_WatchSetTrustedSequencer_Call) RunAndReturn(run func(context.Context, chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer) (event.Subscription, error)) *Etherman_WatchSetTrustedSequencer_Call { _c.Call.Return(run) return _c } // WatchSetTrustedSequencerURL provides a mock function with given fields: ctx, events -func (_m *Etherman) WatchSetTrustedSequencerURL(ctx context.Context, events chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL) (event.Subscription, error) { +func (_m *Etherman) WatchSetTrustedSequencerURL(ctx context.Context, events chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL) (event.Subscription, error) { ret := _m.Called(ctx, events) if len(ret) == 0 { @@ -513,10 +513,10 @@ func (_m *Etherman) WatchSetTrustedSequencerURL(ctx context.Context, events chan var r0 event.Subscription var r1 error - if rf, ok := ret.Get(0).(func(context.Context, chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL) (event.Subscription, error)); ok { + if rf, ok := ret.Get(0).(func(context.Context, chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL) (event.Subscription, error)); ok { return rf(ctx, events) } - if rf, ok := ret.Get(0).(func(context.Context, chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL) event.Subscription); ok { + if rf, ok := ret.Get(0).(func(context.Context, chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL) event.Subscription); ok { r0 = rf(ctx, events) } else { if ret.Get(0) != nil { @@ -524,7 +524,7 @@ func (_m *Etherman) WatchSetTrustedSequencerURL(ctx context.Context, events chan } } - if rf, ok := ret.Get(1).(func(context.Context, chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL) error); ok { r1 = rf(ctx, events) } else { r1 = ret.Error(1) @@ -540,14 +540,14 @@ type Etherman_WatchSetTrustedSequencerURL_Call struct { // WatchSetTrustedSequencerURL is a helper method to define mock.On call // - ctx context.Context -// - events chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL +// - events chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL func (_e *Etherman_Expecter) WatchSetTrustedSequencerURL(ctx interface{}, events interface{}) *Etherman_WatchSetTrustedSequencerURL_Call { return &Etherman_WatchSetTrustedSequencerURL_Call{Call: _e.mock.On("WatchSetTrustedSequencerURL", ctx, events)} } -func (_c *Etherman_WatchSetTrustedSequencerURL_Call) Run(run func(ctx context.Context, events chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL)) *Etherman_WatchSetTrustedSequencerURL_Call { +func (_c *Etherman_WatchSetTrustedSequencerURL_Call) Run(run func(ctx context.Context, events chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL)) *Etherman_WatchSetTrustedSequencerURL_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL)) + run(args[0].(context.Context), args[1].(chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL)) }) return _c } @@ -557,7 +557,7 @@ func (_c *Etherman_WatchSetTrustedSequencerURL_Call) Return(_a0 event.Subscripti return _c } -func (_c *Etherman_WatchSetTrustedSequencerURL_Call) RunAndReturn(run func(context.Context, chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL) (event.Subscription, error)) *Etherman_WatchSetTrustedSequencerURL_Call { +func (_c *Etherman_WatchSetTrustedSequencerURL_Call) RunAndReturn(run func(context.Context, chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL) (event.Subscription, error)) *Etherman_WatchSetTrustedSequencerURL_Call { _c.Call.Return(run) return _c } diff --git a/mocks/sequencer_tracker.generated.go b/mocks/sequencer_tracker.generated.go index 2b9f73d2..f821ca0e 100644 --- a/mocks/sequencer_tracker.generated.go +++ b/mocks/sequencer_tracker.generated.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.38.0. DO NOT EDIT. +// Code generated by mockery v2.40.1. DO NOT EDIT. package mocks diff --git a/mocks/subscription.generated.go b/mocks/subscription.generated.go index 547f5ca8..00f0a861 100644 --- a/mocks/subscription.generated.go +++ b/mocks/subscription.generated.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.38.0. DO NOT EDIT. +// Code generated by mockery v2.40.1. DO NOT EDIT. package mocks diff --git a/mocks/tx.generated.go b/mocks/tx.generated.go index fddcf9ec..6ff9b243 100644 --- a/mocks/tx.generated.go +++ b/mocks/tx.generated.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.38.0. DO NOT EDIT. +// Code generated by mockery v2.40.1. DO NOT EDIT. package mocks diff --git a/sequencer/tracker.go b/sequencer/tracker.go index 53ffe21e..5ca79459 100644 --- a/sequencer/tracker.go +++ b/sequencer/tracker.go @@ -7,7 +7,7 @@ import ( "github.com/0xPolygon/cdk-data-availability/config" "github.com/0xPolygon/cdk-data-availability/etherman" - "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/cdkvalidium" + "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/polygonvalidium" "github.com/0xPolygon/cdk-data-availability/log" "github.com/ethereum/go-ethereum/common" ) @@ -86,7 +86,7 @@ func (st *Tracker) Start(ctx context.Context) { } func (st *Tracker) trackAddrChanges(ctx context.Context) { - events := make(chan *cdkvalidium.CdkvalidiumSetTrustedSequencer) + events := make(chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer) defer close(events) for { @@ -133,7 +133,7 @@ func (st *Tracker) trackAddrChanges(ctx context.Context) { } func (st *Tracker) trackUrlChanges(ctx context.Context) { - events := make(chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL) + events := make(chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL) defer close(events) for { diff --git a/sequencer/tracker_test.go b/sequencer/tracker_test.go index 40642b99..e76bb84a 100644 --- a/sequencer/tracker_test.go +++ b/sequencer/tracker_test.go @@ -8,7 +8,7 @@ import ( "github.com/0xPolygon/cdk-data-availability/config" "github.com/0xPolygon/cdk-data-availability/config/types" - "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/cdkvalidium" + "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/polygonvalidium" "github.com/0xPolygon/cdk-data-availability/mocks" "github.com/0xPolygon/cdk-data-availability/sequencer" "github.com/ethereum/go-ethereum/common" @@ -85,8 +85,8 @@ func Test_NewTracker(t *testing.T) { func TestTracker(t *testing.T) { var ( - addressesChan chan *cdkvalidium.CdkvalidiumSetTrustedSequencer - urlsChan chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL + addressesChan chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer + urlsChan chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL ) ctx := context.Background() @@ -106,7 +106,7 @@ func TestTracker(t *testing.T) { etherman.On("WatchSetTrustedSequencer", mock.Anything, mock.Anything). Run(func(args mock.Arguments) { var ok bool - addressesChan, ok = args[1].(chan *cdkvalidium.CdkvalidiumSetTrustedSequencer) + addressesChan, ok = args[1].(chan *polygonvalidium.PolygonvalidiumSetTrustedSequencer) require.True(t, ok) }). Return(addressesSubscription, nil) @@ -120,7 +120,7 @@ func TestTracker(t *testing.T) { etherman.On("WatchSetTrustedSequencerURL", mock.Anything, mock.Anything). Run(func(args mock.Arguments) { var ok bool - urlsChan, ok = args[1].(chan *cdkvalidium.CdkvalidiumSetTrustedSequencerURL) + urlsChan, ok = args[1].(chan *polygonvalidium.PolygonvalidiumSetTrustedSequencerURL) require.True(t, ok) }). Return(urlsSubscription, nil) @@ -142,11 +142,11 @@ func TestTracker(t *testing.T) { return addressesChan != nil && urlsChan != nil }) - addressesChan <- &cdkvalidium.CdkvalidiumSetTrustedSequencer{ + addressesChan <- &polygonvalidium.PolygonvalidiumSetTrustedSequencer{ NewTrustedSequencer: updatedAddress, } - urlsChan <- &cdkvalidium.CdkvalidiumSetTrustedSequencerURL{ + urlsChan <- &polygonvalidium.PolygonvalidiumSetTrustedSequencerURL{ NewTrustedSequencerURL: updatedURL, } diff --git a/services/datacom/datacom_test.go b/services/datacom/datacom_test.go index 4ec2f97d..45c1a7ef 100644 --- a/services/datacom/datacom_test.go +++ b/services/datacom/datacom_test.go @@ -31,23 +31,8 @@ func TestDataCom_SignSequence(t *testing.T) { } sequence := types.Sequence{ - OldAccInputHash: common.HexToHash("0x101"), - Batches: []types.Batch{ - { - Number: types.ArgUint64(1), - GlobalExitRoot: common.HexToHash("0x001"), - L2Data: types.ArgBytes([]byte{0, 1}), - Timestamp: types.ArgUint64(1), - Coinbase: common.HexToAddress("0x011"), - }, - { - Number: types.ArgUint64(2), - GlobalExitRoot: common.HexToHash("0x002"), - L2Data: types.ArgBytes([]byte{2, 3}), - Timestamp: types.ArgUint64(2), - Coinbase: common.HexToAddress("0x012"), - }, - }, + types.ArgBytes([]byte{0, 1}), + types.ArgBytes([]byte{2, 3}), } privateKey, err := crypto.GenerateKey() diff --git a/synchronizer/batches.go b/synchronizer/batches.go index 7ba6abb4..c19498a4 100644 --- a/synchronizer/batches.go +++ b/synchronizer/batches.go @@ -11,7 +11,7 @@ import ( "github.com/0xPolygon/cdk-data-availability/config" "github.com/0xPolygon/cdk-data-availability/db" "github.com/0xPolygon/cdk-data-availability/etherman" - "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/cdkvalidium" + "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/polygonvalidium" "github.com/0xPolygon/cdk-data-availability/log" "github.com/0xPolygon/cdk-data-availability/rpc" "github.com/0xPolygon/cdk-data-availability/sequencer" @@ -40,7 +40,7 @@ type BatchSynchronizer struct { committee map[common.Address]etherman.DataCommitteeMember lock sync.Mutex reorgs <-chan BlockReorg - events chan *cdkvalidium.CdkvalidiumSequenceBatches + events chan *polygonvalidium.PolygonvalidiumSequenceBatches sequencer SequencerTracker rpcClientFactory client.Factory } @@ -68,7 +68,7 @@ func NewBatchSynchronizer( self: self, db: db, reorgs: reorgs, - events: make(chan *cdkvalidium.CdkvalidiumSequenceBatches), + events: make(chan *polygonvalidium.PolygonvalidiumSequenceBatches), sequencer: sequencer, rpcClientFactory: rpcClientFactory, } @@ -209,7 +209,7 @@ type batchKey struct { hash common.Hash } -func (bs *BatchSynchronizer) handleEvent(event *cdkvalidium.CdkvalidiumSequenceBatches) error { +func (bs *BatchSynchronizer) handleEvent(event *polygonvalidium.PolygonvalidiumSequenceBatches) error { ctx, cancel := context.WithTimeout(context.Background(), bs.rpcTimeout) defer cancel() diff --git a/synchronizer/batches_test.go b/synchronizer/batches_test.go index 4bec3bcd..d904348d 100644 --- a/synchronizer/batches_test.go +++ b/synchronizer/batches_test.go @@ -7,7 +7,7 @@ import ( "testing" "github.com/0xPolygon/cdk-data-availability/etherman" - "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/cdkvalidium" + "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/polygonvalidium" "github.com/0xPolygon/cdk-data-availability/mocks" "github.com/0xPolygon/cdk-data-availability/sequencer" "github.com/0xPolygon/cdk-data-availability/types" @@ -261,7 +261,7 @@ func TestBatchSynchronizer_Resolve(t *testing.T) { }) } -func TestBatchSyncronizer_HandleEvent(t *testing.T) { +func TestBatchSynchronizer_HandleEvent(t *testing.T) { t.Parallel() type testConfig struct { @@ -285,8 +285,7 @@ func TestBatchSyncronizer_HandleEvent(t *testing.T) { } to := common.HexToAddress("0xFFFF") - sequencBatchesFnID := []byte{67, 138, 83, 153} - event := &cdkvalidium.CdkvalidiumSequenceBatches{ + event := &polygonvalidium.PolygonvalidiumSequenceBatches{ Raw: ethTypes.Log{ TxHash: common.BytesToHash([]byte{0, 1, 2, 3}), }, @@ -295,20 +294,19 @@ func TestBatchSyncronizer_HandleEvent(t *testing.T) { batchL2Data := []byte{1, 2, 3, 4, 5, 6} txHash := crypto.Keccak256Hash(batchL2Data) - batchData := []cdkvalidium.CDKValidiumBatchData{ + batchData := []polygonvalidium.PolygonValidiumEtrogValidiumBatchData{ { - TransactionsHash: txHash, - GlobalExitRoot: common.BytesToHash([]byte{6, 7, 8, 9, 10, 11}), - Timestamp: 101, - MinForcedTimestamp: 11, + TransactionsHash: txHash, }, } - a, err := abi.JSON(strings.NewReader(cdkvalidium.CdkvalidiumABI)) + a, err := abi.JSON(strings.NewReader(polygonvalidium.PolygonvalidiumABI)) require.NoError(t, err) - data, err := a.Methods["sequenceBatches"].Inputs.Pack(batchData, - common.HexToAddress("0xABCD"), []byte{22, 23, 24}) + methodDefinition, ok := a.Methods["sequenceBatchesValidium"] + require.True(t, ok) + + data, err := methodDefinition.Inputs.Pack(batchData, common.HexToAddress("0xABCD"), []byte{22, 23, 24}) require.NoError(t, err) tx := ethTypes.NewTx( @@ -318,7 +316,7 @@ func TestBatchSyncronizer_HandleEvent(t *testing.T) { Gas: 21_000, To: &to, Value: ethgo.Ether(1), - Data: append(sequencBatchesFnID, data...), + Data: append(methodDefinition.ID, data...), }) testFn := func(config testConfig) { diff --git a/synchronizer/init.go b/synchronizer/init.go index 1f09f2c1..eb6e867a 100644 --- a/synchronizer/init.go +++ b/synchronizer/init.go @@ -30,14 +30,14 @@ func InitStartBlock(db db.DB, ethClientFactory types.EthClientFactory, l1 config // no need to resolve start block, it's already been set return nil } - log.Info("starting search for start block of contract ", l1.CDKValidiumAddress) + log.Info("starting search for start block of contract ", l1.PolygonValidiumAddress) ethClient, err := ethClientFactory.CreateEthClient(ctx, l1.RpcURL) if err != nil { return err } - startBlock, err := findContractDeploymentBlock(ctx, ethClient, common.HexToAddress(l1.CDKValidiumAddress)) + startBlock, err := findContractDeploymentBlock(ctx, ethClient, common.HexToAddress(l1.PolygonValidiumAddress)) if err != nil { return err } diff --git a/synchronizer/init_test.go b/synchronizer/init_test.go index 3bc64e1b..249b1a68 100644 --- a/synchronizer/init_test.go +++ b/synchronizer/init_test.go @@ -40,13 +40,13 @@ func Test_InitStartBlock(t *testing.T) { } l1Config := config.L1Config{ - WsURL: "ws://localhost:8080/ws", - RpcURL: "http://localhost:8081", - CDKValidiumAddress: "0xCDKValidium", - DataCommitteeAddress: "0xDAC", - Timeout: types.NewDuration(time.Minute), - RetryPeriod: types.NewDuration(time.Second * 2), - BlockBatchSize: 10, + WsURL: "ws://localhost:8080/ws", + RpcURL: "http://localhost:8081", + PolygonValidiumAddress: "0xCDKValidium", + DataCommitteeAddress: "0xDAC", + Timeout: types.NewDuration(time.Minute), + RetryPeriod: types.NewDuration(time.Second * 2), + BlockBatchSize: 10, } testFn := func(config testConfig) { @@ -237,8 +237,8 @@ func Test_InitStartBlock(t *testing.T) { Number: big.NewInt(3), }), nil}, codeAtArgs: [][]interface{}{ - {mock.Anything, common.HexToAddress(l1Config.CDKValidiumAddress), big.NewInt(1)}, - {mock.Anything, common.HexToAddress(l1Config.CDKValidiumAddress), big.NewInt(2)}, + {mock.Anything, common.HexToAddress(l1Config.PolygonValidiumAddress), big.NewInt(1)}, + {mock.Anything, common.HexToAddress(l1Config.PolygonValidiumAddress), big.NewInt(2)}, }, codeAtReturns: [][]interface{}{ {nil, errors.New("error")}, diff --git a/synchronizer/util.go b/synchronizer/util.go index e7bc9ec1..d099da28 100644 --- a/synchronizer/util.go +++ b/synchronizer/util.go @@ -4,14 +4,14 @@ import ( "encoding/json" "strings" - "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/cdkvalidium" + "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/polygonvalidium" "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/common" ) // UnpackTxData unpacks the keys in a SequenceBatches event func UnpackTxData(txData []byte) ([]common.Hash, error) { - a, err := abi.JSON(strings.NewReader(cdkvalidium.CdkvalidiumABI)) + a, err := abi.JSON(strings.NewReader(polygonvalidium.PolygonvalidiumABI)) if err != nil { return nil, err } @@ -23,7 +23,7 @@ func UnpackTxData(txData []byte) ([]common.Hash, error) { if err != nil { return nil, err } - var batches []cdkvalidium.CDKValidiumBatchData + var batches []polygonvalidium.PolygonValidiumEtrogValidiumBatchData bytes, err := json.Marshal(data[0]) if err != nil { return nil, err diff --git a/test/config/genesis.json b/test/config/genesis.json index 02212fcf..5966d4f3 100644 --- a/test/config/genesis.json +++ b/test/config/genesis.json @@ -1,103 +1,100 @@ { - "l1Config" : { - "chainId": 1337, - "polygonZkEVMAddress": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", - "maticTokenAddress": "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "polygonZkEVMGlobalExitRootAddress": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "cdkDataCommitteeAddress": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" - }, - "root": "0xd88680f1b151dd67518f9aca85161424c0cac61df2f5424a3ddc04ea25adecc7", - "genesisBlockNumber": 75, + "l1Config": { + "chainId": 1337, + "polygonZkEVMAddress": "0x8dAF17A20c9DBA35f005b6324F493785D239719d", + "polygonRollupManagerAddress": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", + "polTokenAddress": "0x5FbDB2315678afecb367f032d93F642f64180aa3", + "polygonZkEVMGlobalExitRootAddress": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" + }, + "genesisBlockNumber": 82, + "root": "0x440f7a41b160516a1ec57e0402bda853c2c7c2163ea30e0f49e1c62491efdcba", "genesis": [ - { - "contractName": "PolygonZkEVMDeployer", - "balance": "0", - "nonce": "4", - "address": "0x4b2700570f8426A24EA85e0324611E527BdD55B8", - "bytecode": "0x6080604052600436106100705760003560e01c8063715018a61161004e578063715018a6146100e65780638da5cb5b146100fb578063e11ae6cb14610126578063f2fde38b1461013957600080fd5b80632b79805a146100755780634a94d4871461008a5780636d07dbf81461009d575b600080fd5b610088610083366004610927565b610159565b005b6100886100983660046109c7565b6101cb565b3480156100a957600080fd5b506100bd6100b8366004610a1e565b61020d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b50610088610220565b34801561010757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100bd565b610088610134366004610a40565b610234565b34801561014557600080fd5b50610088610154366004610a90565b61029b565b610161610357565b600061016e8585856103d8565b905061017a8183610537565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527fba82f25fed02cd2a23d9f5d11c2ef588d22af5437cbf23bfe61d87257c480e4c9060200160405180910390a15050505050565b6101d3610357565b6101de83838361057b565b506040517f25adb19089b6a549831a273acdf7908cff8b7ee5f551f8d1d37996cf01c5df5b90600090a1505050565b600061021983836105a9565b9392505050565b610228610357565b61023260006105b6565b565b61023c610357565b60006102498484846103d8565b60405173ffffffffffffffffffffffffffffffffffffffff821681529091507fba82f25fed02cd2a23d9f5d11c2ef588d22af5437cbf23bfe61d87257c480e4c9060200160405180910390a150505050565b6102a3610357565b73ffffffffffffffffffffffffffffffffffffffff811661034b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610354816105b6565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610232576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610342565b600083471015610444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610342565b81516000036104af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610342565b8282516020840186f5905073ffffffffffffffffffffffffffffffffffffffff8116610219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610342565b6060610219838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564000081525061062b565b60606105a1848484604051806060016040528060298152602001610b3d6029913961062b565b949350505050565b6000610219838330610744565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060824710156106bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610342565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106e69190610acf565b60006040518083038185875af1925050503d8060008114610723576040519150601f19603f3d011682016040523d82523d6000602084013e610728565b606091505b50915091506107398783838761076e565b979650505050505050565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b606083156108045782516000036107fd5773ffffffffffffffffffffffffffffffffffffffff85163b6107fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610342565b50816105a1565b6105a183838151156108195781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103429190610aeb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261088d57600080fd5b813567ffffffffffffffff808211156108a8576108a861084d565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156108ee576108ee61084d565b8160405283815286602085880101111561090757600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561093d57600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561096357600080fd5b61096f8883890161087c565b9350606087013591508082111561098557600080fd5b506109928782880161087c565b91505092959194509250565b803573ffffffffffffffffffffffffffffffffffffffff811681146109c257600080fd5b919050565b6000806000606084860312156109dc57600080fd5b6109e58461099e565b9250602084013567ffffffffffffffff811115610a0157600080fd5b610a0d8682870161087c565b925050604084013590509250925092565b60008060408385031215610a3157600080fd5b50508035926020909101359150565b600080600060608486031215610a5557600080fd5b8335925060208401359150604084013567ffffffffffffffff811115610a7a57600080fd5b610a868682870161087c565b9150509250925092565b600060208284031215610aa257600080fd5b6102198261099e565b60005b83811015610ac6578181015183820152602001610aae565b50506000910152565b60008251610ae1818460208701610aab565b9190910192915050565b6020815260008251806020840152610b0a816040850160208701610aab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a26469706673582212203e70ce334e8ec9d8d03e87415afd36dce4e82633bd277b08937095a6bd66367764736f6c63430008110033", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - } - }, - { - "contractName": "ProxyAdmin", - "balance": "0", - "nonce": "1", - "address": "0xf065BaE7C019ff5627E09ed48D4EeA317D211956", - "bytecode": "0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461012b57806399a88ec41461013e578063f2fde38b1461015e578063f3b7dead1461017e57600080fd5b8063204e1c7a14610080578063715018a6146100c95780637eff275e146100e05780638da5cb5b14610100575b600080fd5b34801561008c57600080fd5b506100a061009b366004610608565b61019e565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d557600080fd5b506100de610255565b005b3480156100ec57600080fd5b506100de6100fb36600461062c565b610269565b34801561010c57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100a0565b6100de610139366004610694565b6102f7565b34801561014a57600080fd5b506100de61015936600461062c565b61038c565b34801561016a57600080fd5b506100de610179366004610608565b6103e8565b34801561018a57600080fd5b506100a0610199366004610608565b6104a4565b60008060008373ffffffffffffffffffffffffffffffffffffffff166040516101ea907f5c60da1b00000000000000000000000000000000000000000000000000000000815260040190565b600060405180830381855afa9150503d8060008114610225576040519150601f19603f3d011682016040523d82523d6000602084013e61022a565b606091505b50915091508161023957600080fd5b8080602001905181019061024d9190610788565b949350505050565b61025d6104f0565b6102676000610571565b565b6102716104f0565b6040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638f283970906024015b600060405180830381600087803b1580156102db57600080fd5b505af11580156102ef573d6000803e3d6000fd5b505050505050565b6102ff6104f0565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef28690349061035590869086906004016107a5565b6000604051808303818588803b15801561036e57600080fd5b505af1158015610382573d6000803e3d6000fd5b5050505050505050565b6103946104f0565b6040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633659cfe6906024016102c1565b6103f06104f0565b73ffffffffffffffffffffffffffffffffffffffff8116610498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6104a181610571565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff166040516101ea907ff851a44000000000000000000000000000000000000000000000000000000000815260040190565b60005473ffffffffffffffffffffffffffffffffffffffff163314610267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161048f565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a157600080fd5b60006020828403121561061a57600080fd5b8135610625816105e6565b9392505050565b6000806040838503121561063f57600080fd5b823561064a816105e6565b9150602083013561065a816105e6565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156106a957600080fd5b83356106b4816105e6565b925060208401356106c4816105e6565b9150604084013567ffffffffffffffff808211156106e157600080fd5b818601915086601f8301126106f557600080fd5b81358181111561070757610707610665565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561074d5761074d610665565b8160405282815289602084870101111561076657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60006020828403121561079a57600080fd5b8151610625816105e6565b73ffffffffffffffffffffffffffffffffffffffff8316815260006020604081840152835180604085015260005b818110156107ef578581018301518582016060015282016107d3565b5060006060828601015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010192505050939250505056fea2646970667358221220372a0e10eebea1b7fa43ae4c976994e6ed01d85eedc3637b83f01d3f06be442064736f6c63430008110033", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" - } - }, - { - "contractName": "PolygonZkEVMBridge implementation", - "balance": "0", - "nonce": "1", - "address": "0xf23919bb44BCa81aeAb4586BE71Ee3fd4E99B951", - "bytecode": "0x6080604052600436106200019f5760003560e01c8063647c576c11620000e7578063be5831c71162000089578063dbc169761162000060578063dbc169761462000639578063ee25560b1462000651578063fb570834146200068257600080fd5b8063be5831c714620005ae578063cd58657914620005ea578063d02103ca146200060157600080fd5b80639e34070f11620000be5780639e34070f146200050a578063aaa13cc2146200054f578063bab161bf146200057457600080fd5b8063647c576c146200048657806379e2cf9714620004ab57806381b1c17414620004c357600080fd5b80632d2c9d94116200015157806334ac9cf2116200012857806334ac9cf2146200034b5780633ae05047146200037a5780633e197043146200039257600080fd5b80632d2c9d9414620002765780632dfdf0b5146200029b578063318aee3d14620002c257600080fd5b806322e95f2c116200018657806322e95f2c14620001ef578063240ff378146200023a5780632cffd02e146200025157600080fd5b806315064c9614620001a45780632072f6c514620001d5575b600080fd5b348015620001b157600080fd5b50606854620001c09060ff1681565b60405190151581526020015b60405180910390f35b348015620001e257600080fd5b50620001ed620006a7565b005b348015620001fc57600080fd5b50620002146200020e366004620032db565b62000705565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001620001cc565b620001ed6200024b36600462003372565b620007a8565b3480156200025e57600080fd5b50620001ed6200027036600462003409565b620009d0565b3480156200028357600080fd5b50620001ed6200029536600462003409565b62000f74565b348015620002a857600080fd5b50620002b360535481565b604051908152602001620001cc565b348015620002cf57600080fd5b5062000319620002e1366004620034ef565b606b6020526000908152604090205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff909116602083015201620001cc565b3480156200035857600080fd5b50606c54620002149073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200038757600080fd5b50620002b362001178565b3480156200039f57600080fd5b50620002b3620003b136600462003526565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200049357600080fd5b50620001ed620004a5366004620035b0565b6200125e565b348015620004b857600080fd5b50620001ed620014ad565b348015620004d057600080fd5b5062000214620004e236600462003600565b606a6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156200051757600080fd5b50620001c06200052936600462003600565b600881901c600090815260696020526040902054600160ff9092169190911b9081161490565b3480156200055c57600080fd5b50620002146200056e3660046200361a565b620014e7565b3480156200058157600080fd5b506068546200059890610100900463ffffffff1681565b60405163ffffffff9091168152602001620001cc565b348015620005bb57600080fd5b506068546200059890790100000000000000000000000000000000000000000000000000900463ffffffff1681565b620001ed620005fb366004620036ce565b620016d3565b3480156200060e57600080fd5b50606854620002149065010000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156200064657600080fd5b50620001ed62001c37565b3480156200065e57600080fd5b50620002b36200067036600462003600565b60696020526000908152604090205481565b3480156200068f57600080fd5b50620001c0620006a136600462003770565b62001c93565b606c5473ffffffffffffffffffffffffffffffffffffffff163314620006f9576040517fe2e8106b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200070362001d7c565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602483015282516018818403018152603890920183528151918101919091206000908152606a909152205473ffffffffffffffffffffffffffffffffffffffff165b92915050565b60685460ff1615620007e6576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60685463ffffffff8681166101009092041614806200080c5750600263ffffffff861610155b1562000844576040517f0595ea2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001606860019054906101000a900463ffffffff163388883488886053546040516200089a9998979695949392919062003806565b60405180910390a1620009b8620009b26001606860019054906101000a900463ffffffff16338989348989604051620008d592919062003881565b60405180910390206040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b62001e10565b8215620009c957620009c962001f27565b5050505050565b60685460ff161562000a0e576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000a258b8b8b8b8b8b8b8b8b8b8b600062001ffc565b73ffffffffffffffffffffffffffffffffffffffff861662000b01576040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff861690859060405162000a7a9190620038e6565b60006040518083038185875af1925050503d806000811462000ab9576040519150601f19603f3d011682016040523d82523d6000602084013e62000abe565b606091505b505090508062000afa576040517f6747a28800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5062000efc565b60685463ffffffff61010090910481169088160362000b435762000b3d73ffffffffffffffffffffffffffffffffffffffff87168585620021ed565b62000efc565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b166024820152600090603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152606a90935291205490915073ffffffffffffffffffffffffffffffffffffffff168062000e6e576000808062000c1886880188620039fb565b92509250925060008584848460405162000c329062003292565b62000c409392919062003abd565b8190604051809103906000f590508015801562000c61573d6000803e3d6000fd5b506040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152602482018c9052919250908216906340c10f1990604401600060405180830381600087803b15801562000cd757600080fd5b505af115801562000cec573d6000803e3d6000fd5b5050505080606a600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180604001604052808e63ffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff16815250606b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507f490e59a1701b938786ac72570a1efeac994a3dbe96e2e883e19e902ace6e6a398d8d838b8b60405162000e5c95949392919062003afa565b60405180910390a15050505062000ef9565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018790528216906340c10f1990604401600060405180830381600087803b15801562000edf57600080fd5b505af115801562000ef4573d6000803e3d6000fd5b505050505b50505b6040805163ffffffff8c811682528916602082015273ffffffffffffffffffffffffffffffffffffffff88811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b60685460ff161562000fb2576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000fc98b8b8b8b8b8b8b8b8b8b8b600162001ffc565b60008473ffffffffffffffffffffffffffffffffffffffff1684888a868660405160240162000ffc949392919062003b42565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f200000000000000000000000000000000000000000000000000000000179052516200107f9190620038e6565b60006040518083038185875af1925050503d8060008114620010be576040519150601f19603f3d011682016040523d82523d6000602084013e620010c3565b606091505b5050905080620010ff576040517f37e391c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805163ffffffff8d811682528a16602082015273ffffffffffffffffffffffffffffffffffffffff89811682840152871660608201526080810186905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a1505050505050505050505050565b605354600090819081805b602081101562001255578083901c600116600103620011e65760338160208110620011b257620011b262003b8a565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062001213565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b604080516020810184905290810183905260600160405160208183030381529060405280519060200120915080806200124c9062003be8565b91505062001183565b50919392505050565b600054610100900460ff16158080156200127f5750600054600160ff909116105b806200129b5750303b1580156200129b575060005460ff166001145b6200132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200138c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606880547fffffffffffffff000000000000000000000000000000000000000000000000ff1661010063ffffffff8716027fffffffffffffff0000000000000000000000000000000000000000ffffffffff16176501000000000073ffffffffffffffffffffffffffffffffffffffff8681169190910291909117909155606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001691841691909117905562001443620022c3565b8015620014a757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b605354606854790100000000000000000000000000000000000000000000000000900463ffffffff16101562000703576200070362001f27565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b3083604051806020016200157d9062003292565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052620015c8908d908d908d908d908d9060200162003c23565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262001606929160200162003c64565b604051602081830303815290604052805190602001206040516020016200168f94939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830152603582015260550190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101209a9950505050505050505050565b60685460ff161562001711576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200171b62002366565b60685463ffffffff888116610100909204161480620017415750600263ffffffff881610155b1562001779576040517f0595ea2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060608773ffffffffffffffffffffffffffffffffffffffff8816620017df57883414620017d5576040517fb89240f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000925062001ad9565b341562001818576040517f798ee6f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8089166000908152606b602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562001908576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018b905273ffffffffffffffffffffffffffffffffffffffff8a1690639dc29fac90604401600060405180830381600087803b158015620018db57600080fd5b505af1158015620018f0573d6000803e3d6000fd5b50505050806020015194508060000151935062001ad7565b85156200191d576200191d898b8989620023db565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8b16906370a0823190602401602060405180830381865afa1580156200198b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019b1919062003c97565b9050620019d773ffffffffffffffffffffffffffffffffffffffff8b1633308e620028f9565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8c16906370a0823190602401602060405180830381865afa15801562001a45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a6b919062003c97565b905062001a79828262003cb1565b6068548c9850610100900463ffffffff169650935062001a998762002959565b62001aa48c62002a71565b62001aaf8d62002b7e565b60405160200162001ac39392919062003abd565b604051602081830303815290604052945050505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600084868e8e868860535460405162001b1b98979695949392919062003cc7565b60405180910390a162001c0f620009b2600085878f8f8789805190602001206040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b861562001c205762001c2062001f27565b5050505062001c2e60018055565b50505050505050565b606c5473ffffffffffffffffffffffffffffffffffffffff16331462001c89576040517fe2e8106b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200070362002c80565b600084815b602081101562001d6e57600163ffffffff8616821c8116900362001d0a5785816020811062001ccb5762001ccb62003b8a565b60200201358260405160200162001cec929190918252602082015260400190565b60405160208183030381529060405280519060200120915062001d59565b8186826020811062001d205762001d2062003b8a565b602002013560405160200162001d40929190918252602082015260400190565b6040516020818303038152906040528051906020012091505b8062001d658162003be8565b91505062001c98565b50821490505b949350505050565b60685460ff161562001dba576040517f2f0047fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b80600162001e216020600262003e79565b62001e2d919062003cb1565b6053541062001e68576040517fef5ccf6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060536000815462001e7b9062003be8565b9182905550905060005b602081101562001f17578082901c60011660010362001ebd57826033826020811062001eb55762001eb562003b8a565b015550505050565b6033816020811062001ed35762001ed362003b8a565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250808062001f0e9062003be8565b91505062001e85565b5062001f2262003e87565b505050565b6053546068805463ffffffff909216790100000000000000000000000000000000000000000000000000027fffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179081905573ffffffffffffffffffffffffffffffffffffffff65010000000000909104166333d6247d62001fad62001178565b6040518263ffffffff1660e01b815260040162001fcc91815260200190565b600060405180830381600087803b15801562001fe757600080fd5b505af1158015620014a7573d6000803e3d6000fd5b6200200d8b63ffffffff1662002d10565b6068546040805160208082018e90528183018d9052825180830384018152606083019384905280519101207f257b363200000000000000000000000000000000000000000000000000000000909252606481019190915260009165010000000000900473ffffffffffffffffffffffffffffffffffffffff169063257b3632906084016020604051808303816000875af1158015620020b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020d6919062003c97565b90508060000362002112576040517e2f6fad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60685463ffffffff88811661010090920416146200215c576040517f0595ea2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606854600090610100900463ffffffff166200217a5750896200217d565b508a5b620021a66200219d848c8c8c8c8c8c8c604051620008d592919062003881565b8f8f8462001c93565b620021dd576040517fe0417cec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905262001f229084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262002d75565b600054610100900460ff166200235c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162001324565b6200070362002e88565b600260015403620023d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162001324565b6002600155565b6000620023ec600482848662003eb6565b620023f79162003ee2565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601620026765760008080808080806200245a896004818d62003eb6565b81019062002469919062003f2b565b96509650965096509650965096503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614620024dd576040517f912ecce700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff861630146200252d576040517f750643af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8a851462002567576040517f03fffc4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff89811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e1691620026229190620038e6565b6000604051808303816000865af19150503d806000811462002661576040519150601f19603f3d011682016040523d82523d6000602084013e62002666565b606091505b50505050505050505050620009c9565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c0000000000000000000000000000000000000000000000000000000014620026f2576040517fe282c0ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808080808080806200270a8a6004818e62003eb6565b81019062002719919062003f86565b975097509750975097509750975097503373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146200278f576040517f912ecce700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff87163014620027df576040517f750643af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f1691620028a39190620038e6565b6000604051808303816000865af19150503d8060008114620028e2576040519150601f19603f3d011682016040523d82523d6000602084013e620028e7565b606091505b50505050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052620014a79085907f23b872dd000000000000000000000000000000000000000000000000000000009060840162002240565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f06fdde03000000000000000000000000000000000000000000000000000000001790529051606091600091829173ffffffffffffffffffffffffffffffffffffffff861691620029dd9190620038e6565b600060405180830381855afa9150503d806000811462002a1a576040519150601f19603f3d011682016040523d82523d6000602084013e62002a1f565b606091505b50915091508162002a66576040518060400160405280600781526020017f4e4f5f4e414d450000000000000000000000000000000000000000000000000081525062001d74565b62001d748162002f21565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f95d89b41000000000000000000000000000000000000000000000000000000001790529051606091600091829173ffffffffffffffffffffffffffffffffffffffff86169162002af59190620038e6565b600060405180830381855afa9150503d806000811462002b32576040519150601f19603f3d011682016040523d82523d6000602084013e62002b37565b606091505b50915091508162002a66576040518060400160405280600981526020017f4e4f5f53594d424f4c000000000000000000000000000000000000000000000081525062001d74565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce5670000000000000000000000000000000000000000000000000000000017905290516000918291829173ffffffffffffffffffffffffffffffffffffffff86169162002c019190620038e6565b600060405180830381855afa9150503d806000811462002c3e576040519150601f19603f3d011682016040523d82523d6000602084013e62002c43565b606091505b509150915081801562002c57575080516020145b62002c6457601262001d74565b8080602001905181019062001d74919062004012565b60018055565b60685460ff1662002cbd576040517f5386698100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b600881901c60008181526069602052604081208054600160ff861690811b91821892839055929091908183169003620009c9576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062002dd9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16620031119092919063ffffffff16565b80519091501562001f22578080602001905181019062002dfa919062004032565b62001f22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840162001324565b600054610100900460ff1662002c7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162001324565b6060604082511062002f435781806020019051810190620007a2919062004052565b8151602003620030d35760005b60208110801562002f9b575082818151811062002f715762002f7162003b8a565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615155b1562002fb6578062002fad8162003be8565b91505062002f50565b8060000362002ffa57505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e4700000000000000000000000000006020820152919050565b60008167ffffffffffffffff81111562003018576200301862003891565b6040519080825280601f01601f19166020018201604052801562003043576020820181803683370190505b50905060005b82811015620030cb5784818151811062003067576200306762003b8a565b602001015160f81c60f81b82828151811062003087576200308762003b8a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080620030c28162003be8565b91505062003049565b509392505050565b505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e470000000000000000000000000000602082015290565b919050565b606062001d748484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051620031489190620038e6565b60006040518083038185875af1925050503d806000811462003187576040519150601f19603f3d011682016040523d82523d6000602084013e6200318c565b606091505b50915091506200319f87838387620031aa565b979650505050505050565b60608315620032455782516000036200323d5773ffffffffffffffffffffffffffffffffffffffff85163b6200323d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162001324565b508162001d74565b62001d7483838151156200325c5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620013249190620040d2565b611b6680620040e883390190565b803563ffffffff811681146200310c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114620032d857600080fd5b50565b60008060408385031215620032ef57600080fd5b620032fa83620032a0565b915060208301356200330c81620032b5565b809150509250929050565b8015158114620032d857600080fd5b60008083601f8401126200333957600080fd5b50813567ffffffffffffffff8111156200335257600080fd5b6020830191508360208285010111156200336b57600080fd5b9250929050565b6000806000806000608086880312156200338b57600080fd5b6200339686620032a0565b94506020860135620033a881620032b5565b93506040860135620033ba8162003317565b9250606086013567ffffffffffffffff811115620033d757600080fd5b620033e58882890162003326565b969995985093965092949392505050565b806104008101831015620007a257600080fd5b60008060008060008060008060008060006105208c8e0312156200342c57600080fd5b620034388d8d620033f6565b9a50620034496104008d01620032a0565b99506104208c013598506104408c013597506200346a6104608d01620032a0565b96506104808c01356200347d81620032b5565b95506200348e6104a08d01620032a0565b94506104c08c0135620034a181620032b5565b93506104e08c013592506105008c013567ffffffffffffffff811115620034c757600080fd5b620034d58e828f0162003326565b915080935050809150509295989b509295989b9093969950565b6000602082840312156200350257600080fd5b81356200350f81620032b5565b9392505050565b60ff81168114620032d857600080fd5b600080600080600080600060e0888a0312156200354257600080fd5b87356200354f8162003516565b96506200355f60208901620032a0565b955060408801356200357181620032b5565b94506200358160608901620032a0565b935060808801356200359381620032b5565b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215620035c657600080fd5b620035d184620032a0565b92506020840135620035e381620032b5565b91506040840135620035f581620032b5565b809150509250925092565b6000602082840312156200361357600080fd5b5035919050565b600080600080600080600060a0888a0312156200363657600080fd5b6200364188620032a0565b965060208801356200365381620032b5565b9550604088013567ffffffffffffffff808211156200367157600080fd5b6200367f8b838c0162003326565b909750955060608a01359150808211156200369957600080fd5b50620036a88a828b0162003326565b9094509250506080880135620036be8162003516565b8091505092959891949750929550565b600080600080600080600060c0888a031215620036ea57600080fd5b620036f588620032a0565b965060208801356200370781620032b5565b95506040880135945060608801356200372081620032b5565b93506080880135620037328162003317565b925060a088013567ffffffffffffffff8111156200374f57600080fd5b6200375d8a828b0162003326565b989b979a50959850939692959293505050565b60008060008061046085870312156200378857600080fd5b843593506200379b8660208701620033f6565b9250620037ac6104208601620032a0565b939692955092936104400135925050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061010060ff8c16835263ffffffff808c16602085015273ffffffffffffffffffffffffffffffffffffffff808c166040860152818b166060860152808a166080860152508760a08501528160c0850152620038678285018789620037bd565b925080851660e085015250509a9950505050505050505050565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015620038dd578181015183820152602001620038c3565b50506000910152565b60008251620038fa818460208701620038c0565b9190910192915050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156200394e576200394e62003891565b604052919050565b600067ffffffffffffffff82111562003973576200397362003891565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112620039b157600080fd5b8135620039c8620039c28262003956565b62003904565b818152846020838601011115620039de57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121562003a1157600080fd5b833567ffffffffffffffff8082111562003a2a57600080fd5b62003a38878388016200399f565b9450602086013591508082111562003a4f57600080fd5b5062003a5e868287016200399f565b9250506040840135620035f58162003516565b6000815180845262003a8b816020860160208601620038c0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60608152600062003ad2606083018662003a71565b828103602084015262003ae6818662003a71565b91505060ff83166040830152949350505050565b63ffffffff86168152600073ffffffffffffffffffffffffffffffffffffffff8087166020840152808616604084015250608060608301526200319f608083018486620037bd565b73ffffffffffffffffffffffffffffffffffffffff8516815263ffffffff8416602082015260606040820152600062003b80606083018486620037bd565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362003c1c5762003c1c62003bb9565b5060010190565b60608152600062003c39606083018789620037bd565b828103602084015262003c4e818688620037bd565b91505060ff831660408301529695505050505050565b6000835162003c78818460208801620038c0565b83519083019062003c8e818360208801620038c0565b01949350505050565b60006020828403121562003caa57600080fd5b5051919050565b81810381811115620007a257620007a262003bb9565b600061010060ff8b16835263ffffffff808b16602085015273ffffffffffffffffffffffffffffffffffffffff808b166040860152818a1660608601528089166080860152508660a08501528160c085015262003d278285018762003a71565b925080851660e085015250509998505050505050505050565b600181815b8085111562003d9f57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d835762003d8362003bb9565b8085161562003d9157918102915b93841c939080029062003d45565b509250929050565b60008262003db857506001620007a2565b8162003dc757506000620007a2565b816001811462003de0576002811462003deb5762003e0b565b6001915050620007a2565b60ff84111562003dff5762003dff62003bb9565b50506001821b620007a2565b5060208310610133831016604e8410600b841016171562003e30575081810a620007a2565b62003e3c838362003d40565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003e715762003e7162003bb9565b029392505050565b60006200350f838362003da7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000808585111562003ec757600080fd5b8386111562003ed557600080fd5b5050820193919092039150565b7fffffffff00000000000000000000000000000000000000000000000000000000813581811691600485101562003f235780818660040360031b1b83161692505b505092915050565b600080600080600080600060e0888a03121562003f4757600080fd5b873562003f5481620032b5565b9650602088013562003f6681620032b5565b955060408801359450606088013593506080880135620035938162003516565b600080600080600080600080610100898b03121562003fa457600080fd5b883562003fb181620032b5565b9750602089013562003fc381620032b5565b96506040890135955060608901359450608089013562003fe38162003317565b935060a089013562003ff58162003516565b979a969950949793969295929450505060c08201359160e0013590565b6000602082840312156200402557600080fd5b81516200350f8162003516565b6000602082840312156200404557600080fd5b81516200350f8162003317565b6000602082840312156200406557600080fd5b815167ffffffffffffffff8111156200407d57600080fd5b8201601f810184136200408f57600080fd5b8051620040a0620039c28262003956565b818152856020838501011115620040b657600080fd5b620040c9826020830160208601620038c0565b95945050505050565b6020815260006200350f602083018462003a7156fe6101006040523480156200001257600080fd5b5060405162001b6638038062001b6683398101604081905262000035916200028d565b82826003620000458382620003a1565b506004620000548282620003a1565b50503360c0525060ff811660e052466080819052620000739062000080565b60a052506200046d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000ad6200012e565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6060600380546200013f9062000312565b80601f01602080910402602001604051908101604052809291908181526020018280546200016d9062000312565b8015620001be5780601f106200019257610100808354040283529160200191620001be565b820191906000526020600020905b815481529060010190602001808311620001a057829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001f057600080fd5b81516001600160401b03808211156200020d576200020d620001c8565b604051601f8301601f19908116603f01168101908282118183101715620002385762000238620001c8565b816040528381526020925086838588010111156200025557600080fd5b600091505b838210156200027957858201830151818301840152908201906200025a565b600093810190920192909252949350505050565b600080600060608486031215620002a357600080fd5b83516001600160401b0380821115620002bb57600080fd5b620002c987838801620001de565b94506020860151915080821115620002e057600080fd5b50620002ef86828701620001de565b925050604084015160ff811681146200030757600080fd5b809150509250925092565b600181811c908216806200032757607f821691505b6020821081036200034857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200039c57600081815260208120601f850160051c81016020861015620003775750805b601f850160051c820191505b81811015620003985782815560010162000383565b5050505b505050565b81516001600160401b03811115620003bd57620003bd620001c8565b620003d581620003ce845462000312565b846200034e565b602080601f8311600181146200040d5760008415620003f45750858301515b600019600386901b1c1916600185901b17855562000398565b600085815260208120601f198616915b828110156200043e578886015182559484019460019091019084016200041d565b50858210156200045d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e0516116aa620004bc6000396000610237015260008181610307015281816105c001526106a70152600061053a015260008181610379015261050401526116aa6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf1461039b578063dd62ed3e146103ae578063ffa1ad74146103f457600080fd5b8063a457c2d71461034e578063a9059cbb14610361578063cd0d00961461037457600080fd5b806395d89b41116100bd57806395d89b41146102e75780639dc29fac146102ef578063a3c573eb1461030257600080fd5b806370a08231146102915780637ecebe00146102c757600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610261578063395093511461026957806340c10f191461027c57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610430565b60405161019191906113e4565b60405180910390f35b6101ad6101a8366004611479565b6104c2565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad6102043660046114a3565b6104dc565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b6101c1610500565b6101ad610277366004611479565b61055c565b61028f61028a366004611479565b6105a8565b005b6101c161029f3660046114df565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d53660046114df565b60056020526000908152604090205481565b610184610680565b61028f6102fd366004611479565b61068f565b6103297f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad61035c366004611479565b61075e565b6101ad61036f366004611479565b61082f565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b61028f6103a9366004611501565b61083d565b6101c16103bc366004611574565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043f906115a7565b80601f016020809104026020016040519081016040528092919081815260200182805461046b906115a7565b80156104b85780601f1061048d576101008083540402835291602001916104b8565b820191906000526020600020905b81548152906001019060200180831161049b57829003601f168201915b5050505050905090565b6000336104d0818585610b73565b60019150505b92915050565b6000336104ea858285610d27565b6104f5858585610dfe565b506001949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610537576105324661106d565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104d090829086906105a3908790611629565b610b73565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084015b60405180910390fd5b61067c8282611135565b5050565b60606004805461043f906115a7565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d427269646765000000000000000000000000000000006064820152608401610669565b61067c8282611228565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610669565b6104f58286868403610b73565b6000336104d0818585610dfe565b834211156108cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866109268361163c565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610991610500565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015610a55573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610ad057508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610b5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610669565b610b678a8a8a610b73565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff8216610cb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610df85781811015610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610669565b610df88484848403610b73565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610ea1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff8216610f44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610ffa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610df8565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611098610430565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff82166111b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610669565b80600260008282546111c49190611629565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166112cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610d1a565b600060208083528351808285015260005b81811015611411578581018301518582016040015282016113f5565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461147457600080fd5b919050565b6000806040838503121561148c57600080fd5b61149583611450565b946020939093013593505050565b6000806000606084860312156114b857600080fd5b6114c184611450565b92506114cf60208501611450565b9150604084013590509250925092565b6000602082840312156114f157600080fd5b6114fa82611450565b9392505050565b600080600080600080600060e0888a03121561151c57600080fd5b61152588611450565b965061153360208901611450565b95506040880135945060608801359350608088013560ff8116811461155757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561158757600080fd5b61159083611450565b915061159e60208401611450565b90509250929050565b600181811c908216806115bb57607f821691505b6020821081036115f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156104d6576104d66115fa565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361166d5761166d6115fa565b506001019056fea26469706673582212208d88fee561cff7120d381c345cfc534cef8229a272dc5809d4bbb685ad67141164736f6c63430008110033a2646970667358221220d9b3ca7b13ec80ac58634ddf0ecebe71e209a71f532614949b9e720413f50c8364736f6c63430008110033" - }, - { - "contractName": "PolygonZkEVMBridge proxy", - "balance": "200000000000000000000000000", - "nonce": "1", - "address": "0xff0EE8ea08cEf5cb4322777F5CC3E8A584B8A4A0", - "bytecode": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461088b565b610135565b61006b6100a33660046108a6565b61017f565b3480156100b457600080fd5b506100bd6101f3565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461088b565b610231565b34801561011257600080fd5b506100bd61025e565b6101236102d4565b61013361012e6103ab565b6103b5565b565b61013d6103d9565b73ffffffffffffffffffffffffffffffffffffffff1633036101775761017481604051806020016040528060008152506000610419565b50565b61017461011b565b6101876103d9565b73ffffffffffffffffffffffffffffffffffffffff1633036101eb576101e68383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610419915050565b505050565b6101e661011b565b60006101fd6103d9565b73ffffffffffffffffffffffffffffffffffffffff163303610226576102216103ab565b905090565b61022e61011b565b90565b6102396103d9565b73ffffffffffffffffffffffffffffffffffffffff1633036101775761017481610444565b60006102686103d9565b73ffffffffffffffffffffffffffffffffffffffff163303610226576102216103d9565b60606102b183836040518060600160405280602781526020016109bb602791396104a5565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6102dc6103d9565b73ffffffffffffffffffffffffffffffffffffffff163303610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b600061022161052a565b3660008037600080366000845af43d6000803e8080156103d4573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b61042283610552565b60008251118061042f5750805b156101e65761043e838361028c565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61046d6103d9565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a16101748161059f565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516104cf919061094d565b600060405180830381855af49150503d806000811461050a576040519150601f19603f3d011682016040523d82523d6000602084013e61050f565b606091505b5091509150610520868383876106ab565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6103fd565b61055b81610753565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff8116610642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103a2565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6060831561074157825160000361073a5773ffffffffffffffffffffffffffffffffffffffff85163b61073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103a2565b508161074b565b61074b838361081e565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81163b6107f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103a2565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610665565b81511561082e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103a29190610969565b803573ffffffffffffffffffffffffffffffffffffffff8116811461088657600080fd5b919050565b60006020828403121561089d57600080fd5b6102b182610862565b6000806000604084860312156108bb57600080fd5b6108c484610862565b9250602084013567ffffffffffffffff808211156108e157600080fd5b818601915086601f8301126108f557600080fd5b81358181111561090457600080fd5b87602082850101111561091657600080fd5b6020830194508093505050509250925092565b60005b8381101561094457818101518382015260200161092c565b50506000910152565b6000825161095f818460208701610929565b9190910192915050565b6020815260008251806020840152610988816040850160208701610929565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a1af0d6cb4f1e31496a4c5c1448913bce4bd6ad3a39e47c6f7190c114d6f9bf464736f6c63430008110033", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000068": "0x00000000000000a40d5f56745a118d0906a34e69aec8c0db1cb8fa0000000100", - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x000000000000000000000000f065bae7c019ff5627e09ed48d4eea317d211956", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000f23919bb44bca81aeab4586be71ee3fd4e99b951" - } - }, - { - "contractName": "PolygonZkEVMGlobalExitRootL2 implementation", - "balance": "0", - "nonce": "1", - "address": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "bytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610162565b60006020819052908152604090205481565b6100a061009b366004610162565b6100ee565b005b6100c97f000000000000000000000000ff0ee8ea08cef5cb4322777f5cc3e8a584b8a4a081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610064565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ff0ee8ea08cef5cb4322777f5cc3e8a584b8a4a0161461015d576040517fb49365dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600155565b60006020828403121561017457600080fd5b503591905056fea2646970667358221220a187fc278346c1b61c449ea3641002b6eac2bda3351a122a12c35099f933696864736f6c63430008110033" - }, - { - "contractName": "PolygonZkEVMGlobalExitRootL2 proxy", - "balance": "0", - "nonce": "1", - "address": "0xa40d5f56745a118d0906a34e69aec8c0db1cb8fa", - "bytecode": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ca565b610118565b61005b6100933660046106e5565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ca565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610292565b610116610111610331565b61033b565b565b61012061035f565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610392565b50565b6101546100fe565b61016761035f565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610392915050565b505050565b6101c36100fe565b60006101da61035f565b6001600160a01b0316336001600160a01b03161415610200576101fb610331565b905090565b6102086100fe565b90565b61021361035f565b6001600160a01b0316336001600160a01b0316141561015757610154816103f1565b600061023f61035f565b6001600160a01b0316336001600160a01b03161415610200576101fb61035f565b606061028583836040518060600160405280602781526020016107e460279139610445565b9392505050565b3b151590565b61029a61035f565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610519565b3660008037600080366000845af43d6000803e80801561035a573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039b83610541565b6040516001600160a01b038416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a26000825111806103dc5750805b156101c3576103eb8383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61041a61035f565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816105e9565b6060833b6104a45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610328565b600080856001600160a01b0316856040516104bf9190610794565b600060405180830381855af49150503d80600081146104fa576040519150601f19603f3d011682016040523d82523d6000602084013e6104ff565b606091505b509150915061050f828286610675565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610383565b803b6105a55760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610328565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b03811661064e5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610328565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036105c8565b60608315610684575081610285565b8251156106945782518084602001fd5b8160405162461bcd60e51b815260040161032891906107b0565b80356001600160a01b03811681146106c557600080fd5b919050565b6000602082840312156106dc57600080fd5b610285826106ae565b6000806000604084860312156106fa57600080fd5b610703846106ae565b9250602084013567ffffffffffffffff8082111561072057600080fd5b818601915086601f83011261073457600080fd5b81358181111561074357600080fd5b87602082850101111561075557600080fd5b6020830194508093505050509250925092565b60005b8381101561078357818101518382015260200161076b565b838111156103eb5750506000910152565b600082516107a6818460208701610768565b9190910192915050565b60208152600082518060208401526107cf816040850160208701610768565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204675187caf3a43285d9a2c1844a981e977bd52a85ff073e7fc649f73847d70a464736f6c63430008090033", - "storage": { - "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x000000000000000000000000f065bae7c019ff5627e09ed48d4eea317d211956", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" - } - }, - { - "contractName": "PolygonZkEVMTimelock", - "balance": "0", - "nonce": "1", - "address": "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "bytecode": "0x6080604052600436106101c65760003560e01c806364d62353116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610661578063e38335e514610681578063f23a6e6114610694578063f27a0c92146106d957600080fd5b8063b1c5f427146105af578063bc197c81146105cf578063c4d252f514610614578063d45c44351461063457600080fd5b80638f61f4f5116100d15780638f61f4f5146104e157806391d1485414610515578063a217fddf14610566578063b08e51c01461057b57600080fd5b806364d62353146104815780638065657f146104a15780638f2a0bb0146104c157600080fd5b8063248a9ca31161016457806331d507501161013e57806331d50750146103c857806336568abe146103e85780633a6aae7214610408578063584b153e1461046157600080fd5b8063248a9ca3146103475780632ab0f529146103775780632f2ff15d146103a857600080fd5b80630d3cf6fc116101a05780630d3cf6fc1461026b578063134008d31461029f57806313bc9f20146102b2578063150b7a02146102d257600080fd5b806301d5062a146101d257806301ffc9a7146101f457806307bd02651461022957600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101f26101ed366004611c52565b6106ee565b005b34801561020057600080fd5b5061021461020f366004611cc7565b610783565b60405190151581526020015b60405180910390f35b34801561023557600080fd5b5061025d7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610220565b34801561027757600080fd5b5061025d7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101f26102ad366004611d09565b6107df565b3480156102be57600080fd5b506102146102cd366004611d75565b6108d7565b3480156102de57600080fd5b506103166102ed366004611e9a565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610220565b34801561035357600080fd5b5061025d610362366004611d75565b60009081526020819052604090206001015490565b34801561038357600080fd5b50610214610392366004611d75565b6000908152600160208190526040909120541490565b3480156103b457600080fd5b506101f26103c3366004611f02565b6108fd565b3480156103d457600080fd5b506102146103e3366004611d75565b610927565b3480156103f457600080fd5b506101f2610403366004611f02565b610940565b34801561041457600080fd5b5061043c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610220565b34801561046d57600080fd5b5061021461047c366004611d75565b6109f8565b34801561048d57600080fd5b506101f261049c366004611d75565b610a0e565b3480156104ad57600080fd5b5061025d6104bc366004611d09565b610ade565b3480156104cd57600080fd5b506101f26104dc366004611f73565b610b1d565b3480156104ed57600080fd5b5061025d7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561052157600080fd5b50610214610530366004611f02565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561057257600080fd5b5061025d600081565b34801561058757600080fd5b5061025d7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156105bb57600080fd5b5061025d6105ca366004612025565b610d4f565b3480156105db57600080fd5b506103166105ea36600461214e565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b34801561062057600080fd5b506101f261062f366004611d75565b610d94565b34801561064057600080fd5b5061025d61064f366004611d75565b60009081526001602052604090205490565b34801561066d57600080fd5b506101f261067c366004611f02565b610e8f565b6101f261068f366004612025565b610eb4565b3480156106a057600080fd5b506103166106af3660046121f8565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3480156106e557600080fd5b5061025d611161565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161071881611244565b6000610728898989898989610ade565b90506107348184611251565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610770969594939291906122a6565b60405180910390a3505050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e00000000000000000000000000000000000000000000000000000000014806107d957506107d98261139e565b92915050565b600080527fdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d70696020527f5ba6852781629bcdcd4bdaa6de76d786f1c64b16acdac474e55bebc0ea157951547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff1661085c5761085c8133611435565b600061086c888888888888610ade565b905061087881856114ed565b6108848888888861162a565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516108bc94939291906122f1565b60405180910390a36108cd8161172e565b5050505050505050565b6000818152600160205260408120546001811180156108f65750428111155b9392505050565b60008281526020819052604090206001015461091881611244565b61092283836117d7565b505050565b60008181526001602052604081205481905b1192915050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6109f482826118c7565b5050565b6000818152600160208190526040822054610939565b333014610a9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201527f62652074696d656c6f636b00000000000000000000000000000000000000000060648201526084016109e1565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b6000868686868686604051602001610afb969594939291906122a6565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610b4781611244565b888714610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f746368000000000000000000000000000000000000000000000000000000000060648201526084016109e1565b888514610c65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f746368000000000000000000000000000000000000000000000000000000000060648201526084016109e1565b6000610c778b8b8b8b8b8b8b8b610d4f565b9050610c838184611251565b60005b8a811015610d415780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610cc357610cc3612331565b9050602002016020810190610cd89190612360565b8d8d86818110610cea57610cea612331565b905060200201358c8c87818110610d0357610d03612331565b9050602002810190610d15919061237b565b8c8b604051610d29969594939291906122a6565b60405180910390a3610d3a8161240f565b9050610c86565b505050505050505050505050565b60008888888888888888604051602001610d709897969594939291906124f7565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610dbe81611244565b610dc7826109f8565b610e53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20636160448201527f6e6e6f742062652063616e63656c6c656400000000000000000000000000000060648201526084016109e1565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610eaa81611244565b61092283836118c7565b600080527fdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d70696020527f5ba6852781629bcdcd4bdaa6de76d786f1c64b16acdac474e55bebc0ea157951547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff16610f3157610f318133611435565b878614610fc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f746368000000000000000000000000000000000000000000000000000000000060648201526084016109e1565b87841461104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f746368000000000000000000000000000000000000000000000000000000000060648201526084016109e1565b60006110618a8a8a8a8a8a8a8a610d4f565b905061106d81856114ed565b60005b8981101561114b5760008b8b8381811061108c5761108c612331565b90506020020160208101906110a19190612360565b905060008a8a848181106110b7576110b7612331565b9050602002013590503660008a8a868181106110d5576110d5612331565b90506020028101906110e7919061237b565b915091506110f78484848461162a565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112e94939291906122f1565b60405180910390a350505050806111449061240f565b9050611070565b506111558161172e565b50505050505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161580159061123257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166315064c966040518163ffffffff1660e01b8152600401602060405180830381865afa15801561120e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123291906125be565b1561123d5750600090565b5060025490565b61124e8133611435565b50565b61125a82610927565b156112e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201527f7265616479207363686564756c6564000000000000000000000000000000000060648201526084016109e1565b6112ef611161565b81101561137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e7460448201527f2064656c6179000000000000000000000000000000000000000000000000000060648201526084016109e1565b61138881426125e0565b6000928352600160205260409092209190915550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107d957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107d9565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109f4576114738161197e565b61147e83602061199d565b60405160200161148f929190612617565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526109e191600401612698565b6114f6826108d7565b611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360448201527f206e6f742072656164790000000000000000000000000000000000000000000060648201526084016109e1565b80158061159e5750600081815260016020819052604090912054145b6109f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e67206465706560448201527f6e64656e6379000000000000000000000000000000000000000000000000000060648201526084016109e1565b60008473ffffffffffffffffffffffffffffffffffffffff168484846040516116549291906126e9565b60006040518083038185875af1925050503d8060008114611691576040519150601f19603f3d011682016040523d82523d6000602084013e611696565b606091505b5050905080611727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e67207460448201527f72616e73616374696f6e2072657665727465640000000000000000000000000060648201526084016109e1565b5050505050565b611737816108d7565b6117c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360448201527f206e6f742072656164790000000000000000000000000000000000000000000060648201526084016109e1565b600090815260016020819052604090912055565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109f45760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118693390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156109f45760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606107d973ffffffffffffffffffffffffffffffffffffffff831660145b606060006119ac8360026126f9565b6119b79060026125e0565b67ffffffffffffffff8111156119cf576119cf611d8e565b6040519080825280601f01601f1916602001820160405280156119f9576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611a3057611a30612331565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611a9357611a93612331565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611acf8460026126f9565b611ada9060016125e0565b90505b6001811115611b77577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611b1b57611b1b612331565b1a60f81b828281518110611b3157611b31612331565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611b7081612710565b9050611add565b5083156108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109e1565b803573ffffffffffffffffffffffffffffffffffffffff81168114611c0457600080fd5b919050565b60008083601f840112611c1b57600080fd5b50813567ffffffffffffffff811115611c3357600080fd5b602083019150836020828501011115611c4b57600080fd5b9250929050565b600080600080600080600060c0888a031215611c6d57600080fd5b611c7688611be0565b965060208801359550604088013567ffffffffffffffff811115611c9957600080fd5b611ca58a828b01611c09565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611cd957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108f657600080fd5b60008060008060008060a08789031215611d2257600080fd5b611d2b87611be0565b955060208701359450604087013567ffffffffffffffff811115611d4e57600080fd5b611d5a89828a01611c09565b979a9699509760608101359660809091013595509350505050565b600060208284031215611d8757600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e0457611e04611d8e565b604052919050565b600082601f830112611e1d57600080fd5b813567ffffffffffffffff811115611e3757611e37611d8e565b611e6860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611dbd565b818152846020838601011115611e7d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611eb057600080fd5b611eb985611be0565b9350611ec760208601611be0565b925060408501359150606085013567ffffffffffffffff811115611eea57600080fd5b611ef687828801611e0c565b91505092959194509250565b60008060408385031215611f1557600080fd5b82359150611f2560208401611be0565b90509250929050565b60008083601f840112611f4057600080fd5b50813567ffffffffffffffff811115611f5857600080fd5b6020830191508360208260051b8501011115611c4b57600080fd5b600080600080600080600080600060c08a8c031215611f9157600080fd5b893567ffffffffffffffff80821115611fa957600080fd5b611fb58d838e01611f2e565b909b50995060208c0135915080821115611fce57600080fd5b611fda8d838e01611f2e565b909950975060408c0135915080821115611ff357600080fd5b506120008c828d01611f2e565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561204157600080fd5b883567ffffffffffffffff8082111561205957600080fd5b6120658c838d01611f2e565b909a50985060208b013591508082111561207e57600080fd5b61208a8c838d01611f2e565b909850965060408b01359150808211156120a357600080fd5b506120b08b828c01611f2e565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126120df57600080fd5b8135602067ffffffffffffffff8211156120fb576120fb611d8e565b8160051b61210a828201611dbd565b928352848101820192828101908785111561212457600080fd5b83870192505b848310156121435782358252918301919083019061212a565b979650505050505050565b600080600080600060a0868803121561216657600080fd5b61216f86611be0565b945061217d60208701611be0565b9350604086013567ffffffffffffffff8082111561219a57600080fd5b6121a689838a016120ce565b945060608801359150808211156121bc57600080fd5b6121c889838a016120ce565b935060808801359150808211156121de57600080fd5b506121eb88828901611e0c565b9150509295509295909350565b600080600080600060a0868803121561221057600080fd5b61221986611be0565b945061222760208701611be0565b93506040860135925060608601359150608086013567ffffffffffffffff81111561225157600080fd5b6121eb88828901611e0c565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015260a0604082015260006122dc60a08301868861225d565b60608301949094525060800152949350505050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061232760608301848661225d565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561237257600080fd5b6108f682611be0565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126123b057600080fd5b83018035915067ffffffffffffffff8211156123cb57600080fd5b602001915036819003821315611c4b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612440576124406123e0565b5060010190565b81835260006020808501808196508560051b810191508460005b878110156124ea57828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18836030181126124a057600080fd5b8701858101903567ffffffffffffffff8111156124bc57600080fd5b8036038213156124cb57600080fd5b6124d686828461225d565b9a87019a9550505090840190600101612461565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156125455773ffffffffffffffffffffffffffffffffffffffff61253084611be0565b1682526020928301929091019060010161250a565b5083810360208501528881527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89111561257e57600080fd5b8860051b9150818a602083013701828103602090810160408501526125a69082018789612447565b60608401959095525050608001529695505050505050565b6000602082840312156125d057600080fd5b815180151581146108f657600080fd5b808201808211156107d9576107d96123e0565b60005b8381101561260e5781810151838201526020016125f6565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161264f8160178501602088016125f3565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161268c8160288401602088016125f3565b01602801949350505050565b60208152600082518060208401526126b78160408501602087016125f3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b8183823760009101908152919050565b80820281158282048414176107d9576107d96123e0565b60008161271f5761271f6123e0565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea26469706673582212206416c4e08f97752b4bb06159524dac058d3dccd8775e57ef1b01505751ebf7af64736f6c63430008110033", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000002": "0x000000000000000000000000000000000000000000000000000000000000000a", - "0xaedcc9e7897c0d335bdc5d92fe3a8b4f23727fe558cd1c19f332b28716a30559": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0xf5e61edb9c9cc6bfbae4463e9a2b1dd6ac3b44ddef38f18016e56ba0363910d9": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x64494413541ff93b31aa309254e3fed72a7456e9845988b915b4c7a7ceba8814": "0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", - "0x60b9d94c75b7b3f721925089391e4644cd890cb5e6466f9596dfbd2c54e0b280": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x3412d5605ac6cd444957cedb533e5dacad6378b4bc819ebe3652188a665066d6": "0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", - "0x4b63b79f1e338a49559dcd3193ac9eecc50d0f275d24e97cc8c319e5a31a8bd0": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0xdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d706a": "0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", - "0x800d5dfe4bba53eedee06cd4546a27da8de00f12db83f56062976d4493fda899": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0xc3ad33e20b0c56a223ad5104fff154aa010f8715b9c981fd38fdc60a4d1a52fc": "0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5" - } - }, - { - "accountName": "keyless Deployer", - "balance": "0", - "nonce": "1", - "address": "0x20E7077d25fe79C5F6c2D3ae4905E96aA7C89c13" - }, - { - "accountName": "deployer", - "balance": "100000000000000000000000", - "nonce": "8", - "address": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" - } + { + "contractName": "PolygonZkEVMDeployer", + "balance": "0", + "nonce": "4", + "address": "0x51dbd54FCCb6b3A07738fd3E156D588e71f79973", + "bytecode": "0x6080604052600436106100705760003560e01c8063715018a61161004e578063715018a6146100e65780638da5cb5b146100fb578063e11ae6cb14610126578063f2fde38b1461013957600080fd5b80632b79805a146100755780634a94d4871461008a5780636d07dbf81461009d575b600080fd5b610088610083366004610927565b610159565b005b6100886100983660046109c7565b6101cb565b3480156100a957600080fd5b506100bd6100b8366004610a1e565b61020d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b50610088610220565b34801561010757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100bd565b610088610134366004610a40565b610234565b34801561014557600080fd5b50610088610154366004610a90565b61029b565b610161610357565b600061016e8585856103d8565b905061017a8183610537565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527fba82f25fed02cd2a23d9f5d11c2ef588d22af5437cbf23bfe61d87257c480e4c9060200160405180910390a15050505050565b6101d3610357565b6101de83838361057b565b506040517f25adb19089b6a549831a273acdf7908cff8b7ee5f551f8d1d37996cf01c5df5b90600090a1505050565b600061021983836105a9565b9392505050565b610228610357565b61023260006105b6565b565b61023c610357565b60006102498484846103d8565b60405173ffffffffffffffffffffffffffffffffffffffff821681529091507fba82f25fed02cd2a23d9f5d11c2ef588d22af5437cbf23bfe61d87257c480e4c9060200160405180910390a150505050565b6102a3610357565b73ffffffffffffffffffffffffffffffffffffffff811661034b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610354816105b6565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610232576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610342565b600083471015610444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401610342565b81516000036104af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401610342565b8282516020840186f5905073ffffffffffffffffffffffffffffffffffffffff8116610219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401610342565b6060610219838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564000081525061062b565b60606105a1848484604051806060016040528060298152602001610b3d6029913961062b565b949350505050565b6000610219838330610744565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060824710156106bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610342565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106e69190610acf565b60006040518083038185875af1925050503d8060008114610723576040519150601f19603f3d011682016040523d82523d6000602084013e610728565b606091505b50915091506107398783838761076e565b979650505050505050565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b606083156108045782516000036107fd5773ffffffffffffffffffffffffffffffffffffffff85163b6107fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610342565b50816105a1565b6105a183838151156108195781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103429190610aeb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261088d57600080fd5b813567ffffffffffffffff808211156108a8576108a861084d565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156108ee576108ee61084d565b8160405283815286602085880101111561090757600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561093d57600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561096357600080fd5b61096f8883890161087c565b9350606087013591508082111561098557600080fd5b506109928782880161087c565b91505092959194509250565b803573ffffffffffffffffffffffffffffffffffffffff811681146109c257600080fd5b919050565b6000806000606084860312156109dc57600080fd5b6109e58461099e565b9250602084013567ffffffffffffffff811115610a0157600080fd5b610a0d8682870161087c565b925050604084013590509250925092565b60008060408385031215610a3157600080fd5b50508035926020909101359150565b600080600060608486031215610a5557600080fd5b8335925060208401359150604084013567ffffffffffffffff811115610a7a57600080fd5b610a868682870161087c565b9150509250925092565b600060208284031215610aa257600080fd5b6102198261099e565b60005b83811015610ac6578181015183820152602001610aae565b50506000910152565b60008251610ae1818460208701610aab565b9190910192915050565b6020815260008251806020840152610b0a816040850160208701610aab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220964619cee0e0baf94c6f8763f013be157da5d54c89e5cff4a8caf4266e13f13a64736f6c63430008140033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } + }, + { + "contractName": "ProxyAdmin", + "balance": "0", + "nonce": "1", + "address": "0xe34Fe58DDa5b8c6D547E4857E987633aa86a5e90", + "bytecode": "0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461012b57806399a88ec41461013e578063f2fde38b1461015e578063f3b7dead1461017e57600080fd5b8063204e1c7a14610080578063715018a6146100c95780637eff275e146100e05780638da5cb5b14610100575b600080fd5b34801561008c57600080fd5b506100a061009b366004610608565b61019e565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d557600080fd5b506100de610255565b005b3480156100ec57600080fd5b506100de6100fb36600461062c565b610269565b34801561010c57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100a0565b6100de610139366004610694565b6102f7565b34801561014a57600080fd5b506100de61015936600461062c565b61038c565b34801561016a57600080fd5b506100de610179366004610608565b6103e8565b34801561018a57600080fd5b506100a0610199366004610608565b6104a4565b60008060008373ffffffffffffffffffffffffffffffffffffffff166040516101ea907f5c60da1b00000000000000000000000000000000000000000000000000000000815260040190565b600060405180830381855afa9150503d8060008114610225576040519150601f19603f3d011682016040523d82523d6000602084013e61022a565b606091505b50915091508161023957600080fd5b8080602001905181019061024d9190610788565b949350505050565b61025d6104f0565b6102676000610571565b565b6102716104f0565b6040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638f283970906024015b600060405180830381600087803b1580156102db57600080fd5b505af11580156102ef573d6000803e3d6000fd5b505050505050565b6102ff6104f0565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef28690349061035590869086906004016107a5565b6000604051808303818588803b15801561036e57600080fd5b505af1158015610382573d6000803e3d6000fd5b5050505050505050565b6103946104f0565b6040517f3659cfe600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633659cfe6906024016102c1565b6103f06104f0565b73ffffffffffffffffffffffffffffffffffffffff8116610498576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6104a181610571565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff166040516101ea907ff851a44000000000000000000000000000000000000000000000000000000000815260040190565b60005473ffffffffffffffffffffffffffffffffffffffff163314610267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161048f565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a157600080fd5b60006020828403121561061a57600080fd5b8135610625816105e6565b9392505050565b6000806040838503121561063f57600080fd5b823561064a816105e6565b9150602083013561065a816105e6565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156106a957600080fd5b83356106b4816105e6565b925060208401356106c4816105e6565b9150604084013567ffffffffffffffff808211156106e157600080fd5b818601915086601f8301126106f557600080fd5b81358181111561070757610707610665565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561074d5761074d610665565b8160405282815289602084870101111561076657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60006020828403121561079a57600080fd5b8151610625816105e6565b73ffffffffffffffffffffffffffffffffffffffff8316815260006020604081840152835180604085015260005b818110156107ef578581018301518582016060015282016107d3565b5060006060828601015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010192505050939250505056fea2646970667358221220c9867ffac53151bdb1305d8f5e3e883cd83e5270c7ec09cdc24e837b2e65239064736f6c63430008140033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f" + } + }, + { + "contractName": "PolygonZkEVMBridge implementation", + "balance": "0", + "nonce": "1", + "address": "0x791356dCC8527B9AcEE923ab542DD483E3E05316", + "bytecode": "0x6080604052600436106101a35760003560e01c806383f24403116100e2578063ccaa2d1111610085578063ccaa2d1114610511578063cd58657914610531578063d02103ca14610544578063dbc169761461056b578063ee25560b14610580578063f5efcd79146105ad578063f811bff7146105cd578063fb570834146105ed57600080fd5b806383f244031461040b5780638ed7e3f21461042b578063aaa13cc21461044b578063b8b284d01461046b578063bab161bf1461048b578063be5831c7146104ad578063c00f14ab146104d1578063cc461632146104f157600080fd5b80633cbc795b1161014a5780633cbc795b146102fd5780633e197043146103365780634b2f336d146103565780635ca1e165146103765780637843298b1461038b57806379e2cf97146103ab57806381b1c174146103c057806383c43a55146103f657600080fd5b806315064c96146101a85780632072f6c5146101d757806322e95f2c146101ee578063240ff3781461021b57806327aef4e81461022e5780632dfdf0b514610250578063318aee3d146102745780633c351e10146102dd575b600080fd5b3480156101b457600080fd5b506068546101c29060ff1681565b60405190151581526020015b60405180910390f35b3480156101e357600080fd5b506101ec61060d565b005b3480156101fa57600080fd5b5061020e610209366004612b7e565b610642565b6040516101ce9190612bb5565b6101ec610229366004612c1f565b610693565b34801561023a57600080fd5b50610243610703565b6040516101ce9190612ce8565b34801561025c57600080fd5b5061026660535481565b6040519081526020016101ce565b34801561028057600080fd5b506102b961028f366004612d02565b606b6020526000908152604090205463ffffffff811690600160201b90046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016101ce565b3480156102e957600080fd5b50606d5461020e906001600160a01b031681565b34801561030957600080fd5b50606d5461032190600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101ce565b34801561034257600080fd5b50610266610351366004612d2e565b610791565b34801561036257600080fd5b50606f5461020e906001600160a01b031681565b34801561038257600080fd5b5061026661081e565b34801561039757600080fd5b5061020e6103a6366004612dad565b6108fb565b3480156103b757600080fd5b506101ec610925565b3480156103cc57600080fd5b5061020e6103db366004612df6565b606a602052600090815260409020546001600160a01b031681565b34801561040257600080fd5b50610243610946565b34801561041757600080fd5b50610266610426366004612e21565b610965565b34801561043757600080fd5b50606c5461020e906001600160a01b031681565b34801561045757600080fd5b5061020e610466366004612f2b565b610a3b565b34801561047757600080fd5b506101ec610486366004612fc6565b610b3d565b34801561049757600080fd5b5060685461032190610100900463ffffffff1681565b3480156104b957600080fd5b5060685461032190600160c81b900463ffffffff1681565b3480156104dd57600080fd5b506102436104ec366004612d02565b610c04565b3480156104fd57600080fd5b506101c261050c366004613048565b610c49565b34801561051d57600080fd5b506101ec61052c36600461307b565b610cd2565b6101ec61053f366004613166565b6111e0565b34801561055057600080fd5b5060685461020e90600160281b90046001600160a01b031681565b34801561057757600080fd5b506101ec61163a565b34801561058c57600080fd5b5061026661059b366004612df6565b60696020526000908152604090205481565b3480156105b957600080fd5b506101ec6105c836600461307b565b61166d565b3480156105d957600080fd5b506101ec6105e83660046131fb565b611908565b3480156105f957600080fd5b506101c26106083660046132a3565b611b7b565b606c546001600160a01b0316331461063857604051631736745960e31b815260040160405180910390fd5b610640611b93565b565b6000606a6000848460405160200161065b9291906132eb565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b60685460ff16156106b757604051630bc011ff60e21b815260040160405180910390fd5b34158015906106d05750606f546001600160a01b031615155b156106ee576040516301bd897160e61b815260040160405180910390fd5b6106fc858534868686611bef565b5050505050565b606e805461071090613315565b80601f016020809104026020016040519081016040528092919081815260200182805461073c90613315565b80156107895780601f1061075e57610100808354040283529160200191610789565b820191906000526020600020905b81548152906001019060200180831161076c57829003601f168201915b505050505081565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b605354600090819081805b60208110156108f2578083901c60011660010361088657603381602081106108535761085361334f565b015460408051602081019290925281018590526060016040516020818303038152906040528051906020012093506108b3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b604080516020810184905290810183905260600160405160208183030381529060405280519060200120915080806108ea9061337b565b915050610829565b50919392505050565b600061091d848461090b85611cb9565b61091486611d78565b61046687611e30565b949350505050565b605354606854600160c81b900463ffffffff16101561064057610640611ee8565b60405180611ba00160405280611b668152602001613aff611b66913981565b600083815b6020811015610a3257600163ffffffff8516821c811690036109d5578481602081106109985761099861334f565b6020020135826040516020016109b8929190918252602082015260400190565b604051602081830303815290604052805190602001209150610a20565b818582602081106109e8576109e861334f565b6020020135604051602001610a07929190918252602082015260400190565b6040516020818303038152906040528051906020012091505b80610a2a8161337b565b91505061096a565b50949350505050565b6000808686604051602001610a519291906132eb565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180611ba00160405280611b668152602001613aff611b669139898989604051602001610aa393929190613394565b60408051601f1981840301815290829052610ac192916020016133cd565b60405160208183030381529060405280519060200120604051602001610b1994939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f19018152919052805160209091012098975050505050505050565b60685460ff1615610b6157604051630bc011ff60e21b815260040160405180910390fd5b606f546001600160a01b0316610b8a5760405163dde3cda760e01b815260040160405180910390fd5b606f54604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac90610bbc90339088906004016133fc565b600060405180830381600087803b158015610bd657600080fd5b505af1158015610bea573d6000803e3d6000fd5b50505050610bfc868686868686611bef565b505050505050565b6060610c0f82611cb9565b610c1883611d78565b610c2184611e30565b604051602001610c3393929190613394565b6040516020818303038152906040529050919050565b6068546000908190610100900463ffffffff16158015610c6f575063ffffffff83166001145b15610c81575063ffffffff8316610ca8565b610c95600160201b63ffffffff8516613415565b610ca59063ffffffff861661342c565b90505b600881901c600090815260696020526040902054600160ff9092169190911b908116149392505050565b60685460ff1615610cf657604051630bc011ff60e21b815260040160405180910390fd5b60685463ffffffff8681166101009092041614610d26576040516302caf51760e11b815260040160405180910390fd5b610d5a8c8c8c8c8c610d5560008e8e8e8e8e8e8e604051610d4892919061343f565b6040518091039020610791565b611f81565b6001600160a01b038616610e9257606f546001600160a01b0316610e295760006001600160a01b03851684825b6040519080825280601f01601f191660200182016040528015610db1576020820181803683370190505b50604051610dbf919061344f565b60006040518083038185875af1925050503d8060008114610dfc576040519150601f19603f3d011682016040523d82523d6000602084013e610e01565b606091505b5050905080610e2357604051630ce8f45160e31b815260040160405180910390fd5b50611193565b606f546040516340c10f1960e01b81526001600160a01b03909116906340c10f1990610e5b90879087906004016133fc565b600060405180830381600087803b158015610e7557600080fd5b505af1158015610e89573d6000803e3d6000fd5b50505050611193565b606d546001600160a01b038781169116148015610ec05750606d5463ffffffff888116600160a01b90920416145b15610ed85760006001600160a01b0385168482610d87565b60685463ffffffff610100909104811690881603610f0957610f046001600160a01b03871685856120e0565b611193565b60008787604051602001610f1e9291906132eb565b60408051601f1981840301815291815281516020928301206000818152606a9093529120549091506001600160a01b03168061112f5760008080610f648688018861346b565b9250925092505050506000610faf8386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061213b92505050565b6040516340c10f1960e01b81529091506001600160a01b038216906340c10f1990610fe0908a908a906004016133fc565b600060405180830381600087803b158015610ffa57600080fd5b505af115801561100e573d6000803e3d6000fd5b5050505080606a600085815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808b63ffffffff1681526020018a6001600160a01b0316815250606b6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507f490e59a1701b938786ac72570a1efeac994a3dbe96e2e883e19e902ace6e6a398a8a838888604051611121959493929190613500565b60405180910390a150611190565b6040516340c10f1960e01b81526001600160a01b038216906340c10f199061115d90899089906004016133fc565b600060405180830381600087803b15801561117757600080fd5b505af115801561118b573d6000803e3d6000fd5b505050505b50505b7f1df3f2a973a00d6635911755c260704e95e8a5876997546798770f76396fda4d8a888887876040516111ca959493929190613539565b60405180910390a1505050505050505050505050565b60685460ff161561120457604051630bc011ff60e21b815260040160405180910390fd5b61120c6121b7565b60685463ffffffff61010090910481169088160361123d576040516302caf51760e11b815260040160405180910390fd5b6000806060876001600160a01b038816611323578834146112715760405163b89240f560e01b815260040160405180910390fd5b606d54606e80546001600160a01b0383169650600160a01b90920463ffffffff1694509061129e90613315565b80601f01602080910402602001604051908101604052809291908181526020018280546112ca90613315565b80156113175780601f106112ec57610100808354040283529160200191611317565b820191906000526020600020905b8154815290600101906020018083116112fa57829003601f168201915b505050505091506115af565b34156113425760405163798ee6f160e01b815260040160405180910390fd5b606f546001600160a01b03908116908916036113bd57604051632770a7eb60e21b81526001600160a01b03891690639dc29fac906113869033908d906004016133fc565b600060405180830381600087803b1580156113a057600080fd5b505af11580156113b4573d6000803e3d6000fd5b505050506115af565b6001600160a01b038089166000908152606b602090815260409182902082518084019093525463ffffffff81168352600160201b9004909216918101829052901561147557604051632770a7eb60e21b81526001600160a01b038a1690639dc29fac906114309033908e906004016133fc565b600060405180830381600087803b15801561144a57600080fd5b505af115801561145e573d6000803e3d6000fd5b5050505080602001519450806000015193506115a2565b851561148757611487898b8989612210565b6040516370a0823160e01b81526000906001600160a01b038b16906370a08231906114b6903090600401612bb5565b602060405180830381865afa1580156114d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f7919061356b565b905061150e6001600160a01b038b1633308e612556565b6040516370a0823160e01b81526000906001600160a01b038c16906370a082319061153d903090600401612bb5565b602060405180830381865afa15801561155a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157e919061356b565b905061158a8282613584565b6068548c9850610100900463ffffffff169650935050505b6115ab89610c04565b9250505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600084868e8e86886053546040516115ef989796959493929190613597565b60405180910390a1611616611611600085878f8f878980519060200120610791565b61258e565b861561162457611624611ee8565b5050505061163160018055565b50505050505050565b606c546001600160a01b0316331461166557604051631736745960e31b815260040160405180910390fd5b610640612679565b60685460ff161561169157604051630bc011ff60e21b815260040160405180910390fd5b60685463ffffffff86811661010090920416146116c1576040516302caf51760e11b815260040160405180910390fd5b6116e38c8c8c8c8c610d5560018e8e8e8e8e8e8e604051610d4892919061343f565b606f546000906001600160a01b031661179a57846001600160a01b031684888a86866040516024016117189493929190613602565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525161174d919061344f565b60006040518083038185875af1925050503d806000811461178a576040519150601f19603f3d011682016040523d82523d6000602084013e61178f565b606091505b50508091505061189c565b606f546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906117cc90889088906004016133fc565b600060405180830381600087803b1580156117e657600080fd5b505af11580156117fa573d6000803e3d6000fd5b50505050846001600160a01b03168789858560405160240161181f9493929190613602565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b17905251611854919061344f565b6000604051808303816000865af19150503d8060008114611891576040519150601f19603f3d011682016040523d82523d6000602084013e611896565b606091505b50909150505b806118ba576040516337e391c360e01b815260040160405180910390fd5b7f1df3f2a973a00d6635911755c260704e95e8a5876997546798770f76396fda4d8b898988886040516118f1959493929190613539565b60405180910390a150505050505050505050505050565b600054610100900460ff16158080156119285750600054600160ff909116105b806119425750303b158015611942575060005460ff166001145b6119aa5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156119cd576000805461ff0019166101001790555b60688054610100600160c81b03191661010063ffffffff8a160265010000000000600160c81b03191617600160281b6001600160a01b038781169190910291909117909155606c80546001600160a01b0319168583161790558616611a565763ffffffff851615611a5157604051630d43a60960e11b815260040160405180910390fd5b611b25565b606d805463ffffffff8716600160a01b026001600160c01b03199091166001600160a01b03891617179055606e611a8d8382613683565b50611b046000801b6012604051602001611af091906060808252600d908201526c2bb930b83832b21022ba3432b960991b608082015260a060208201819052600490820152630ae8aa8960e31b60c082015260ff91909116604082015260e00190565b60405160208183030381529060405261213b565b606f80546001600160a01b0319166001600160a01b03929092169190911790555b611b2d6126d1565b8015611631576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050505050565b600081611b89868686610965565b1495945050505050565b60685460ff1615611bb757604051630bc011ff60e21b815260040160405180910390fd5b6068805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b60685463ffffffff610100909104811690871603611c20576040516302caf51760e11b815260040160405180910390fd5b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001606860019054906101000a900463ffffffff16338989898888605354604051611c7499989796959493929190613742565b60405180910390a1611cab6116116001606860019054906101000a900463ffffffff16338a8a8a8989604051610d4892919061343f565b8215610bfc57610bfc611ee8565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b179052905160609160009182916001600160a01b03861691611d00919061344f565b600060405180830381855afa9150503d8060008114611d3b576040519150601f19603f3d011682016040523d82523d6000602084013e611d40565b606091505b509150915081611d6f57604051806040016040528060078152602001664e4f5f4e414d4560c81b81525061091d565b61091d81612700565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b179052905160609160009182916001600160a01b03861691611dbf919061344f565b600060405180830381855afa9150503d8060008114611dfa576040519150601f19603f3d011682016040523d82523d6000602084013e611dff565b606091505b509150915081611d6f57604051806040016040528060098152602001681393d7d4d6535093d360ba1b81525061091d565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1790529051600091829182916001600160a01b03861691611e76919061344f565b600060405180830381855afa9150503d8060008114611eb1576040519150601f19603f3d011682016040523d82523d6000602084013e611eb6565b606091505b5091509150818015611ec9575080516020145b611ed457601261091d565b8080602001905181019061091d91906137af565b6053546068805463ffffffff909216600160c81b0263ffffffff60c81b1990921691909117908190556001600160a01b03600160281b909104166333d6247d611f2f61081e565b6040518263ffffffff1660e01b8152600401611f4d91815260200190565b600060405180830381600087803b158015611f6757600080fd5b505af1158015611f7b573d6000803e3d6000fd5b50505050565b606854604080516020808201879052818301869052825180830384018152606083019384905280519101206312bd9b1960e11b9092526064810191909152600091600160281b90046001600160a01b03169063257b3632906084016020604051808303816000875af1158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201f919061356b565b90508060000361204157604051622f6fad60e01b815260040160405180910390fd5b600080600160401b8716156120815786915061205f848a8489611b7b565b61207c576040516338105f3b60e21b815260040160405180910390fd5b6120cb565b602087901c6120918160016137cc565b91508792506120ac6120a4868c86610965565b8a8389611b7b565b6120c9576040516338105f3b60e21b815260040160405180910390fd5b505b6120d5828261288e565b505050505050505050565b6121368363a9059cbb60e01b84846040516024016120ff9291906133fc565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612936565b505050565b60008060405180611ba00160405280611b668152602001613aff611b6691398360405160200161216c9291906133cd565b6040516020818303038152906040529050838151602083016000f591506001600160a01b0382166121b0576040516305f7d84960e51b815260040160405180910390fd5b5092915050565b6002600154036122095760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016119a1565b6002600155565b600061221f60048284866137e9565b61222891613813565b9050632afa533160e01b6001600160e01b03198216016123bc576000808080808080612257896004818d6137e9565b8101906122649190613843565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146122a45760405163912ecce760e01b815260040160405180910390fd5b6001600160a01b03861630146122cd5760405163750643af60e01b815260040160405180910390fd5b8a85146122ed576040516303fffc4b60e01b815260040160405180910390fd5b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e169161236b919061344f565b6000604051808303816000865af19150503d80600081146123a8576040519150601f19603f3d011682016040523d82523d6000602084013e6123ad565b606091505b505050505050505050506106fc565b6001600160e01b031981166323f2ebc360e21b146123ed57604051637141605d60e11b815260040160405180910390fd5b6000808080808080806124038a6004818e6137e9565b8101906124109190613897565b97509750975097509750975097509750336001600160a01b0316886001600160a01b0316146124525760405163912ecce760e01b815260040160405180910390fd5b6001600160a01b038716301461247b5760405163750643af60e01b815260040160405180910390fd5b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f1691612502919061344f565b6000604051808303816000865af19150503d806000811461253f576040519150601f19603f3d011682016040523d82523d6000602084013e612544565b606091505b50505050505050505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611f7b9085906323b872dd60e01b906084016120ff565b80600161259d602060026139fe565b6125a79190613584565b605354106125c8576040516377ae67b360e11b815260040160405180910390fd5b60006053600081546125d99061337b565b9182905550905060005b602081101561266a578082901c60011660010361261657826033826020811061260e5761260e61334f565b015550505050565b603381602081106126295761262961334f565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925080806126629061337b565b9150506125e3565b50612136613a0a565b60018055565b60685460ff1661269c57604051635386698160e01b815260040160405180910390fd5b6068805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b600054610100900460ff166126f85760405162461bcd60e51b81526004016119a190613a20565b610640612a08565b6060604082511061271f578180602001905181019061068d9190613a6b565b815160200361285b5760005b60208110801561275a57508281815181106127485761274861334f565b01602001516001600160f81b03191615155b1561277157806127698161337b565b91505061272b565b806000036127a95750506040805180820190915260128152714e4f545f56414c49445f454e434f44494e4760701b6020820152919050565b6000816001600160401b038111156127c3576127c3612e60565b6040519080825280601f01601f1916602001820160405280156127ed576020820181803683370190505b50905060005b828110156128535784818151811061280d5761280d61334f565b602001015160f81c60f81b82828151811061282a5761282a61334f565b60200101906001600160f81b031916908160001a9053508061284b8161337b565b9150506127f3565b509392505050565b50506040805180820190915260128152714e4f545f56414c49445f454e434f44494e4760701b602082015290565b919050565b606854600090610100900463ffffffff161580156128b2575063ffffffff82166001145b156128c4575063ffffffff82166128eb565b6128d8600160201b63ffffffff8416613415565b6128e89063ffffffff851661342c565b90505b600881901c60008181526069602052604081208054600160ff861690811b9182189283905592909190818316900361163157604051630c8d9eab60e31b815260040160405180910390fd5b600061298b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612a2f9092919063ffffffff16565b80519091501561213657808060200190518101906129a99190613ae1565b6121365760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016119a1565b600054610100900460ff166126735760405162461bcd60e51b81526004016119a190613a20565b606061091d848460008585600080866001600160a01b03168587604051612a56919061344f565b60006040518083038185875af1925050503d8060008114612a93576040519150601f19603f3d011682016040523d82523d6000602084013e612a98565b606091505b5091509150612aa987838387612ab4565b979650505050505050565b60608315612b23578251600003612b1c576001600160a01b0385163b612b1c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016119a1565b508161091d565b61091d8383815115612b385781518083602001fd5b8060405162461bcd60e51b81526004016119a19190612ce8565b803563ffffffff8116811461288957600080fd5b6001600160a01b0381168114612b7b57600080fd5b50565b60008060408385031215612b9157600080fd5b612b9a83612b52565b91506020830135612baa81612b66565b809150509250929050565b6001600160a01b0391909116815260200190565b8015158114612b7b57600080fd5b60008083601f840112612be957600080fd5b5081356001600160401b03811115612c0057600080fd5b602083019150836020828501011115612c1857600080fd5b9250929050565b600080600080600060808688031215612c3757600080fd5b612c4086612b52565b94506020860135612c5081612b66565b93506040860135612c6081612bc9565b925060608601356001600160401b03811115612c7b57600080fd5b612c8788828901612bd7565b969995985093965092949392505050565b60005b83811015612cb3578181015183820152602001612c9b565b50506000910152565b60008151808452612cd4816020860160208601612c98565b601f01601f19169290920160200192915050565b602081526000612cfb6020830184612cbc565b9392505050565b600060208284031215612d1457600080fd5b8135612cfb81612b66565b60ff81168114612b7b57600080fd5b600080600080600080600060e0888a031215612d4957600080fd5b8735612d5481612d1f565b9650612d6260208901612b52565b95506040880135612d7281612b66565b9450612d8060608901612b52565b93506080880135612d9081612b66565b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215612dc257600080fd5b612dcb84612b52565b92506020840135612ddb81612b66565b91506040840135612deb81612b66565b809150509250925092565b600060208284031215612e0857600080fd5b5035919050565b80610400810183101561068d57600080fd5b60008060006104408486031215612e3757600080fd5b83359250612e488560208601612e0f565b9150612e576104208501612b52565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612e9e57612e9e612e60565b604052919050565b60006001600160401b03821115612ebf57612ebf612e60565b50601f01601f191660200190565b6000612ee0612edb84612ea6565b612e76565b9050828152838383011115612ef457600080fd5b828260208301376000602084830101529392505050565b600082601f830112612f1c57600080fd5b612cfb83833560208501612ecd565b600080600080600060a08688031215612f4357600080fd5b612f4c86612b52565b94506020860135612f5c81612b66565b935060408601356001600160401b0380821115612f7857600080fd5b612f8489838a01612f0b565b94506060880135915080821115612f9a57600080fd5b50612fa788828901612f0b565b9250506080860135612fb881612d1f565b809150509295509295909350565b60008060008060008060a08789031215612fdf57600080fd5b612fe887612b52565b95506020870135612ff881612b66565b945060408701359350606087013561300f81612bc9565b925060808701356001600160401b0381111561302a57600080fd5b61303689828a01612bd7565b979a9699509497509295939492505050565b6000806040838503121561305b57600080fd5b61306483612b52565b915061307260208401612b52565b90509250929050565b6000806000806000806000806000806000806109208d8f03121561309e57600080fd5b6130a88e8e612e0f565b9b506130b88e6104008f01612e0f565b9a506108008d013599506108208d013598506108408d013597506130df6108608e01612b52565b96506130ef6108808e0135612b66565b6108808d013595506131046108a08e01612b52565b94506131146108c08e0135612b66565b6108c08d013593506108e08d013592506001600160401b036109008e0135111561313d57600080fd5b61314e8e6109008f01358f01612bd7565b81935080925050509295989b509295989b509295989b565b600080600080600080600060c0888a03121561318157600080fd5b61318a88612b52565b9650602088013561319a81612b66565b95506040880135945060608801356131b181612b66565b935060808801356131c181612bc9565b925060a08801356001600160401b038111156131dc57600080fd5b6131e88a828b01612bd7565b989b979a50959850939692959293505050565b60008060008060008060c0878903121561321457600080fd5b61321d87612b52565b9550602087013561322d81612b66565b945061323b60408801612b52565b9350606087013561324b81612b66565b9250608087013561325b81612b66565b915060a08701356001600160401b0381111561327657600080fd5b8701601f8101891361328757600080fd5b61329689823560208401612ecd565b9150509295509295509295565b60008060008061046085870312156132ba57600080fd5b843593506132cb8660208701612e0f565b92506132da6104208601612b52565b939692955092936104400135925050565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b600181811c9082168061332957607f821691505b60208210810361334957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161338d5761338d613365565b5060010190565b6060815260006133a76060830186612cbc565b82810360208401526133b98186612cbc565b91505060ff83166040830152949350505050565b600083516133df818460208801612c98565b8351908301906133f3818360208801612c98565b01949350505050565b6001600160a01b03929092168252602082015260400190565b808202811582820484141761068d5761068d613365565b8082018082111561068d5761068d613365565b8183823760009101908152919050565b60008251613461818460208701612c98565b9190910192915050565b60008060006060848603121561348057600080fd5b83356001600160401b038082111561349757600080fd5b6134a387838801612f0b565b945060208601359150808211156134b957600080fd5b506134c686828701612f0b565b9250506040840135612deb81612d1f565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff861681526001600160a01b03858116602083015284166040820152608060608201819052600090612aa990830184866134d7565b94855263ffffffff9390931660208501526001600160a01b039182166040850152166060830152608082015260a00190565b60006020828403121561357d57600080fd5b5051919050565b8181038181111561068d5761068d613365565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c083018190526000916135e984830187612cbc565b925080851660e085015250509998505050505050505050565b6001600160a01b038516815263ffffffff8416602082015260606040820181905260009061363390830184866134d7565b9695505050505050565b601f82111561213657600081815260208120601f850160051c810160208610156136645750805b601f850160051c820191505b81811015610bfc57828155600101613670565b81516001600160401b0381111561369c5761369c612e60565b6136b0816136aa8454613315565b8461363d565b602080601f8311600181146136e557600084156136cd5750858301515b600019600386901b1c1916600185901b178555610bfc565b600085815260208120601f198616915b82811015613714578886015182559484019460019091019084016136f5565b50858210156137325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60ff8a16815263ffffffff89811660208301526001600160a01b03898116604084015288821660608401528716608083015260a0820186905261010060c0830181905260009161379584830187896134d7565b925080851660e085015250509a9950505050505050505050565b6000602082840312156137c157600080fd5b8151612cfb81612d1f565b63ffffffff8181168382160190808211156121b0576121b0613365565b600080858511156137f957600080fd5b8386111561380657600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101561383b5780818660040360031b1b83161692505b505092915050565b600080600080600080600060e0888a03121561385e57600080fd5b873561386981612b66565b9650602088013561387981612b66565b955060408801359450606088013593506080880135612d9081612d1f565b600080600080600080600080610100898b0312156138b457600080fd5b88356138bf81612b66565b975060208901356138cf81612b66565b9650604089013595506060890135945060808901356138ed81612bc9565b935060a08901356138fd81612d1f565b979a969950949793969295929450505060c08201359160e0013590565b600181815b8085111561395557816000190482111561393b5761393b613365565b8085161561394857918102915b93841c939080029061391f565b509250929050565b60008261396c5750600161068d565b816139795750600061068d565b816001811461398f5760028114613999576139b5565b600191505061068d565b60ff8411156139aa576139aa613365565b50506001821b61068d565b5060208310610133831016604e8410600b84101617156139d8575081810a61068d565b6139e2838361391a565b80600019048211156139f6576139f6613365565b029392505050565b6000612cfb838361395d565b634e487b7160e01b600052600160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215613a7d57600080fd5b81516001600160401b03811115613a9357600080fd5b8201601f81018413613aa457600080fd5b8051613ab2612edb82612ea6565b818152856020838501011115613ac757600080fd5b613ad8826020830160208601612c98565b95945050505050565b600060208284031215613af357600080fd5b8151612cfb81612bc956fe6101006040523480156200001257600080fd5b5060405162001b6638038062001b6683398101604081905262000035916200028d565b82826003620000458382620003a1565b506004620000548282620003a1565b50503360c0525060ff811660e052466080819052620000739062000080565b60a052506200046d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000ad6200012e565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6060600380546200013f9062000312565b80601f01602080910402602001604051908101604052809291908181526020018280546200016d9062000312565b8015620001be5780601f106200019257610100808354040283529160200191620001be565b820191906000526020600020905b815481529060010190602001808311620001a057829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001f057600080fd5b81516001600160401b03808211156200020d576200020d620001c8565b604051601f8301601f19908116603f01168101908282118183101715620002385762000238620001c8565b816040528381526020925086838588010111156200025557600080fd5b600091505b838210156200027957858201830151818301840152908201906200025a565b600093810190920192909252949350505050565b600080600060608486031215620002a357600080fd5b83516001600160401b0380821115620002bb57600080fd5b620002c987838801620001de565b94506020860151915080821115620002e057600080fd5b50620002ef86828701620001de565b925050604084015160ff811681146200030757600080fd5b809150509250925092565b600181811c908216806200032757607f821691505b6020821081036200034857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200039c57600081815260208120601f850160051c81016020861015620003775750805b601f850160051c820191505b81811015620003985782815560010162000383565b5050505b505050565b81516001600160401b03811115620003bd57620003bd620001c8565b620003d581620003ce845462000312565b846200034e565b602080601f8311600181146200040d5760008415620003f45750858301515b600019600386901b1c1916600185901b17855562000398565b600085815260208120601f198616915b828110156200043e578886015182559484019460019091019084016200041d565b50858210156200045d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e0516116aa620004bc6000396000610237015260008181610307015281816105c001526106a70152600061053a015260008181610379015261050401526116aa6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf1461039b578063dd62ed3e146103ae578063ffa1ad74146103f457600080fd5b8063a457c2d71461034e578063a9059cbb14610361578063cd0d00961461037457600080fd5b806395d89b41116100bd57806395d89b41146102e75780639dc29fac146102ef578063a3c573eb1461030257600080fd5b806370a08231146102915780637ecebe00146102c757600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610261578063395093511461026957806340c10f191461027c57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610430565b60405161019191906113e4565b60405180910390f35b6101ad6101a8366004611479565b6104c2565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad6102043660046114a3565b6104dc565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b6101c1610500565b6101ad610277366004611479565b61055c565b61028f61028a366004611479565b6105a8565b005b6101c161029f3660046114df565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d53660046114df565b60056020526000908152604090205481565b610184610680565b61028f6102fd366004611479565b61068f565b6103297f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad61035c366004611479565b61075e565b6101ad61036f366004611479565b61082f565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b61028f6103a9366004611501565b61083d565b6101c16103bc366004611574565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043f906115a7565b80601f016020809104026020016040519081016040528092919081815260200182805461046b906115a7565b80156104b85780601f1061048d576101008083540402835291602001916104b8565b820191906000526020600020905b81548152906001019060200180831161049b57829003601f168201915b5050505050905090565b6000336104d0818585610b73565b60019150505b92915050565b6000336104ea858285610d27565b6104f5858585610dfe565b506001949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610537576105324661106d565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104d090829086906105a3908790611629565b610b73565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084015b60405180910390fd5b61067c8282611135565b5050565b60606004805461043f906115a7565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d427269646765000000000000000000000000000000006064820152608401610669565b61067c8282611228565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610669565b6104f58286868403610b73565b6000336104d0818585610dfe565b834211156108cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866109268361163c565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610991610500565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015610a55573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610ad057508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610b5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610669565b610b678a8a8a610b73565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff8216610cb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610df85781811015610deb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610669565b610df88484848403610b73565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610ea1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff8216610f44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610ffa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610df8565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611098610430565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff82166111b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610669565b80600260008282546111c49190611629565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166112cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015611381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610669565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610d1a565b600060208083528351808285015260005b81811015611411578581018301518582016040015282016113f5565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461147457600080fd5b919050565b6000806040838503121561148c57600080fd5b61149583611450565b946020939093013593505050565b6000806000606084860312156114b857600080fd5b6114c184611450565b92506114cf60208501611450565b9150604084013590509250925092565b6000602082840312156114f157600080fd5b6114fa82611450565b9392505050565b600080600080600080600060e0888a03121561151c57600080fd5b61152588611450565b965061153360208901611450565b95506040880135945060608801359350608088013560ff8116811461155757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561158757600080fd5b61159083611450565b915061159e60208401611450565b90509250929050565b600181811c908216806115bb57607f821691505b6020821081036115f4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156104d6576104d66115fa565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361166d5761166d6115fa565b506001019056fea26469706673582212208d88fee561cff7120d381c345cfc534cef8229a272dc5809d4bbb685ad67141164736f6c63430008110033a26469706673582212200a12026b2bf610e2f7ca4010de0412e160fb51c1e73ab9266a4271993dca473b64736f6c63430008140033" + }, + { + "contractName": "PolygonZkEVMBridge proxy", + "balance": "340282366920938463463374607431768211455", + "nonce": "1", + "address": "0x7E588f38A508B0e8Ea034E17b7A8A38A38d060FB", + "bytecode": "0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461086f565b610135565b61006b6100a336600461088a565b61017f565b3480156100b457600080fd5b506100bd6101f3565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461086f565b610231565b34801561011257600080fd5b506100bd61025e565b61012361028c565b61013361012e610363565b61036d565b565b61013d610391565b73ffffffffffffffffffffffffffffffffffffffff16330361017757610174816040518060200160405280600081525060006103d1565b50565b61017461011b565b610187610391565b73ffffffffffffffffffffffffffffffffffffffff1633036101eb576101e68383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506103d1915050565b505050565b6101e661011b565b60006101fd610391565b73ffffffffffffffffffffffffffffffffffffffff16330361022657610221610363565b905090565b61022e61011b565b90565b610239610391565b73ffffffffffffffffffffffffffffffffffffffff16330361017757610174816103fc565b6000610268610391565b73ffffffffffffffffffffffffffffffffffffffff16330361022657610221610391565b610294610391565b73ffffffffffffffffffffffffffffffffffffffff163303610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b600061022161045d565b3660008037600080366000845af43d6000803e80801561038c573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6103da83610485565b6000825111806103e75750805b156101e6576103f683836104d2565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610425610391565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a1610174816104fe565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6103b5565b61048e8161060a565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606104f7838360405180606001604052806027815260200161099f602791396106d5565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81166105a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161035a565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b73ffffffffffffffffffffffffffffffffffffffff81163b6106ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161035a565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105c4565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516106ff9190610931565b600060405180830381855af49150503d806000811461073a576040519150601f19603f3d011682016040523d82523d6000602084013e61073f565b606091505b50915091506107508683838761075a565b9695505050505050565b606083156107f05782516000036107e95773ffffffffffffffffffffffffffffffffffffffff85163b6107e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161035a565b50816107fa565b6107fa8383610802565b949350505050565b8151156108125781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035a919061094d565b803573ffffffffffffffffffffffffffffffffffffffff8116811461086a57600080fd5b919050565b60006020828403121561088157600080fd5b6104f782610846565b60008060006040848603121561089f57600080fd5b6108a884610846565b9250602084013567ffffffffffffffff808211156108c557600080fd5b818601915086601f8301126108d957600080fd5b8135818111156108e857600080fd5b8760208285010111156108fa57600080fd5b6020830194508093505050509250925092565b60005b83811015610928578181015183820152602001610910565b50506000910152565b6000825161094381846020870161090d565b9190910192915050565b602081526000825180602084015261096c81604085016020870161090d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220701a0c26bdd76686e63fc3c65e4f28a20ba3ecc8a60246733c0627e679c9804e64736f6c63430008140033", + "storage": { + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x000000000000000000000000e34fe58dda5b8c6d547e4857e987633aa86a5e90", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000791356dcc8527b9acee923ab542dd483e3e05316" + } + }, + { + "contractName": "PolygonZkEVMGlobalExitRootL2 implementation", + "balance": "0", + "nonce": "1", + "address": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", + "bytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610162565b60006020819052908152604090205481565b6100a061009b366004610162565b6100ee565b005b6100c97f0000000000000000000000007e588f38a508b0e8ea034e17b7a8a38a38d060fb81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610064565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007e588f38a508b0e8ea034e17b7a8a38a38d060fb161461015d576040517fb49365dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600155565b60006020828403121561017457600080fd5b503591905056fea2646970667358221220ea2171e2c85c8bff947affc409ef6fc6a8fe82fb8c174ddeda988651e595d66564736f6c63430008140033" + }, + { + "contractName": "PolygonZkEVMGlobalExitRootL2 proxy", + "balance": "0", + "nonce": "1", + "address": "0xa40d5f56745a118d0906a34e69aec8c0db1cb8fa", + "bytecode": "0x60806040523661001357610011610017565b005b6100115b61001f6101b7565b6001600160a01b0316336001600160a01b0316141561016f5760606001600160e01b031960003516631b2ce7f360e11b8114156100655761005e6101ea565b9150610167565b6001600160e01b0319811663278f794360e11b14156100865761005e610241565b6001600160e01b031981166308f2839760e41b14156100a75761005e610287565b6001600160e01b031981166303e1469160e61b14156100c85761005e6102b8565b6001600160e01b03198116635c60da1b60e01b14156100e95761005e6102f8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b61017761030c565b565b606061019e83836040518060600160405280602781526020016108576027913961031c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101f4610394565b600061020336600481846106a2565b81019061021091906106e8565b905061022d8160405180602001604052806000815250600061039f565b505060408051602081019091526000815290565b606060008061025336600481846106a2565b8101906102609190610719565b915091506102708282600161039f565b604051806020016040528060008152509250505090565b6060610291610394565b60006102a036600481846106a2565b8101906102ad91906106e8565b905061022d816103cb565b60606102c2610394565b60006102cc6101b7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b6060610302610394565b60006102cc610422565b610177610317610422565b610431565b6060600080856001600160a01b0316856040516103399190610807565b600060405180830381855af49150503d8060008114610374576040519150601f19603f3d011682016040523d82523d6000602084013e610379565b606091505b509150915061038a86838387610455565b9695505050505050565b341561017757600080fd5b6103a8836104d3565b6000825111806103b55750805b156103c6576103c48383610179565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103f46101b7565b604080516001600160a01b03928316815291841660208301520160405180910390a161041f81610513565b50565b600061042c6105bc565b905090565b3660008037600080366000845af43d6000803e808015610450573d6000f35b3d6000fd5b606083156104c15782516104ba576001600160a01b0385163b6104ba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161015e565b50816104cb565b6104cb83836105e4565b949350505050565b6104dc8161060e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105785760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161015e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101db565b8151156105f45781518083602001fd5b8060405162461bcd60e51b815260040161015e9190610823565b6001600160a01b0381163b61067b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161015e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61059b565b600080858511156106b257600080fd5b838611156106bf57600080fd5b5050820193919092039150565b80356001600160a01b03811681146106e357600080fd5b919050565b6000602082840312156106fa57600080fd5b61019e826106cc565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561072c57600080fd5b610735836106cc565b9150602083013567ffffffffffffffff8082111561075257600080fd5b818501915085601f83011261076657600080fd5b81358181111561077857610778610703565b604051601f8201601f19908116603f011681019083821181831017156107a0576107a0610703565b816040528281528860208487010111156107b957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107f65781810151838201526020016107de565b838111156103c45750506000910152565b600082516108198184602087016107db565b9190910192915050565b60208152600082518060208401526108428160408501602087016107db565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122012bb4f564f73959a03513dc74fc3c6e40e8386e6f02c16b78d6db00ce0aa16af64736f6c63430008090033", + "storage": { + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x000000000000000000000000e34fe58dda5b8c6d547e4857e987633aa86a5e90", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9" + } + }, + { + "contractName": "PolygonZkEVMTimelock", + "balance": "0", + "nonce": "1", + "address": "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "bytecode": "0x6080604052600436106101c65760003560e01c806364d62353116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610661578063e38335e514610681578063f23a6e6114610694578063f27a0c92146106d957600080fd5b8063b1c5f427146105af578063bc197c81146105cf578063c4d252f514610614578063d45c44351461063457600080fd5b80638f61f4f5116100d15780638f61f4f5146104e157806391d1485414610515578063a217fddf14610566578063b08e51c01461057b57600080fd5b806364d62353146104815780638065657f146104a15780638f2a0bb0146104c157600080fd5b8063248a9ca31161016457806331d507501161013e57806331d50750146103c857806336568abe146103e85780633a6aae7214610408578063584b153e1461046157600080fd5b8063248a9ca3146103475780632ab0f529146103775780632f2ff15d146103a857600080fd5b80630d3cf6fc116101a05780630d3cf6fc1461026b578063134008d31461029f57806313bc9f20146102b2578063150b7a02146102d257600080fd5b806301d5062a146101d257806301ffc9a7146101f457806307bd02651461022957600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101f26101ed366004611c52565b6106ee565b005b34801561020057600080fd5b5061021461020f366004611cc7565b610783565b60405190151581526020015b60405180910390f35b34801561023557600080fd5b5061025d7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610220565b34801561027757600080fd5b5061025d7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101f26102ad366004611d09565b6107df565b3480156102be57600080fd5b506102146102cd366004611d75565b6108d7565b3480156102de57600080fd5b506103166102ed366004611e9a565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610220565b34801561035357600080fd5b5061025d610362366004611d75565b60009081526020819052604090206001015490565b34801561038357600080fd5b50610214610392366004611d75565b6000908152600160208190526040909120541490565b3480156103b457600080fd5b506101f26103c3366004611f02565b6108fd565b3480156103d457600080fd5b506102146103e3366004611d75565b610927565b3480156103f457600080fd5b506101f2610403366004611f02565b610940565b34801561041457600080fd5b5061043c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610220565b34801561046d57600080fd5b5061021461047c366004611d75565b6109f8565b34801561048d57600080fd5b506101f261049c366004611d75565b610a0e565b3480156104ad57600080fd5b5061025d6104bc366004611d09565b610ade565b3480156104cd57600080fd5b506101f26104dc366004611f73565b610b1d565b3480156104ed57600080fd5b5061025d7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561052157600080fd5b50610214610530366004611f02565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561057257600080fd5b5061025d600081565b34801561058757600080fd5b5061025d7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156105bb57600080fd5b5061025d6105ca366004612025565b610d4f565b3480156105db57600080fd5b506103166105ea36600461214e565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b34801561062057600080fd5b506101f261062f366004611d75565b610d94565b34801561064057600080fd5b5061025d61064f366004611d75565b60009081526001602052604090205490565b34801561066d57600080fd5b506101f261067c366004611f02565b610e8f565b6101f261068f366004612025565b610eb4565b3480156106a057600080fd5b506103166106af3660046121f8565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3480156106e557600080fd5b5061025d611161565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161071881611244565b6000610728898989898989610ade565b90506107348184611251565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610770969594939291906122a6565b60405180910390a3505050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e00000000000000000000000000000000000000000000000000000000014806107d957506107d98261139e565b92915050565b600080527fdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d70696020527f5ba6852781629bcdcd4bdaa6de76d786f1c64b16acdac474e55bebc0ea157951547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff1661085c5761085c8133611435565b600061086c888888888888610ade565b905061087881856114ed565b6108848888888861162a565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516108bc94939291906122f1565b60405180910390a36108cd8161172e565b5050505050505050565b6000818152600160205260408120546001811180156108f65750428111155b9392505050565b60008281526020819052604090206001015461091881611244565b61092283836117d7565b505050565b60008181526001602052604081205481905b1192915050565b73ffffffffffffffffffffffffffffffffffffffff811633146109ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6109f482826118c7565b5050565b6000818152600160208190526040822054610939565b333014610a9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201527f62652074696d656c6f636b00000000000000000000000000000000000000000060648201526084016109e1565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b6000868686868686604051602001610afb969594939291906122a6565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610b4781611244565b888714610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f746368000000000000000000000000000000000000000000000000000000000060648201526084016109e1565b888514610c65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f746368000000000000000000000000000000000000000000000000000000000060648201526084016109e1565b6000610c778b8b8b8b8b8b8b8b610d4f565b9050610c838184611251565b60005b8a811015610d415780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610cc357610cc3612331565b9050602002016020810190610cd89190612360565b8d8d86818110610cea57610cea612331565b905060200201358c8c87818110610d0357610d03612331565b9050602002810190610d15919061237b565b8c8b604051610d29969594939291906122a6565b60405180910390a3610d3a8161240f565b9050610c86565b505050505050505050505050565b60008888888888888888604051602001610d709897969594939291906124f7565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610dbe81611244565b610dc7826109f8565b610e53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20636160448201527f6e6e6f742062652063616e63656c6c656400000000000000000000000000000060648201526084016109e1565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610eaa81611244565b61092283836118c7565b600080527fdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d70696020527f5ba6852781629bcdcd4bdaa6de76d786f1c64b16acdac474e55bebc0ea157951547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff16610f3157610f318133611435565b878614610fc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f746368000000000000000000000000000000000000000000000000000000000060648201526084016109e1565b87841461104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160448201527f746368000000000000000000000000000000000000000000000000000000000060648201526084016109e1565b60006110618a8a8a8a8a8a8a8a610d4f565b905061106d81856114ed565b60005b8981101561114b5760008b8b8381811061108c5761108c612331565b90506020020160208101906110a19190612360565b905060008a8a848181106110b7576110b7612331565b9050602002013590503660008a8a868181106110d5576110d5612331565b90506020028101906110e7919061237b565b915091506110f78484848461162a565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112e94939291906122f1565b60405180910390a350505050806111449061240f565b9050611070565b506111558161172e565b50505050505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161580159061123257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166315064c966040518163ffffffff1660e01b8152600401602060405180830381865afa15801561120e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123291906125be565b1561123d5750600090565b5060025490565b61124e8133611435565b50565b61125a82610927565b156112e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201527f7265616479207363686564756c6564000000000000000000000000000000000060648201526084016109e1565b6112ef611161565b81101561137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e7460448201527f2064656c6179000000000000000000000000000000000000000000000000000060648201526084016109e1565b61138881426125e0565b6000928352600160205260409092209190915550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107d957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107d9565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109f4576114738161197e565b61147e83602061199d565b60405160200161148f929190612617565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526109e191600401612698565b6114f6826108d7565b611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360448201527f206e6f742072656164790000000000000000000000000000000000000000000060648201526084016109e1565b80158061159e5750600081815260016020819052604090912054145b6109f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e67206465706560448201527f6e64656e6379000000000000000000000000000000000000000000000000000060648201526084016109e1565b60008473ffffffffffffffffffffffffffffffffffffffff168484846040516116549291906126e9565b60006040518083038185875af1925050503d8060008114611691576040519150601f19603f3d011682016040523d82523d6000602084013e611696565b606091505b5050905080611727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e67207460448201527f72616e73616374696f6e2072657665727465640000000000000000000000000060648201526084016109e1565b5050505050565b611737816108d7565b6117c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360448201527f206e6f742072656164790000000000000000000000000000000000000000000060648201526084016109e1565b600090815260016020819052604090912055565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109f45760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118693390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156109f45760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606107d973ffffffffffffffffffffffffffffffffffffffff831660145b606060006119ac8360026126f9565b6119b79060026125e0565b67ffffffffffffffff8111156119cf576119cf611d8e565b6040519080825280601f01601f1916602001820160405280156119f9576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611a3057611a30612331565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611a9357611a93612331565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000611acf8460026126f9565b611ada9060016125e0565b90505b6001811115611b77577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611b1b57611b1b612331565b1a60f81b828281518110611b3157611b31612331565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93611b7081612710565b9050611add565b5083156108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109e1565b803573ffffffffffffffffffffffffffffffffffffffff81168114611c0457600080fd5b919050565b60008083601f840112611c1b57600080fd5b50813567ffffffffffffffff811115611c3357600080fd5b602083019150836020828501011115611c4b57600080fd5b9250929050565b600080600080600080600060c0888a031215611c6d57600080fd5b611c7688611be0565b965060208801359550604088013567ffffffffffffffff811115611c9957600080fd5b611ca58a828b01611c09565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611cd957600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108f657600080fd5b60008060008060008060a08789031215611d2257600080fd5b611d2b87611be0565b955060208701359450604087013567ffffffffffffffff811115611d4e57600080fd5b611d5a89828a01611c09565b979a9699509760608101359660809091013595509350505050565b600060208284031215611d8757600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e0457611e04611d8e565b604052919050565b600082601f830112611e1d57600080fd5b813567ffffffffffffffff811115611e3757611e37611d8e565b611e6860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611dbd565b818152846020838601011115611e7d57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611eb057600080fd5b611eb985611be0565b9350611ec760208601611be0565b925060408501359150606085013567ffffffffffffffff811115611eea57600080fd5b611ef687828801611e0c565b91505092959194509250565b60008060408385031215611f1557600080fd5b82359150611f2560208401611be0565b90509250929050565b60008083601f840112611f4057600080fd5b50813567ffffffffffffffff811115611f5857600080fd5b6020830191508360208260051b8501011115611c4b57600080fd5b600080600080600080600080600060c08a8c031215611f9157600080fd5b893567ffffffffffffffff80821115611fa957600080fd5b611fb58d838e01611f2e565b909b50995060208c0135915080821115611fce57600080fd5b611fda8d838e01611f2e565b909950975060408c0135915080821115611ff357600080fd5b506120008c828d01611f2e565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561204157600080fd5b883567ffffffffffffffff8082111561205957600080fd5b6120658c838d01611f2e565b909a50985060208b013591508082111561207e57600080fd5b61208a8c838d01611f2e565b909850965060408b01359150808211156120a357600080fd5b506120b08b828c01611f2e565b999c989b509699959896976060870135966080013595509350505050565b600082601f8301126120df57600080fd5b8135602067ffffffffffffffff8211156120fb576120fb611d8e565b8160051b61210a828201611dbd565b928352848101820192828101908785111561212457600080fd5b83870192505b848310156121435782358252918301919083019061212a565b979650505050505050565b600080600080600060a0868803121561216657600080fd5b61216f86611be0565b945061217d60208701611be0565b9350604086013567ffffffffffffffff8082111561219a57600080fd5b6121a689838a016120ce565b945060608801359150808211156121bc57600080fd5b6121c889838a016120ce565b935060808801359150808211156121de57600080fd5b506121eb88828901611e0c565b9150509295509295909350565b600080600080600060a0868803121561221057600080fd5b61221986611be0565b945061222760208701611be0565b93506040860135925060608601359150608086013567ffffffffffffffff81111561225157600080fd5b6121eb88828901611e0c565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015260a0604082015260006122dc60a08301868861225d565b60608301949094525060800152949350505050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061232760608301848661225d565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561237257600080fd5b6108f682611be0565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126123b057600080fd5b83018035915067ffffffffffffffff8211156123cb57600080fd5b602001915036819003821315611c4b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612440576124406123e0565b5060010190565b81835260006020808501808196508560051b810191508460005b878110156124ea57828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18836030181126124a057600080fd5b8701858101903567ffffffffffffffff8111156124bc57600080fd5b8036038213156124cb57600080fd5b6124d686828461225d565b9a87019a9550505090840190600101612461565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156125455773ffffffffffffffffffffffffffffffffffffffff61253084611be0565b1682526020928301929091019060010161250a565b5083810360208501528881527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff89111561257e57600080fd5b8860051b9150818a602083013701828103602090810160408501526125a69082018789612447565b60608401959095525050608001529695505050505050565b6000602082840312156125d057600080fd5b815180151581146108f657600080fd5b808201808211156107d9576107d96123e0565b60005b8381101561260e5781810151838201526020016125f6565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161264f8160178501602088016125f3565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161268c8160288401602088016125f3565b01602801949350505050565b60208152600082518060208401526126b78160408501602087016125f3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b8183823760009101908152919050565b80820281158282048414176107d9576107d96123e0565b60008161271f5761271f6123e0565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220c474c39da3523b28ebfa5fd66c05b42d6ddcc4a57055483bdda32888b366016164736f6c63430008140033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000000000e10", + "0xaedcc9e7897c0d335bdc5d92fe3a8b4f23727fe558cd1c19f332b28716a30559": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0xf5e61edb9c9cc6bfbae4463e9a2b1dd6ac3b44ddef38f18016e56ba0363910d9": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x64494413541ff93b31aa309254e3fed72a7456e9845988b915b4c7a7ceba8814": "0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", + "0x60b9d94c75b7b3f721925089391e4644cd890cb5e6466f9596dfbd2c54e0b280": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x3412d5605ac6cd444957cedb533e5dacad6378b4bc819ebe3652188a665066d6": "0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", + "0x4b63b79f1e338a49559dcd3193ac9eecc50d0f275d24e97cc8c319e5a31a8bd0": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0xdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d706a": "0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", + "0x800d5dfe4bba53eedee06cd4546a27da8de00f12db83f56062976d4493fda899": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0xc3ad33e20b0c56a223ad5104fff154aa010f8715b9c981fd38fdc60a4d1a52fc": "0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5" + } + }, + { + "accountName": "keyless Deployer", + "balance": "0", + "nonce": "1", + "address": "0x28BB4e66addE1f042B77E04cf7D3784C1dcDBbA3" + }, + { + "accountName": "deployer", + "balance": "100000000000000000000000", + "nonce": "8", + "address": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" + } ] - } \ No newline at end of file +} \ No newline at end of file diff --git a/test/config/node.toml b/test/config/node.toml index 6b9bc581..546effe6 100644 --- a/test/config/node.toml +++ b/test/config/node.toml @@ -6,14 +6,13 @@ Level = "debug" Outputs = ["stderr"] [State] -AccountQueue = 64 [State.DB] User = "state_user" Password = "state_password" Name = "state_db" Host = "zkevm-state-db" Port = "5432" - EnableLog = false + EnableLog = false MaxConns = 200 [State.Batch] [State.Batch.Constraints] @@ -27,6 +26,7 @@ AccountQueue = 64 MaxArithmetics = 236585 MaxBinaries = 473170 MaxSteps = 7570538 + MaxSHA256Hashes = 1596 [Pool] FreeClaimGasLimit = 1500000 @@ -37,6 +37,17 @@ MaxTxDataBytesSize=100000 DefaultMinGasPriceAllowed = 1000000000 MinAllowedGasPriceInterval = "5m" PollMinAllowedGasPriceInterval = "15s" +AccountQueue = 64 +GlobalQueue = 1024 + [Pool.EffectiveGasPrice] + Enabled = false + L1GasPriceFactor = 0.25 + ByteGasCost = 16 + ZeroByteGasCost = 4 + NetProfit = 1 + BreakEvenFactor = 1.1 + FinalDeviationPct = 10 + L2GasPriceSuggesterFactor = 0.5 [Pool.DB] User = "pool_user" Password = "pool_password" @@ -67,60 +78,48 @@ EnableL2SuggestedGasPricePolling = true Port = 8133 [Synchronizer] -IsRollup = false SyncInterval = "1s" SyncChunkSize = 100 TrustedSequencerURL = "" # If it is empty or not specified, then the value is read from the smc. -UseParallelModeForL1Synchronization = false +L1SynchronizationMode = "parallel" [Synchronizer.L1ParallelSynchronization] - NumberOfParallelOfEthereumClients = 5 - CapacityOfBufferingRollupInfoFromL1 = 10 - TimeForCheckLastBlockOnL1Time = "5s" - TimeoutForRequestLastBlockOnL1 = "60s" - MaxNumberOfRetriesForRequestLastBlockOnL1 = 3 - TimeForShowUpStatisticsLog = "1m" - TimeOutMainLoop = "5m" - [Synchronizer.L1ParallelSynchronization.PerformanceCheck] - AcceptableTimeWaitingForNewRollupInfo = "5s" - NumIterationsBeforeStartCheckingTimeWaitinfForNewRollupInfo = 10 + MaxClients = 10 + MaxPendingNoProcessedBlocks = 25 + RequestLastBlockPeriod = "5s" + RequestLastBlockTimeout = "5s" + RequestLastBlockMaxRetries = 3 + StatisticsPeriod = "5m" + TimeoutMainLoop = "5m" + RollupInfoRetriesSpacing= "5s" + FallbackToSequentialModeOnSynchronized = false + [Synchronizer.L1ParallelSynchronization.PerformanceWarning] + AceptableInacctivityTime = "5s" + ApplyAfterNumRollupReceived = 10 [Sequencer] -WaitPeriodPoolIsEmpty = "1s" -LastBatchVirtualizationTimeMaxWaitPeriod = "10s" -BlocksAmountForTxsToBeDeleted = 100 -FrequencyToCheckTxsForDelete = "12h" -TxLifetimeCheckTimeout = "10m" -MaxTxLifetime = "3h" +DeletePoolTxsL1BlockConfirmations = 100 +DeletePoolTxsCheckInterval = "12h" +TxLifetimeCheckInterval = "10m" +TxLifetimeMax = "3h" +LoadPoolTxsCheckInterval = "500ms" +StateConsistencyCheckInterval = "5s" [Sequencer.Finalizer] - GERDeadlineTimeout = "2s" - ForcedBatchDeadlineTimeout = "5s" - SleepDuration = "5s" - ResourcePercentageToCloseBatch = 10 - GERFinalityNumberOfBlocks = 0 - ClosingSignalsManagerWaitForCheckingL1Timeout = "10s" - ClosingSignalsManagerWaitForCheckingGER = "10s" - ClosingSignalsManagerWaitForCheckingForcedBatches = "10s" - ForcedBatchesFinalityNumberOfBlocks = 0 - TimestampResolution = "10s" - StopSequencerOnBatchNum = 0 - [Sequencer.DBManager] - PoolRetrievalInterval = "500ms" - L2ReorgRetrievalInterval = "5s" - [Sequencer.EffectiveGasPrice] - MaxBreakEvenGasPriceDeviationPercentage = 10 - L1GasPriceFactor = 0.25 - ByteGasCost = 16 - MarginFactor = 1 - Enabled = false - [Sequencer.StreamServer] - Enabled = false + NewTxsWaitInterval = "100ms" + ForcedBatchesTimeout = "5s" + ForcedBatchesL1BlockConfirmations = 0 + ForcedBatchesCheckInterval = "10s" + L1InfoTreeL1BlockConfirmations = 0 + L1InfoTreeCheckInterval = "10s" + BatchMaxDeltaTimestamp = "10s" + L2BlockMaxDeltaTimestamp = "2s" + ResourceExhaustedMarginPct = 10 + HaltOnBatchNumber = 0 + SequentialBatchSanityCheck = false [SequenceSender] -IsRollup = false WaitPeriodSendSequence = "15s" LastBatchVirtualizationTimeMaxWaitPeriod = "10s" MaxTxSizeForL1 = 131072 -MaxBatchesForL1 = 1000 L2Coinbase = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" PrivateKey = {Path = "/pk/sequencer.keystore", Password = "testonly"} @@ -128,16 +127,15 @@ PrivateKey = {Path = "/pk/sequencer.keystore", Password = "testonly"} Host = "0.0.0.0" Port = 50081 RetryTime = "5s" -VerifyProofInterval = "30s" +VerifyProofInterval = "10s" TxProfitabilityCheckerType = "acceptall" TxProfitabilityMinReward = "1.1" -ProofStatePollingInterval = "30s" +ProofStatePollingInterval = "5s" SenderAddress = "0x70997970c51812dc3a010c7d01b50e0d17dc79c8" CleanupLockedProofsInterval = "2m" GeneratingProofCleanupThreshold = "10m" [EthTxManager] -FrequencyToMonitorTxs = "10s" ForcedGas = 0 PrivateKeys = [ {Path = "/pk/sequencer.keystore", Password = "testonly"}, @@ -158,8 +156,6 @@ URI = "zkevm-prover:50061" URI = "zkevm-prover:50071" MaxGRPCMessageSize = 100000000 -[Metrics] - [HashDB] User = "prover_user" Password = "prover_pass" @@ -168,3 +164,6 @@ Host = "zkevm-state-db" Port = "5432" EnableLog = false MaxConns = 200 + +[DataAvailability] +Backend = "DataAvailabilityCommittee" diff --git a/test/config/test.dev.toml b/test/config/test.dev.toml index 975d42e2..26ec5efc 100644 --- a/test/config/test.dev.toml +++ b/test/config/test.dev.toml @@ -3,7 +3,7 @@ PrivateKey = {Path = "config/test-member.keystore", Password = "testonly"} [L1] WsURL = "wss://rootchain.hardfork.dev/ws" RpcURL = "https://rootchain.hardfork.dev/" -CDKValidiumAddress = "0x0775AAFB6dD38417581F7C583053Fa3B78FD4FD1" +PolygonValidiumAddress = "0x0775AAFB6dD38417581F7C583053Fa3B78FD4FD1" DataCommitteeAddress = "0xE660928f13F51bEbb553063A1317EDC0e7038949" Timeout = "1m" RetryPeriod = "5s" diff --git a/test/config/test.docker.toml b/test/config/test.docker.toml index 4b4d74cc..600e7435 100644 --- a/test/config/test.docker.toml +++ b/test/config/test.docker.toml @@ -3,8 +3,8 @@ PrivateKey = {Path = "/pk/test-member.keystore", Password = "testonly"} [L1] WsURL = "ws://l1:8546" RpcURL = "http://l1:8545" -CDKValidiumAddress = "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82" -DataCommitteeAddress = "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" +PolygonValidiumAddress = "0x8dAF17A20c9DBA35f005b6324F493785D239719d" +DataCommitteeAddress = "0x68B1D87F95878fE05B998F19b66F4baba5De1aed" Timeout = "3m" RetryPeriod = "5s" BlockBatchSize = 32 diff --git a/test/config/test.local.toml b/test/config/test.local.toml index 231e2119..189089a9 100644 --- a/test/config/test.local.toml +++ b/test/config/test.local.toml @@ -3,8 +3,8 @@ PrivateKey = {Path = "config/test-member.keystore", Password = "testonly"} [L1] WsURL = "ws://127.0.0.1:8546" RpcURL = "http://127.0.0.1:8545" -CDKValidiumAddress = "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82" -DataCommitteeAddress = "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" +PolygonValidiumAddress = "0x8dAF17A20c9DBA35f005b6324F493785D239719d" +DataCommitteeAddress = "0x68B1D87F95878fE05B998F19b66F4baba5De1aed" Timeout = "3m" RetryPeriod = "5s" BlockBatchSize = 8 diff --git a/test/docker-compose.yml b/test/docker-compose.yml index cf72150a..8b56ef71 100644 --- a/test/docker-compose.yml +++ b/test/docker-compose.yml @@ -50,7 +50,7 @@ services: l1: container_name: l1 - image: hermeznetwork/geth-cdk-validium-contracts:v0.0.1 + image: hermeznetwork/geth-cdk-validium-contracts:v0.0.3 healthcheck: test: [ "CMD-SHELL", "geth attach --datadir /geth_data --exec eth.blockNumber" ] interval: 10s @@ -121,10 +121,13 @@ services: zkevm-prover: container_name: zkevm-prover - image: hermeznetwork/zkevm-prover:v2.2.0 + platform: linux/amd64 + image: hermeznetwork/zkevm-prover:v4.0.0-RC19 ports: - 50061:50061 # MT - 50071:50071 # Executor + environment: + - EXPERIMENTAL_DOCKER_DESKTOP_FORCE_QEMU=1 volumes: - ./config/prover.json:/usr/src/app/config.json command: > @@ -132,7 +135,7 @@ services: zkevm-node: container_name: zkevm-node - image: hermeznetwork/zkevm-node:bring-validium-home + image: hermeznetwork/cdk-validium-node:v0.0.4 ports: - 8123:8123 - 61090:61090 @@ -141,7 +144,7 @@ services: - ./config/aggregator.keystore:/pk/aggregator.keystore - ./config/node.toml:/app/config.toml - ./config/genesis.json:/app/genesis.json - command: + command: - "/bin/sh" - "-c" - "/app/zkevm-node approve --network custom --custom-network-file /app/genesis.json --am 115792089237316195423570985008687907853269984665640564039457584007913129639935 -y --cfg /app/config.toml --key-store-path /pk/sequencer.keystore --password testonly && diff --git a/test/e2e/datacommittee_test.go b/test/e2e/datacommittee_test.go index f4fb5287..4662e730 100644 --- a/test/e2e/datacommittee_test.go +++ b/test/e2e/datacommittee_test.go @@ -17,8 +17,8 @@ import ( "github.com/0xPolygon/cdk-data-availability/config" cTypes "github.com/0xPolygon/cdk-data-availability/config/types" "github.com/0xPolygon/cdk-data-availability/db" - "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/cdkdatacommittee" - "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/cdkvalidium" + "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/polygondatacommittee" + "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/polygonvalidium" "github.com/0xPolygon/cdk-data-availability/log" "github.com/0xPolygon/cdk-data-availability/rpc" "github.com/0xPolygon/cdk-data-availability/synchronizer" @@ -36,8 +36,8 @@ import ( ) const ( - nSignatures = 4 - dacMembersCount = 5 + nSignatures = 2 + dacMembersCount = 3 ksFile = "/tmp/pkey" cfgFile = "/tmp/dacnodeconfigfile.json" ksPass = "pass" @@ -73,7 +73,7 @@ func TestDataCommittee(t *testing.T) { require.NoError(t, err) // The default sequencer URL is incorrect, set it to match the docker container - validiumContract, err := cdkvalidium.NewCdkvalidium( + validiumContract, err := polygonvalidium.NewPolygonvalidium( common.HexToAddress(operations.DefaultL1CDKValidiumSmartContract), clientL1, ) @@ -81,7 +81,7 @@ func TestDataCommittee(t *testing.T) { _, err = validiumContract.SetTrustedSequencerURL(authL1, "http://zkevm-node:8123") require.NoError(t, err) - dacSC, err := cdkdatacommittee.NewCdkdatacommittee( + dacSC, err := polygondatacommittee.NewPolygondatacommittee( common.HexToAddress(operations.DefaultL1DataCommitteeContract), clientL1, ) @@ -116,11 +116,13 @@ func TestDataCommittee(t *testing.T) { err = operations.WaitTxToBeMined(ctx, clientL1, tx, operations.DefaultTimeoutTxToBeMined) require.NoError(t, err) + var runningDacs []member + defer func() { if !stopDacs { return } - for _, m := range membs { + for _, m := range runningDacs { stopDACMember(t, m) } // Remove tmp files @@ -135,11 +137,13 @@ func TestDataCommittee(t *testing.T) { }() // pick one to start later - m0 := membs[0] + startCount := len(membs) - 1 + delayedMember := membs[startCount] - // Start DAC nodes & DBs - for _, m := range membs[1:] { // note starting all but first - startDACMember(t, m) + // Start DAC nodes & DBs (except for delayed member) + for i := 0; i < startCount; i++ { + startDACMember(t, membs[i]) + runningDacs = append(runningDacs, membs[i]) } // Send txs @@ -167,13 +171,25 @@ func TestDataCommittee(t *testing.T) { txs = append(txs, tx) } + startedIndices := []int{} + for i := 0; i < len(membs); i++ { + startedIndices = append(startedIndices, membs[i].i) + } + // Wait for verification - _, err = operations.ApplyL2Txs(ctx, txs, authL2, clientL2, operations.VerifiedConfirmationLevel, dacMembersCount) + // FIXME: Confirmation level should be higher here, but somehow the zkevm-node container is currently + // having issues sync'ing during github CI. Increase the confirmation level when this is solved. + _, err = operations.ApplyL2Txs(ctx, txs, authL2, clientL2, operations.TrustedConfirmationLevel) + if err != nil { + operations.CollectDockerLogs(startedIndices) + } require.NoError(t, err) - startDACMember(t, m0) // start the skipped one, it should catch up through synchronization + startDACMember(t, delayedMember) // start the delayed one, it should catch up through synchronization + runningDacs = append(runningDacs, delayedMember) // allow the member to startup and synchronize + log.Infof("waiting for delayed member %d to synchronize...", delayedMember.i) <-time.After(20 * time.Second) iter, err := getSequenceBatchesEventIterator(clientL1) @@ -195,9 +211,9 @@ func TestDataCommittee(t *testing.T) { } } -func getSequenceBatchesEventIterator(clientL1 *ethclient.Client) (*cdkvalidium.CdkvalidiumSequenceBatchesIterator, error) { +func getSequenceBatchesEventIterator(clientL1 *ethclient.Client) (*polygonvalidium.PolygonvalidiumSequenceBatchesIterator, error) { // Get the expected data keys of the batches from what was submitted to L1 - cdkValidium, err := cdkvalidium.NewCdkvalidium(common.HexToAddress(operations.DefaultL1CDKValidiumSmartContract), clientL1) + cdkValidium, err := polygonvalidium.NewPolygonvalidium(common.HexToAddress(operations.DefaultL1CDKValidiumSmartContract), clientL1) if err != nil { return nil, err } @@ -209,7 +225,7 @@ func getSequenceBatchesEventIterator(clientL1 *ethclient.Client) (*cdkvalidium.C return iter, nil } -func getSequenceBatchesKeys(clientL1 *ethclient.Client, event *cdkvalidium.CdkvalidiumSequenceBatches) ([]common.Hash, error) { +func getSequenceBatchesKeys(clientL1 *ethclient.Client, event *polygonvalidium.PolygonvalidiumSequenceBatches) ([]common.Hash, error) { ctx := context.Background() tx, _, err := clientL1.TransactionByHash(ctx, event.Raw.TxHash) if err != nil { @@ -269,12 +285,12 @@ func createKeyStore(pk *ecdsa.PrivateKey, outputDir, password string) error { func startDACMember(t *testing.T, m member) { dacNodeConfig := config.Config{ L1: config.L1Config{ - WsURL: "ws://l1:8546", - RpcURL: "http://l1:8545", - CDKValidiumAddress: operations.DefaultL1CDKValidiumSmartContract, - DataCommitteeAddress: operations.DefaultL1DataCommitteeContract, - Timeout: cTypes.Duration{Duration: time.Second}, - RetryPeriod: cTypes.Duration{Duration: time.Second}, + WsURL: "ws://l1:8546", + RpcURL: "http://l1:8545", + PolygonValidiumAddress: operations.DefaultL1CDKValidiumSmartContract, + DataCommitteeAddress: operations.DefaultL1DataCommitteeContract, + Timeout: cTypes.Duration{Duration: time.Second}, + RetryPeriod: cTypes.Duration{Duration: time.Second}, }, PrivateKey: cTypes.KeystoreFileConfig{ Path: ksFile, diff --git a/test/e2e/e2e_test.go b/test/e2e/e2e_test.go index b1f8dc7c..e36a6010 100644 --- a/test/e2e/e2e_test.go +++ b/test/e2e/e2e_test.go @@ -43,22 +43,8 @@ func TestSignSequence(t *testing.T) { expectedErr error } expectedSequence := types.Sequence{ - Batches: []types.Batch{ - { - Number: 3, - GlobalExitRoot: common.HexToHash("0x678343456734678"), - Timestamp: 3457834, - Coinbase: common.HexToAddress("0x345678934t567889137"), - L2Data: common.Hex2Bytes("274567245673256275642756243560234572347657236520"), - }, - { - Number: 4, - GlobalExitRoot: common.HexToHash("0x34678345678345789534678912345678"), - Timestamp: 78907890, - Coinbase: common.HexToAddress("0x3457234672345789234567"), - L2Data: common.Hex2Bytes("7863456782345678923456789354"), - }, - }, + common.Hex2Bytes("274567245673256275642756243560234572347657236520"), + common.Hex2Bytes("7863456782345678923456789354"), } unexpectedSenderPrivKey, err := crypto.GenerateKey() diff --git a/test/e2e/sequencer_tracker_test.go b/test/e2e/sequencer_tracker_test.go index 30712a9d..571f2fa7 100644 --- a/test/e2e/sequencer_tracker_test.go +++ b/test/e2e/sequencer_tracker_test.go @@ -8,7 +8,7 @@ import ( "github.com/0xPolygon/cdk-data-availability/config" "github.com/0xPolygon/cdk-data-availability/etherman" - "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/cdkvalidium" + "github.com/0xPolygon/cdk-data-availability/etherman/smartcontracts/polygonvalidium" "github.com/0xPolygon/cdk-data-availability/sequencer" "github.com/0xPolygon/cdk-data-availability/test/operations" "github.com/ethereum/go-ethereum/common" @@ -26,10 +26,10 @@ func TestSequencerAddrExists(t *testing.T) { ctx := cli.NewContext(cli.NewApp(), nil, nil) cfg, err := config.Load(ctx) require.NoError(t, err) - etherman, err := etherman.New(cfg.L1) + etm, err := etherman.New(cfg.L1) require.NoError(t, err) - tracker, err := sequencer.NewTracker(cfg.L1, etherman) + tracker, err := sequencer.NewTracker(cfg.L1, etm) require.NoError(t, err) go tracker.Start(ctx.Context) @@ -39,11 +39,11 @@ func TestSequencerAddrExists(t *testing.T) { require.Equal(t, common.HexToAddress("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"), addr) url := tracker.GetUrl() - require.Equal(t, "http://cdk-validium-json-rpc:8123", url) // the default + require.Equal(t, "http://zkevm-json-rpc:8123", url) // the default clientL1, err := ethclient.Dial(operations.DefaultL1NetworkURL) require.NoError(t, err) - validiumContract, err := cdkvalidium.NewCdkvalidium( + validiumContract, err := polygonvalidium.NewPolygonvalidium( common.HexToAddress(operations.DefaultL1CDKValidiumSmartContract), clientL1, ) diff --git a/test/operations/operations.go b/test/operations/operations.go index 372b093a..db988bf6 100644 --- a/test/operations/operations.go +++ b/test/operations/operations.go @@ -50,13 +50,13 @@ const ( DefaultL1ChainID uint64 = 1337 // DefaultL1DataCommitteeContract is the l1 data committee contract address - DefaultL1DataCommitteeContract = "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" + DefaultL1DataCommitteeContract = "0x68B1D87F95878fE05B998F19b66F4baba5De1aed" // DefaultTimeoutTxToBeMined is the timeout for blocks to be mined DefaultTimeoutTxToBeMined = 1 * time.Minute // DefaultL1CDKValidiumSmartContract is the l1 CDK validium contract address - DefaultL1CDKValidiumSmartContract = "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82" + DefaultL1CDKValidiumSmartContract = "0x8dAF17A20c9DBA35f005b6324F493785D239719d" ) var ( @@ -322,7 +322,7 @@ func RevertReason(ctx context.Context, c ethClienter, tx *ethTypes.Transaction, // ApplyL2Txs sends the given L2 txs, waits for them to be consolidated and // checks the final state. func ApplyL2Txs(ctx context.Context, txs []*ethTypes.Transaction, auth *bind.TransactOpts, - client *ethclient.Client, confirmationLevel ConfirmationLevel, committeeMembersCount int) ([]*big.Int, error) { + client *ethclient.Client, confirmationLevel ConfirmationLevel) ([]*big.Int, error) { if auth == nil { return nil, errors.New("auth is undefined") } @@ -372,8 +372,6 @@ func ApplyL2Txs(ctx context.Context, txs []*ethTypes.Transaction, auth *bind.Tra // wait for l2 block to be virtualized log.Infof("waiting for the block number %v to be virtualized", receipt.BlockNumber.String()) if err = WaitL2BlockToBeVirtualized(receipt.BlockNumber, DefaultTimeoutTxToBeMined); err != nil { - collectDockerLogs(committeeMembersCount) - return nil, err } @@ -391,18 +389,19 @@ func ApplyL2Txs(ctx context.Context, txs []*ethTypes.Transaction, auth *bind.Tra return l2BlockNumbers, nil } -// collectDockerLogs retrieves the logs from Docker containers and writes them into the logger -func collectDockerLogs(committeeMembersCount int) { +// CollectDockerLogs retrieves the logs from Docker containers and writes them into the logger +func CollectDockerLogs(dacIndices []int) { cmd := exec.Command("docker", "logs", "zkevm-node") out, _ := cmd.CombinedOutput() - log.Debug("zkevm node: ", string(out)) + log.Debug("DOCKER LOGS ZKEVM-NODE: ", string(out)) - for i := 0; i < committeeMembersCount; i++ { - nodeName := fmt.Sprintf("cdk-data-availability-%d", i) + for i := 0; i < len(dacIndices); i++ { + idx := dacIndices[i] + nodeName := fmt.Sprintf("cdk-data-availability-%d", idx) cmd = exec.Command("docker", "logs", "--tail", "1000", nodeName) out, _ = cmd.CombinedOutput() - log.Debug(fmt.Sprintf("DAN-%d: ", i), string(out)) + log.Debug(fmt.Sprintf("DOCKER LOGS DAN-%d: ", idx), string(out)) } } diff --git a/types/batch.go b/types/batch.go deleted file mode 100644 index 35356f4f..00000000 --- a/types/batch.go +++ /dev/null @@ -1,62 +0,0 @@ -package types - -import ( - "crypto/ecdsa" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/crypto" -) - -// Batch represents a batch used for synchronization -type Batch struct { - Number ArgUint64 `json:"number"` - GlobalExitRoot common.Hash `json:"globalExitRoot"` - Timestamp ArgUint64 `json:"timestamp"` - Coinbase common.Address `json:"coinbase"` - L2Data ArgBytes `json:"batchL2Data"` - Transactions []TransactionOrHash `json:"transactions"` -} - -// TransactionOrHash for union type of transaction and types.Hash -type TransactionOrHash struct { - Hash *common.Hash -} - -// HashToSign returns a hash that uniquely identifies the batch -func (b *Batch) HashToSign() []byte { - return crypto.Keccak256( - []byte(b.Number.Hex()), - b.GlobalExitRoot[:], - []byte(b.Timestamp.Hex()), - b.Coinbase[:], - b.L2Data, - ) -} - -// Sign returns a signed batch by the private key -func (b *Batch) Sign(privateKey *ecdsa.PrivateKey) (*SignedBatch, error) { - hashToSign := b.HashToSign() - sig, err := crypto.Sign(hashToSign, privateKey) - if err != nil { - return nil, err - } - return &SignedBatch{ - Batch: *b, - Signature: sig, - }, nil -} - -// SignedBatch is a batch but signed -type SignedBatch struct { - Batch Batch `json:"batch"` - Signature ArgBytes `json:"signature"` -} - -// Signer returns the address of the signer -func (s *SignedBatch) Signer() (common.Address, error) { - pubKey, err := crypto.SigToPub(s.Batch.HashToSign(), s.Signature) - if err != nil { - return common.Address{}, err - } - return crypto.PubkeyToAddress(*pubKey), nil -} diff --git a/types/batch_test.go b/types/batch_test.go deleted file mode 100644 index a70ce702..00000000 --- a/types/batch_test.go +++ /dev/null @@ -1,71 +0,0 @@ -package types - -import ( - "crypto/ecdsa" - "fmt" - "testing" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/crypto" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -var testBatchCases = []Batch{ - { - L2Data: common.Hex2Bytes(""), - GlobalExitRoot: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), - Timestamp: 1685130880, - Coinbase: common.HexToAddress("0x1f1CCb74C0e2e84E657f4C4b7f1F2CDC3D2114d5"), - }, - { - L2Data: ArgBytes(common.Hex2Bytes("f9056880808301ba5a945904257b03bb7bf01a704a233090cc904e1c164580b905442cffd02e0000000000000000000000000000000000000000000000000000000000000000ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5b4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3021ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85e58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193440eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a1968ffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f839867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756afcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0f9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a5f8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8923490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99cc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8beccda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d22733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a0b46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa0c65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e2f4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd95a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3774df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee652cdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618db8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d0838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea32293237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7358448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a9000000000000000000000000000000000000000000000000000000000000000095b76b43196f04d39cc922a7933240fa6cfc3fb1502ecfdf693e0ad078f668e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001f1ccb74c0e2e84e657f4c4b7f1f2cdc3d2114d5000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000000082084a8080213c87d62b9620bccb33eed6e22861ce4f112ec89f40a66111bbec222bfb313e37dc77d691d1436916b3dd8519eb3e572dd2962c7317732c38443d86390f988d1c")), - GlobalExitRoot: common.HexToHash("0xbd6ad630a17775e238d412044d37868838687ba4c6346b917551f4f60def4a2a"), - Timestamp: 1685349728, - Coinbase: common.HexToAddress("0x1f1CCb74C0e2e84E657f4C4b7f1F2CDC3D2114d5"), - }, - { - L2Data: common.Hex2Bytes("f905688080830f4240945904257b03bb7bf01a704a233090cc904e1c164580b905442cffd02e0000000000000000000000000000000000000000000000000000000000000000ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5b4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3021ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85e58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193440eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a1968ffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f839867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756afcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0f9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a5f8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8923490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99cc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8beccda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d22733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a0b46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa0c65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e2f4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd95a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3774df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee652cdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618db8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d0838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea32293237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7358448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a9000000000000000000000000000000000000000000000000000000000000000095b76b43196f04d39cc922a7933240fa6cfc3fb1502ecfdf693e0ad078f668e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001f1ccb74c0e2e84e657f4c4b7f1f2cdc3d2114d5000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000000082084a80801ca5229fb6abcf5febe08c28268626cd1aa9adce9069410bbdf5cb958d52f23a15077324cb889bf4e37063540fcf4d1b9c7f523d54f2182fdc217de4e7a82b491b"), - GlobalExitRoot: common.HexToHash("0xbd6ad630a17775e238d412044d37868838687ba4c6346b917551f4f60def4a2a"), - Timestamp: 1685374947, - Coinbase: common.HexToAddress("0x1f1CCb74C0e2e84E657f4C4b7f1F2CDC3D2114d5"), - }, - { - L2Data: ArgBytes(common.Hex2Bytes("e1808082520894400f2117d43f95f63a8e06dcf813dd746c4b5aba808082084a8080a6c23693c74f1492b1b1b580d0333e980532dcd0c7407a8c2134e28065bc8ceb273fd0b759cf1194ab221bb1dcada4b6f43251ae9909621152c450b062b4a3431ce1018082520894400f2117d43f95f63a8e06dcf813dd746c4b5aba808082084a80801c15bf03602f2907d0ab1fc027b98104c7625a36008b53c93a44191fadc68c305d9d9d65fdc2a108c71cd586ca7d58ec6da1de735aef6a0434196f966f777b191c")), - GlobalExitRoot: common.HexToHash("0xbd6ad630a17775e238d412044d37868838687ba4c6346b917551f4f60def4a2a"), - Timestamp: 1685374947, - Coinbase: common.HexToAddress("0x1f1CCb74C0e2e84E657f4C4b7f1F2CDC3D2114d5"), - }, - { - L2Data: ArgBytes(common.Hex2Bytes("e102808252089445be386709a8f3a056651bbb32752e0c3bebd8f0808082084a8080b429fc3ab2e3a947dd69921696779a6acf85abeb858b2e918ed047df27ed389c2407a7550ae4df61c05eb4f4cf2a410ff064ca73e3437074f7685d6f849799921c")), - GlobalExitRoot: common.HexToHash("0xbd6ad630a17775e238d412044d37868838687ba4c6346b917551f4f60def4a2a"), - Timestamp: 1685375541, - Coinbase: common.HexToAddress("0x1f1CCb74C0e2e84E657f4C4b7f1F2CDC3D2114d5"), - }, -} - -func TestBatchSigning(t *testing.T) { - privKeys := []*ecdsa.PrivateKey{} - for i := 0; i < 5; i++ { - pk, err := crypto.GenerateKey() - require.NoError(t, err) - privKeys = append(privKeys, pk) - } - - for i, c := range testBatchCases { - c := c - - t.Run(fmt.Sprintf("%d. case", i+1), func(t *testing.T) { - t.Parallel() - - for _, pk := range privKeys { - signedBatch, err := c.Sign(pk) - require.NoError(t, err) - actualAddr, err := signedBatch.Signer() - require.NoError(t, err) - expectedAddr := crypto.PubkeyToAddress(pk.PublicKey) - assert.Equal(t, expectedAddr, actualAddr) - } - }) - } -} diff --git a/types/factories.go b/types/factories.go index 5faa7235..097f3fa7 100644 --- a/types/factories.go +++ b/types/factories.go @@ -20,12 +20,15 @@ type EthClientFactory interface { CreateEthClient(ctx context.Context, url string) (EthClient, error) } -var _ EthClientFactory = (*EthClientFactoryImpl)(nil) +// ethClientFactory is the implementation of EthClientFactory interface +type ethClientFactory struct{} -// EthClientFactoryImpl is the implementation of EthClientFactory interface -type EthClientFactoryImpl struct{} +// NewEthClientFactory is the constructor of ethClientFactory +func NewEthClientFactory() EthClientFactory { + return ðClientFactory{} +} // CreateEthClient creates a new eth client -func (e *EthClientFactoryImpl) CreateEthClient(ctx context.Context, url string) (EthClient, error) { +func (e *ethClientFactory) CreateEthClient(ctx context.Context, url string) (EthClient, error) { return ethclient.DialContext(ctx, url) } diff --git a/types/sequence.go b/types/sequence.go index a56ca2b9..91258ba7 100644 --- a/types/sequence.go +++ b/types/sequence.go @@ -17,29 +17,20 @@ const ( // Sequence represents the data that the sequencer will send to L1 // and other metadata needed to build the accumulated input hash aka accInputHash -type Sequence struct { - Batches []Batch `json:"batches"` - OldAccInputHash common.Hash `json:"oldAccInputhash"` -} +type Sequence []ArgBytes // HashToSign returns the accumulated input hash of the sequence. // Note that this is equivalent to what happens on the smart contract func (s *Sequence) HashToSign() []byte { - currentHash := s.OldAccInputHash.Bytes() - for _, b := range s.Batches { + currentHash := common.Hash{}.Bytes() + for _, batchData := range ([]ArgBytes)(*s) { types := []string{ - "bytes32", // oldAccInputHash - "bytes32", // currentTransactionsHash - "bytes32", // globalExitRoot - "uint64", // timestamp - "address", // coinbase + "bytes32", + "bytes32", } values := []interface{}{ currentHash, - crypto.Keccak256(b.L2Data), - b.GlobalExitRoot, - uint64(b.Timestamp), - b.Coinbase, + crypto.Keccak256(batchData), } currentHash = solsha3.SoliditySHA3(types, values) } @@ -87,10 +78,10 @@ func (s *Sequence) Sign(privateKey *ecdsa.PrivateKey) (*SignedSequence, error) { // OffChainData returns the data that needs to be stored off chain from a given sequence func (s *Sequence) OffChainData() []OffChainData { od := []OffChainData{} - for _, b := range s.Batches { + for _, batchData := range ([]ArgBytes)(*s) { od = append(od, OffChainData{ - Key: crypto.Keccak256Hash(b.L2Data), - Value: b.L2Data, + Key: crypto.Keccak256Hash(batchData), + Value: batchData, }) } return od diff --git a/types/sequence_test.go b/types/sequence_test.go index 73067b76..40c2b2b2 100644 --- a/types/sequence_test.go +++ b/types/sequence_test.go @@ -15,52 +15,12 @@ type testSequenceCase struct { expectedHash common.Hash } +const data = "0b000015bc000000000b00000002000000000b00000002000000000b0000000200000000e708843b9aca008252089470997970c51812dc3a010c7d01b50e0d17dc79c8822710808203e98080eb60de9d2ae8d392e2a7f974b7f35bb7cdfc4f32f8f69212bc426d027fb1e6e13fbdcdc6cc9a7427fd60e2a108464d753d4b0c422fea68b467be60d693c37a9a1cffe709843b9aca008252089470997970c51812dc3a010c7d01b50e0d17dc79c8822710808203e98080e5ef8cee91269b4e5b482217026cb966d7d89e6aa0bfa1b8184601261973147c6c0b1e270f90c2f598a5bc59c99f6da6e3bf1d07cd02a7e3a973b16c40b20d641bffe70a843b9aca008252089470997970c51812dc3a010c7d01b50e0d17dc79c8822710808203e980802cf438a125eec0bedc70af154feaa04a0fb940844fcee1735f2c0a29a1bbb2444c28556ac3d9ab99f006a1af45d3c69c7134c10836cd8e10eb0c4a0536be12481cffe70b843b9aca008252089470997970c51812dc3a010c7d01b50e0d17dc79c8822710808203e980809abd370489d86473c8581d30c22096067029a783c0079292a43a039c186c8df86f59050aa02cdec4b04f1c59502897c9628977f7cfec35e2a93875d21e54bdc61bffe70c843b9aca008252089470997970c51812dc3a010c7d01b50e0d17dc79c8822710808203e9808073daf8314747e83d3bd389287978cd723d99077777c209647a9cf06ce2d6fb433065027abcd9ca05cb1d808c11bdb2b2d152fde6ec06dffe1e7b33627100c0011cffe70d843b9aca008252089470997970c51812dc3a010c7d01b50e0d17dc79c8822710808203e98080c46a74f28c0d25b647276ea3c14779a67516c37be1aeed655b53cb955b32badb3952986001056f0b1b902c3cab73a62e20195f917ce4c26f6faa7e5e60deacb21cffe70e843b9aca008252089470997970c51812dc3a010c7d01b50e0d17dc79c8822710808203e98080dd3ca0dd2aca53110c8324a0ce09d69db4b791c2bbfff7520c892d2c943c9fec126678b24364fb296ce3326d7a7de446c14bbab6a563e008d96e0859614500dd1bffe70f843b9aca008252089470997970c51812dc3a010c7d01b50e0d17dc79c8822710808203e98080216f364ba880322afa0a9f8c507c1e0dad7cc7a7cbfcccb05f8f4b6acdd0f21a5da25704bba861e29691945fb76875ec9dff27cefce58f58cac6569e49308e8a1cffe710843b9aca008252089470997970c51812dc3a010c7d01b50e0d17dc79c8822710808203e98080ccd21e98490bb85f00e83d4b00d2d4eb2a31a5f2f71095c76a18090c159ed7c575ed18a90896bc83380af3c332f1896e2236534fed1fb9807e0dcd853f21f1b91cffe711843b9aca008252089470997970c51812dc3a010c7d01b50e0d17dc79c8822710808203e9808002a08668ec08dafa4d6b0a66cb42b02bed3b016c1c156356f478e9163c605b48761f5f7ef1191820ff8246da7afbb2faea8a27211344984d43773ad3e75fb7591cff" + var testSequenceCases = []testSequenceCase{ { - s: Sequence{ - OldAccInputHash: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), - Batches: []Batch{ - { - L2Data: common.Hex2Bytes(""), - GlobalExitRoot: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"), - Timestamp: 1685130880, - Coinbase: common.HexToAddress("0x1f1CCb74C0e2e84E657f4C4b7f1F2CDC3D2114d5"), - }, - { - L2Data: ArgBytes(common.Hex2Bytes("f9056880808301ba5a945904257b03bb7bf01a704a233090cc904e1c164580b905442cffd02e0000000000000000000000000000000000000000000000000000000000000000ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5b4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3021ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85e58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193440eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a1968ffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f839867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756afcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0f9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a5f8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8923490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99cc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8beccda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d22733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a0b46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa0c65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e2f4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd95a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3774df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee652cdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618db8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d0838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea32293237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7358448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a9000000000000000000000000000000000000000000000000000000000000000095b76b43196f04d39cc922a7933240fa6cfc3fb1502ecfdf693e0ad078f668e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001f1ccb74c0e2e84e657f4c4b7f1f2cdc3d2114d5000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000000082084a8080213c87d62b9620bccb33eed6e22861ce4f112ec89f40a66111bbec222bfb313e37dc77d691d1436916b3dd8519eb3e572dd2962c7317732c38443d86390f988d1c")), - GlobalExitRoot: common.HexToHash("0xbd6ad630a17775e238d412044d37868838687ba4c6346b917551f4f60def4a2a"), - Timestamp: 1685349728, - Coinbase: common.HexToAddress("0x1f1CCb74C0e2e84E657f4C4b7f1F2CDC3D2114d5"), - }, - }, - }, - expectedHash: common.HexToHash("0x8bb2a142a9a77ed2ca946d4ff66081cb9d4348b2c4e81a8e8e8d5d248286df16"), - }, - { - s: Sequence{ - OldAccInputHash: common.HexToHash("0x2fc6a6ec18e61a98867a2536c306ca7fbdc4da2febd671d9de8fad50b56c6a16"), - Batches: []Batch{ - { - L2Data: common.Hex2Bytes("f905688080830f4240945904257b03bb7bf01a704a233090cc904e1c164580b905442cffd02e0000000000000000000000000000000000000000000000000000000000000000ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5b4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3021ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba85e58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193440eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a1968ffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f839867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756afcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e0f9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a5f8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8923490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99cc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8beccda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d22733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a0b46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa0c65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e2f4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd95a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3774df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee652cdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618db8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d0838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea32293237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7358448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a9000000000000000000000000000000000000000000000000000000000000000095b76b43196f04d39cc922a7933240fa6cfc3fb1502ecfdf693e0ad078f668e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000001f1ccb74c0e2e84e657f4c4b7f1f2cdc3d2114d5000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000000082084a80801ca5229fb6abcf5febe08c28268626cd1aa9adce9069410bbdf5cb958d52f23a15077324cb889bf4e37063540fcf4d1b9c7f523d54f2182fdc217de4e7a82b491b"), - GlobalExitRoot: common.HexToHash("0xbd6ad630a17775e238d412044d37868838687ba4c6346b917551f4f60def4a2a"), - Timestamp: 1685374947, - Coinbase: common.HexToAddress("0x1f1CCb74C0e2e84E657f4C4b7f1F2CDC3D2114d5"), - }, - { - L2Data: ArgBytes(common.Hex2Bytes("e1808082520894400f2117d43f95f63a8e06dcf813dd746c4b5aba808082084a8080a6c23693c74f1492b1b1b580d0333e980532dcd0c7407a8c2134e28065bc8ceb273fd0b759cf1194ab221bb1dcada4b6f43251ae9909621152c450b062b4a3431ce1018082520894400f2117d43f95f63a8e06dcf813dd746c4b5aba808082084a80801c15bf03602f2907d0ab1fc027b98104c7625a36008b53c93a44191fadc68c305d9d9d65fdc2a108c71cd586ca7d58ec6da1de735aef6a0434196f966f777b191c")), - GlobalExitRoot: common.HexToHash("0xbd6ad630a17775e238d412044d37868838687ba4c6346b917551f4f60def4a2a"), - Timestamp: 1685374947, - Coinbase: common.HexToAddress("0x1f1CCb74C0e2e84E657f4C4b7f1F2CDC3D2114d5"), - }, - { - L2Data: ArgBytes(common.Hex2Bytes("e102808252089445be386709a8f3a056651bbb32752e0c3bebd8f0808082084a8080b429fc3ab2e3a947dd69921696779a6acf85abeb858b2e918ed047df27ed389c2407a7550ae4df61c05eb4f4cf2a410ff064ca73e3437074f7685d6f849799921c")), - GlobalExitRoot: common.HexToHash("0xbd6ad630a17775e238d412044d37868838687ba4c6346b917551f4f60def4a2a"), - Timestamp: 1685375541, - Coinbase: common.HexToAddress("0x1f1CCb74C0e2e84E657f4C4b7f1F2CDC3D2114d5"), - }, - }, - }, - expectedHash: common.HexToHash("0xa30191e4c99485b6a1eaede65815a2fbd6af42798fe3e0c8e57061f244487657"), + s: Sequence{ArgBytes(common.Hex2Bytes(data))}, + expectedHash: common.BytesToHash(common.Hex2Bytes("f9dab0ab5bce4b4b002bc5f117d8a5357ab6402dfcc10b0514fa5851b6a37ba1")), }, } @@ -70,6 +30,7 @@ func TestHashToSign(t *testing.T) { t, c.expectedHash.Hex(), "0x"+common.Bytes2Hex(c.s.HashToSign()), ) + require.Equal(t, 1, len(c.s.OffChainData())) } } diff --git a/types/types.go b/types/types.go index 9f82f26a..7474bdb7 100644 --- a/types/types.go +++ b/types/types.go @@ -88,7 +88,7 @@ type ArgHash common.Hash // UnmarshalText unmarshals from text func (arg *ArgHash) UnmarshalText(input []byte) error { - if !HexIsValid(string(input)) { + if !IsHexValid(string(input)) { return fmt.Errorf("invalid hash, it needs to be a hexadecimal value") } @@ -123,8 +123,8 @@ func decodeToHex(b []byte) ([]byte, error) { return hex.DecodeString(str) } -// HexIsValid checks if the provided string is a valid hexadecimal value -func HexIsValid(s string) bool { +// IsHexValid checks if the provided string is a valid hexadecimal value +func IsHexValid(s string) bool { str := strings.TrimPrefix(s, "0x") for _, b := range []byte(str) { if !(b >= '0' && b <= '9' || b >= 'a' && b <= 'f' || b >= 'A' && b <= 'F') { @@ -170,7 +170,7 @@ func (a ArgBig) MarshalText() ([]byte, error) { } // Hex returns a hexadecimal representation -func (b ArgBig) Hex() string { - bb, _ := b.MarshalText() +func (a ArgBig) Hex() string { + bb, _ := a.MarshalText() return string(bb) } diff --git a/types/types_test.go b/types/types_test.go new file mode 100644 index 00000000..f49bd2ec --- /dev/null +++ b/types/types_test.go @@ -0,0 +1,41 @@ +package types + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestIsHexValid(t *testing.T) { + tests := []struct { + name string + s string + want bool + }{ + { + name: "valid hex without 0x prefix", + s: "76616c69642068657820776974686f757420307820707265666978", + want: true, + }, + { + name: "valid hex with 0x prefix", + s: "0x76616c696420686578207769746820307820707265666978", + want: true, + }, + { + name: "invalid hex without 0x prefix", + s: "76616c696invalid07769746820307820707265666978", + want: false, + }, + { + name: "invalid hex with 0x prefix", + s: "0x76616c696invalid07769746820307820707265666978", + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + require.Equal(t, tt.want, IsHexValid(tt.s)) + }) + } +}