From 413f1653b4bfd0818705b242d2e256e423f25db2 Mon Sep 17 00:00:00 2001 From: Ed Felten Date: Sun, 2 Feb 2020 16:28:32 -0500 Subject: [PATCH 1/7] Add commandline switch for block time --- packages/arb-util/common/timeticks.go | 4 +--- .../arb-validator/cmd/evilRollupServer/evilRollupServer.go | 5 ++++- packages/arb-validator/cmd/rollupServer/rollupServer.go | 5 ++++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/arb-util/common/timeticks.go b/packages/arb-util/common/timeticks.go index c1b089e2c2..5050c460bb 100644 --- a/packages/arb-util/common/timeticks.go +++ b/packages/arb-util/common/timeticks.go @@ -21,9 +21,7 @@ import ( "time" ) -const ( - AverageSecondsPerBlock = 2 -) +var AverageSecondsPerBlock = int64(2) type TimeTicks struct { Val *big.Int diff --git a/packages/arb-validator/cmd/evilRollupServer/evilRollupServer.go b/packages/arb-validator/cmd/evilRollupServer/evilRollupServer.go index 65c578c26a..e9d72a4a15 100644 --- a/packages/arb-validator/cmd/evilRollupServer/evilRollupServer.go +++ b/packages/arb-validator/cmd/evilRollupServer/evilRollupServer.go @@ -131,15 +131,18 @@ func validateRollupChain() error { validateCmd := flag.NewFlagSet("validate", flag.ExitOnError) rpcEnable := validateCmd.Bool("rpc", false, "rpc") + blocktime := validateCmd.Int64("blocktime", 2, "blocktime=N") err := validateCmd.Parse(os.Args[2:]) if err != nil { return err } if validateCmd.NArg() != 5 { - return errors.New("usage: evilRollupServer validate [--rpc] ") + return errors.New("usage: rollupServer validate [--rpc] [--blocktime=N] ") } + common.AverageSecondsPerBlock = *blocktime + // 2) Private key keyFile, err := os.Open(validateCmd.Arg(1)) if err != nil { diff --git a/packages/arb-validator/cmd/rollupServer/rollupServer.go b/packages/arb-validator/cmd/rollupServer/rollupServer.go index f252a25cd1..501a1e65bc 100644 --- a/packages/arb-validator/cmd/rollupServer/rollupServer.go +++ b/packages/arb-validator/cmd/rollupServer/rollupServer.go @@ -129,15 +129,18 @@ func validateRollupChain() error { validateCmd := flag.NewFlagSet("validate", flag.ExitOnError) rpcEnable := validateCmd.Bool("rpc", false, "rpc") + blocktime := validateCmd.Int64("blocktime", 2, "blocktime=N") err := validateCmd.Parse(os.Args[2:]) if err != nil { return err } if validateCmd.NArg() != 5 { - return errors.New("usage: rollupServer validate [--rpc] ") + return errors.New("usage: rollupServer validate [--rpc] [--blocktime=N] ") } + common.AverageSecondsPerBlock = *blocktime + // 2) Private key keyFile, err := os.Open(validateCmd.Arg(1)) if err != nil { From 8110186e43df1f52c3906df85718d4a058f32a5f Mon Sep 17 00:00:00 2001 From: Ed Felten Date: Sun, 2 Feb 2020 16:28:49 -0500 Subject: [PATCH 2/7] Make opinion thread wake up more often --- packages/arb-validator/rollup/opinionThread.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/arb-validator/rollup/opinionThread.go b/packages/arb-validator/rollup/opinionThread.go index 7cf9d7f799..a164c45dfa 100644 --- a/packages/arb-validator/rollup/opinionThread.go +++ b/packages/arb-validator/rollup/opinionThread.go @@ -61,7 +61,7 @@ func (pa *preparedAssertion) Clone() *preparedAssertion { func (chain *ChainObserver) startOpinionUpdateThread(ctx context.Context) { go func() { - ticker := time.NewTicker(common.NewTimeBlocksInt(4).Duration()) + ticker := time.NewTicker(common.NewTimeBlocksInt(2).Duration()) assertionPreparedChan := make(chan *preparedAssertion, 20) preparingAssertions := make(map[common.Hash]bool) preparedAssertions := make(map[common.Hash]*preparedAssertion) From 2e0c9318c70b57bf3a1e7278005775dc3f599657 Mon Sep 17 00:00:00 2001 From: Ed Felten Date: Mon, 3 Feb 2020 08:16:18 -0500 Subject: [PATCH 3/7] Rationalize ticks/blocks/Duration conversions --- packages/arb-util/common/timeblocks.go | 4 ++++ packages/arb-util/common/timeticks.go | 24 +++++++++---------- .../cmd/evilRollupServer/evilRollupServer.go | 3 ++- .../cmd/rollupServer/rollupServer.go | 3 ++- .../arb-validator/rollup/opinionThread.go | 8 +++---- 5 files changed, 24 insertions(+), 18 deletions(-) diff --git a/packages/arb-util/common/timeblocks.go b/packages/arb-util/common/timeblocks.go index d6097d6999..6de5ae3787 100644 --- a/packages/arb-util/common/timeblocks.go +++ b/packages/arb-util/common/timeblocks.go @@ -39,6 +39,10 @@ func (tb *TimeBlocks) AsInt() *big.Int { return (*big.Int)(tb) } +func BlocksFromSeconds(seconds int64) *TimeBlocks { + return (*TimeBlocks)(big.NewInt(int64(time.Duration(seconds) * time.Second / AverageDurationPerBlock))) +} + func (tb *TimeBlocks) Duration() time.Duration { return TimeFromBlockNum(tb).Duration() } diff --git a/packages/arb-util/common/timeticks.go b/packages/arb-util/common/timeticks.go index 5050c460bb..fcf2d5b5eb 100644 --- a/packages/arb-util/common/timeticks.go +++ b/packages/arb-util/common/timeticks.go @@ -21,26 +21,22 @@ import ( "time" ) -var AverageSecondsPerBlock = int64(2) +const ( + TicksPerBlock = int64(13000) +) + +var AverageDurationPerBlock time.Duration = time.Second * 2 type TimeTicks struct { Val *big.Int } -var _timeConversionFactor *big.Int -var _timeTicksPerSecond *big.Int - -func init() { - _timeTicksPerSecond = big.NewInt(1000) - _timeConversionFactor = new(big.Int).Mul(big.NewInt(13), _timeTicksPerSecond) -} - func TimeFromBlockNum(blockNum *TimeBlocks) TimeTicks { - return TimeTicks{new(big.Int).Mul(_timeConversionFactor, blockNum.AsInt())} + return TimeTicks{new(big.Int).Mul(big.NewInt(TicksPerBlock), blockNum.AsInt())} } func TimeFromSeconds(seconds int64) TimeTicks { - return TimeTicks{new(big.Int).Mul(_timeTicksPerSecond, big.NewInt(seconds))} + return TimeTicks{big.NewInt(int64(time.Duration(seconds*TicksPerBlock) * time.Second / AverageDurationPerBlock))} } func (rt TimeTicks) Add(rt2 TimeTicks) TimeTicks { @@ -52,7 +48,11 @@ func (rt TimeTicks) Cmp(rt2 TimeTicks) int { } func (rt TimeTicks) Duration() time.Duration { - return time.Millisecond * time.Duration(AverageSecondsPerBlock*rt.Val.Int64()/13) + return time.Duration(rt.Val.Int64()) * AverageDurationPerBlock / time.Duration(TicksPerBlock) +} + +func (rt TimeTicks) Clone() TimeTicks { + return TimeTicks{new(big.Int).Set(rt.Val)} } func (rt TimeTicks) MarshalToBuf() *TimeTicksBuf { diff --git a/packages/arb-validator/cmd/evilRollupServer/evilRollupServer.go b/packages/arb-validator/cmd/evilRollupServer/evilRollupServer.go index e9d72a4a15..c3fcba8b62 100644 --- a/packages/arb-validator/cmd/evilRollupServer/evilRollupServer.go +++ b/packages/arb-validator/cmd/evilRollupServer/evilRollupServer.go @@ -27,6 +27,7 @@ import ( "math/big" "os" "strings" + "time" "github.com/offchainlabs/arbitrum/packages/arb-validator/rollupmanager" @@ -141,7 +142,7 @@ func validateRollupChain() error { return errors.New("usage: rollupServer validate [--rpc] [--blocktime=N] ") } - common.AverageSecondsPerBlock = *blocktime + common.AverageDurationPerBlock = time.Duration(*blocktime) * time.Second // 2) Private key keyFile, err := os.Open(validateCmd.Arg(1)) diff --git a/packages/arb-validator/cmd/rollupServer/rollupServer.go b/packages/arb-validator/cmd/rollupServer/rollupServer.go index 501a1e65bc..985e785e31 100644 --- a/packages/arb-validator/cmd/rollupServer/rollupServer.go +++ b/packages/arb-validator/cmd/rollupServer/rollupServer.go @@ -25,6 +25,7 @@ import ( "log" "os" "strings" + "time" "github.com/offchainlabs/arbitrum/packages/arb-validator/rollupmanager" @@ -139,7 +140,7 @@ func validateRollupChain() error { return errors.New("usage: rollupServer validate [--rpc] [--blocktime=N] ") } - common.AverageSecondsPerBlock = *blocktime + common.AverageDurationPerBlock = time.Duration(*blocktime) * time.Second // 2) Private key keyFile, err := os.Open(validateCmd.Arg(1)) diff --git a/packages/arb-validator/rollup/opinionThread.go b/packages/arb-validator/rollup/opinionThread.go index a164c45dfa..b2d13f6b1f 100644 --- a/packages/arb-validator/rollup/opinionThread.go +++ b/packages/arb-validator/rollup/opinionThread.go @@ -49,7 +49,7 @@ func (pa *preparedAssertion) Clone() *preparedAssertion { leafHash: pa.leafHash, prevPrevLeafHash: pa.prevPrevLeafHash, prevDataHash: pa.prevDataHash, - prevDeadline: common.TimeTicks{new(big.Int).Set(pa.prevDeadline.Val)}, + prevDeadline: pa.prevDeadline.Clone(), prevChildType: pa.prevChildType, beforeState: pa.beforeState.Clone(), params: pa.params.Clone(), @@ -237,13 +237,13 @@ func (chain *ChainObserver) prepareAssertion() *preparedAssertion { currentHeight := chain.latestBlockId.Height.Clone() timeBoundsLength := new(big.Int).Sub(timeBounds.End.AsInt(), timeBounds.Start.AsInt()) runBlocks := new(big.Int).Div(timeBoundsLength, big.NewInt(10)) - runTicks := common.TimeFromBlockNum(common.NewTimeBlocks(runBlocks)) - log.Println("Asserting for up to", runTicks.Duration().Seconds(), "seconds") + runDuration := common.NewTimeBlocks(runBlocks).Duration() + log.Println("Asserting for up to", runBlocks, " blocks") chain.RUnlock() beforeHash := mach.Hash() - assertion, stepsRun := mach.ExecuteAssertion(maxSteps, timeBounds, messagesVal, runTicks.Duration()) + assertion, stepsRun := mach.ExecuteAssertion(maxSteps, timeBounds, messagesVal, runDuration) afterHash := mach.Hash() From 46a778df6c75b1aef63c636f32d1083c439c0f25 Mon Sep 17 00:00:00 2001 From: Ed Felten Date: Mon, 3 Feb 2020 09:13:27 -0500 Subject: [PATCH 4/7] Fix race condition --- packages/arb-validator/rollup/listener.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/arb-validator/rollup/listener.go b/packages/arb-validator/rollup/listener.go index e9077f65c9..69beefbde8 100644 --- a/packages/arb-validator/rollup/listener.go +++ b/packages/arb-validator/rollup/listener.go @@ -522,11 +522,14 @@ func (lis *ValidatorChainListener) InvalidNodeConfirmable(ctx context.Context, o func (lis *ValidatorChainListener) PrunableLeafs(ctx context.Context, observer *ChainObserver, params []pruneParams) { // Anyone can prune a leaf for _, prune := range params { + lis.Lock() _, alreadySent := lis.broadcastLeafPrunes[prune.leafHash] if alreadySent { + lis.Unlock() continue } lis.broadcastLeafPrunes[prune.leafHash] = true + lis.Unlock() pruneCopy := prune.Clone() go func() { lis.actor.PruneLeaf( From 241fcdb9ce20022769bff3dccbfe0cfb69c8f85d Mon Sep 17 00:00:00 2001 From: Ed Felten Date: Tue, 4 Feb 2020 11:09:23 -0500 Subject: [PATCH 5/7] Switch to tick=milliblock --- .../contracts/libraries/RollupTime.sol | 2 +- packages/arb-util/common/timeblocks.go | 10 ++++++++ packages/arb-util/common/timeticks.go | 23 ++++++++----------- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/packages/arb-bridge-eth/contracts/libraries/RollupTime.sol b/packages/arb-bridge-eth/contracts/libraries/RollupTime.sol index d9ac63d379..33a287ef3a 100644 --- a/packages/arb-bridge-eth/contracts/libraries/RollupTime.sol +++ b/packages/arb-bridge-eth/contracts/libraries/RollupTime.sol @@ -18,7 +18,7 @@ pragma solidity ^0.5.3; library RollupTime { - uint256 constant TICKS_PER_BLOCK = 13000; // 1 tick ~= 1 millisecond + uint256 constant TICKS_PER_BLOCK = 1000; // 1 tick == 1 milliblock function ticksToBlocks(uint256 ticks) internal pure returns (uint128) { return uint128(ticks / TICKS_PER_BLOCK); diff --git a/packages/arb-util/common/timeblocks.go b/packages/arb-util/common/timeblocks.go index d6097d6999..fe232a1827 100644 --- a/packages/arb-util/common/timeblocks.go +++ b/packages/arb-util/common/timeblocks.go @@ -23,6 +23,16 @@ import ( type TimeBlocks big.Int +var _durationPerBlock time.Duration + +func init() { + _durationPerBlock = time.Duration(2) * time.Second +} + +func SetDurationPerBlock(d time.Duration) { + _durationPerBlock = d +} + func NewTimeBlocks(val *big.Int) *TimeBlocks { return (*TimeBlocks)(val) } diff --git a/packages/arb-util/common/timeticks.go b/packages/arb-util/common/timeticks.go index c1b089e2c2..e67d24c1fd 100644 --- a/packages/arb-util/common/timeticks.go +++ b/packages/arb-util/common/timeticks.go @@ -21,28 +21,23 @@ import ( "time" ) -const ( - AverageSecondsPerBlock = 2 -) - type TimeTicks struct { Val *big.Int } -var _timeConversionFactor *big.Int -var _timeTicksPerSecond *big.Int - -func init() { - _timeTicksPerSecond = big.NewInt(1000) - _timeConversionFactor = new(big.Int).Mul(big.NewInt(13), _timeTicksPerSecond) -} +const _timeTicksPerBlock = int64(1000) func TimeFromBlockNum(blockNum *TimeBlocks) TimeTicks { - return TimeTicks{new(big.Int).Mul(_timeConversionFactor, blockNum.AsInt())} + return TimeTicks{new(big.Int).Mul(big.NewInt(_timeTicksPerBlock), blockNum.AsInt())} } func TimeFromSeconds(seconds int64) TimeTicks { - return TimeTicks{new(big.Int).Mul(_timeTicksPerSecond, big.NewInt(seconds))} + return TimeTicks{ + new(big.Int).Div( + new(big.Int).Mul(big.NewInt(_timeTicksPerBlock), big.NewInt(int64(time.Duration(seconds)*time.Second))), + big.NewInt(int64(_durationPerBlock)), + ), + } } func (rt TimeTicks) Add(rt2 TimeTicks) TimeTicks { @@ -54,7 +49,7 @@ func (rt TimeTicks) Cmp(rt2 TimeTicks) int { } func (rt TimeTicks) Duration() time.Duration { - return time.Millisecond * time.Duration(AverageSecondsPerBlock*rt.Val.Int64()/13) + return _durationPerBlock * time.Duration(rt.Val.Int64()) / time.Duration(_timeTicksPerBlock) } func (rt TimeTicks) MarshalToBuf() *TimeTicksBuf { From 99258e774fb3369ea0f2e141b8a0ecdb6f1bd2f0 Mon Sep 17 00:00:00 2001 From: Ed Felten Date: Tue, 4 Feb 2020 14:47:53 -0500 Subject: [PATCH 6/7] Finish converting to tick==milliblock --- .../arb-provider-ethers/src/lib/abi/ArbRollupFactory.ts | 2 +- packages/arb-util/common/timeblocks.go | 6 +++++- packages/arb-util/common/timeticks.go | 6 ++++-- .../cmd/evilRollupServer/evilRollupServer.go | 2 +- packages/arb-validator/cmd/rollupServer/rollupServer.go | 4 ++-- .../ethbridge/executionchallenge/executionchallenge.go | 4 ++-- .../ethbridge/messageschallenge/messageschallenge.go | 4 ++-- .../ethbridge/pendingtopchallenge/pendingtopchallenge.go | 4 ++-- packages/arb-validator/ethbridge/rollup/arbrollup.go | 8 ++++---- packages/arb-validator/rollup/opinionThread.go | 1 + 10 files changed, 24 insertions(+), 17 deletions(-) diff --git a/packages/arb-provider-ethers/src/lib/abi/ArbRollupFactory.ts b/packages/arb-provider-ethers/src/lib/abi/ArbRollupFactory.ts index 4f7cc24a42..f5f8657f19 100644 --- a/packages/arb-provider-ethers/src/lib/abi/ArbRollupFactory.ts +++ b/packages/arb-provider-ethers/src/lib/abi/ArbRollupFactory.ts @@ -837,4 +837,4 @@ const _abi = [ ]; const _bytecode = - '0x608060405234801561001057600080fd5b506143b1806100206000396000f3fe60806040526004361061011f5760003560e01c8063badb3f14116100a0578063d684f94b11610064578063d684f94b14610909578063d6e51259146109d5578063dbad0a3914610b08578063e0620d6414610bd3578063ef5f7cb914610c915761011f565b8063badb3f141461065d578063bbc2cc0014610700578063ce2dbd3814610745578063d16c305d146108c3578063d489113a146108f45761011f565b806365f7f80d116100e757806365f7f80d146103335780636bc3cd221461035a57806379d1120b1461039d5780637cfaaf6714610423578063bac5963f1461049e5761011f565b8063113ec9d81461012457806333554032146101b157806357ca6d1b146102915780635dbaf68b146102cf5780636177fd1814610300575b600080fd5b34801561013057600080fd5b506101af6004803603604081101561014757600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561017157600080fd5b82018360208201111561018357600080fd5b803590602001918460208302840111600160201b831117156101a457600080fd5b509092509050610d63565b005b3480156101bd57600080fd5b506101af600480360360808110156101d457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561020357600080fd5b82018360208201111561021557600080fd5b803590602001918460208302840111600160201b8311171561023657600080fd5b919390929091602081019035600160201b81111561025357600080fd5b82018360208201111561026557600080fd5b803590602001918460208302840111600160201b8311171561028657600080fd5b509092509050610e54565b34801561029d57600080fd5b506102bb600480360360208110156102b457600080fd5b5035610fac565b604080519115158252519081900360200190f35b3480156102db57600080fd5b506102e4610fc4565b604080516001600160a01b039092168252519081900360200190f35b34801561030c57600080fd5b506102bb6004803603602081101561032357600080fd5b50356001600160a01b0316610fd3565b34801561033f57600080fd5b50610348610ff0565b60408051918252519081900360200190f35b34801561036657600080fd5b506101af6004803603606081101561037d57600080fd5b506001600160a01b03813581169160208101359091169060400135610ff6565b3480156103a957600080fd5b506101af60048036036101208110156103c157600080fd5b508035906001600160801b036020820135811691604081013582169167ffffffffffffffff606083013581169260808101359091169160a082013516906001600160a01b0360c082013581169160e08101358216916101009091013516611152565b34801561042f57600080fd5b506101af6004803603602081101561044657600080fd5b810190602081018135600160201b81111561046057600080fd5b82018360208201111561047257600080fd5b803590602001918460208302840111600160201b8311171561049357600080fd5b509092509050611194565b3480156104aa57600080fd5b506101af60048036036101a08110156104c257600080fd5b6040805180820182526001600160a01b0384358116946020810135909116938382013593606083013593918301929160c083019160808401906002908390839080828437600092019190915250506040805180820182529295949381810193925090600290839083908082843760009201919091525091949392602081019250359050600160201b81111561055657600080fd5b82018360208201111561056857600080fd5b803590602001918460208302840111600160201b8311171561058957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105d857600080fd5b8201836020820111156105ea57600080fd5b803590602001918460208302840111600160201b8311171561060b57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050823593505050602081013590604001356001600160801b03166111d5565b34801561066957600080fd5b506101af600480360360c081101561068057600080fd5b6001600160a01b03823516916020810135916040820135916060810135916080820135919081019060c0810160a0820135600160201b8111156106c257600080fd5b8201836020820111156106d457600080fd5b803590602001918460208302840111600160201b831117156106f557600080fd5b50909250905061177b565b34801561070c57600080fd5b506107156118f6565b60408051948552602085019390935267ffffffffffffffff91821684840152166060830152519081900360800190f35b34801561075157600080fd5b506101af600480360360e081101561076857600080fd5b81359190810190604081016020820135600160201b81111561078957600080fd5b82018360208201111561079b57600080fd5b803590602001918460018302840111600160201b831117156107bc57600080fd5b919390928235926020810135929190606081019060400135600160201b8111156107e557600080fd5b8201836020820111156107f757600080fd5b803590602001918460208302840111600160201b8311171561081857600080fd5b919390929091602081019035600160201b81111561083557600080fd5b82018360208201111561084757600080fd5b803590602001918460208302840111600160201b8311171561086857600080fd5b919390929091602081019035600160201b81111561088557600080fd5b82018360208201111561089757600080fd5b803590602001918460208302840111600160201b831117156108b857600080fd5b509092509050611917565b3480156108cf57600080fd5b506108d8611ad1565b604080516001600160801b039092168252519081900360200190f35b34801561090057600080fd5b506102e4611ae0565b34801561091557600080fd5b506101af600480360361026081101561092d57600080fd5b610120820135906101408301359063ffffffff610160850135169067ffffffffffffffff6101808601358116916101a08701916101e0880135916102008901351515916102208a013516908901896102608101610240820135600160201b81111561099757600080fd5b8201836020820111156109a957600080fd5b803590602001918460208302840111600160201b831117156109ca57600080fd5b509092509050611aef565b3480156109e157600080fd5b506101af600480360360e08110156109f857600080fd5b81359160208101359160408201359160608101359181019060a081016080820135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460208302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460208302840111600160201b83111715610aad57600080fd5b919390929091602081019035600160201b811115610aca57600080fd5b820183602082011115610adc57600080fd5b803590602001918460208302840111600160201b83111715610afd57600080fd5b509092509050611d1e565b348015610b1457600080fd5b506101af60048036036040811015610b2b57600080fd5b810190602081018135600160201b811115610b4557600080fd5b820183602082011115610b5757600080fd5b803590602001918460208302840111600160201b83111715610b7857600080fd5b919390929091602081019035600160201b811115610b9557600080fd5b820183602082011115610ba757600080fd5b803590602001918460208302840111600160201b83111715610bc857600080fd5b509092509050611e34565b6101af60048036036040811015610be957600080fd5b810190602081018135600160201b811115610c0357600080fd5b820183602082011115610c1557600080fd5b803590602001918460208302840111600160201b83111715610c3657600080fd5b919390929091602081019035600160201b811115610c5357600080fd5b820183602082011115610c6557600080fd5b803590602001918460208302840111600160201b83111715610c8657600080fd5b509092509050611f45565b348015610c9d57600080fd5b506101af60048036036060811015610cb457600080fd5b81359190810190604081016020820135600160201b811115610cd557600080fd5b820183602082011115610ce757600080fd5b803590602001918460208302840111600160201b83111715610d0857600080fd5b919390929091602081019035600160201b811115610d2557600080fd5b820183602082011115610d3757600080fd5b803590602001918460208302840111600160201b83111715610d5857600080fd5b509092509050612058565b60408051808201909152600e81526d0a48a86ac9e9888be988a9c8ea8960931b602082015281610e115760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610dd6578181015183820152602001610dbe565b50505050905090810190601f168015610e035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610e4f8383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061225192505050565b505050565b6000610e5f336122f0565b905082826000818110610e6e57fe5b9050602002013585856000818110610e8257fe5b9050602002013514158015610ed95750610e9a610ff0565b610ed78787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b145b8015610f20575080610f1e8785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b145b604051806040016040528060148152602001732922a1a7ab2fa1a7a7232624a1aa2fa82927a7a360611b81525090610f995760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50610fa387612397565b50505050505050565b60008181526004602052604090205460ff165b919050565b6006546001600160a01b031681565b6001600160a01b0316600090815260086020526040902054151590565b60055490565b336000908152600a6020908152604091829020548251808401909352600f83526e2922a9afa1a420a62fa9a2a72222a960891b9183019190915260ff1661107e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50336000908152600a60205260408120805460ff1916905561109f84612420565b6007546040519192506001600160a01b0386169160026001600160801b039283160490911680156108fc02916000818181858888f193505050501580156110ea573d6000803e3d6000fd5b5060018101805460ff60801b19169055611103836124aa565b604080513381526001600160a01b03808716602083015285168183015290517f468aa7d460319b17466ca163bca353a0c62fff0d7d0fa287f634ef305d946f299181900360600190a150505050565b6111608989898989866124eb565b61116a84836125df565b5050600b80546001600160a01b0319166001600160a01b0392909216919091179055505050505050565b6111d13383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061225192505050565b5050565b60006111e08c612420565b905060006111ed8c612420565b60018301549091508a90611209906001600160801b0316612715565b106040518060400160405280600d81526020016c53544b315f444541444c494e4560981b8152509061127c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060018101548a90611296906001600160801b0316612715565b106040518060400160405280600d81526020016c53544b325f444541444c494e4560981b815250906113095760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600182015460408051808201909152600c81526b14d512cc57d25397d0d2105360a21b602082015290600160801b900460ff16156113895760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600181015460408051808201909152600c81526b14d512cc57d25397d0d2105360a21b602082015290600160801b900460ff16156114095760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506020808a01518a5160408051808201909152600a8152692a2ca822afa7a92222a960b11b93810193909352116114815760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5081546114a96114a38d8d898e600060200201518e60005b602002015161271c565b89612380565b146040518060400160405280600c81526020016b20a9a9a2a92a2fa82927a7a360a11b8152509061151b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50805461154c6115468d8d611539896001600160801b038a16612784565b60208f01518e6001611499565b88612380565b146040518060400160405280600a81526020016921a420a62fa82927a7a360b11b815250906115bc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060018260010160106101000a81548160ff02191690831515021790555060018160010160106101000a81548160ff0219169083151502179055506000600660009054906101000a90046001600160a01b03166001600160a01b031663865da1c28f8f87898f60016002811061162e57fe5b60200201516040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200195505050505050602060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b505050506040513d60208110156116dc57600080fd5b50516001600160a01b0381166000908152600a60205260409020805460ff191660019081179091559091507f6c69257ddf620994c6fb9e5304db0e5563db3765bee033ddd61b6a1caa7d043f908f908f908d9060209081029190910151604080516001600160a01b0395861681529385169284019290925282820152918416606082015290519081900360800190a15050505050505050505050505050565b6000611786336122f0565b90506000611797828989898961271c565b905060006117d88286868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506117e381610fac565b604051806040016040528060138152602001722922a1a7ab2fa222a0a22624a722afa622a0a360691b8152509061185b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5061186589612715565b431015604051806040016040528060138152602001725245434f565f444541444c494e455f54494d4560681b815250906118e05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506118ea8a612397565b50505050505050505050565b60015460025460035467ffffffffffffffff80821691600160401b90041684565b611a018b61196361195d8d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127b092505050565b8b612784565b60038a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061286392505050565b60005460405163e4eb8c6360e01b8152602060048201908152602482018c90526001600160a01b039092169163e4eb8c63918d918d918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b158015611a7857600080fd5b505af1158015611a8c573d6000803e3d6000fd5b5050604080518b815290517f7c4ea4965dec519bdc58e57940c14ed469185c38f401798f2f38ed6d0afb1fd39350908190036020019150a15050505050505050505050565b6007546001600160801b031690565b6000546001600160a01b031681565b600080611c3d6040518061022001604052808f600060098110611b0e57fe5b602002013581526020018f600160098110611b2557fe5b602002013581526020018e81526020018f600260098110611b4257fe5b602002013581526020018d81526020018f600360098110611b5f57fe5b602002013581526020018c63ffffffff1681526020018b67ffffffffffffffff1681526020018a600280602002604051908101604052809291908260026020028082843760009201919091525050508152602081018a90526040018f6004602002013581526020018f600560098110611bd457fe5b602002013581526020018f600660098110611beb57fe5b6020020135815260200188151581526020018767ffffffffffffffff1681526020018f600760098110611c1a57fe5b602002013581526020018f600860098110611c3157fe5b60200201359052612994565b915091506000611c4c336122f0565b905082611c8c8287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b146040518060400160405280601181526020017026a0a5a2afa9aa20a5a2a92fa82927a7a360791b81525090611d035760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50611d0e3383612ebe565b5050505050505050505050505050565b60408051808201909152600d81526c434f4e465f494e565f5459504560981b602082015260038910611d915760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506118ea8a8a8a8a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061286392505050565b6000611e3f336122f0565b90506000611e808287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506000611ec18286868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b9050611ecc81610fac565b6040518060400160405280600981526020016826a7ab22afa622a0a360b91b81525090611f3a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50610fa33383612ebe565b6000611f8b611f52610ff0565b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506000611fcc8285858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b9050611fd781610fac565b6040518060400160405280600a815260200169282620a1a2afa622a0a360b11b815250906120465760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5061205082612f17565b505050505050565b60006120978686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506120a281610fac565b6040518060400160405280600a81526020016928292aa722afa622a0a360b11b815250906121115760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b508282600081811061211f57fe5b905060200201358585600081811061213357fe5b905060200201351415801561218a575061214b610ff0565b6121888785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b145b6040518060400160405280600e81526020016d141495539157d0d3d391931250d560921b815250906121fd5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600081815260046020908152604091829020805460ff19169055815183815291517f3d3e2ada9638548d1bb115fd766ef675213d953efe8d433bbd8d6718f44909509281900390910190a1505050505050565b600061225c336122f0565b9050612266610ff0565b6122708284612380565b146040518060400160405280601081526020016f2922a1a7ab2fa820aa242fa82927a7a360811b815250906122e65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50610e4f83612397565b6001600160a01b0381166000908152600860209081526040808320548151808301909252600a82526924a72b2fa9aa20a5a2a960b11b92820192909252816123795760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5092915050565b60006123908383600085516130c5565b9392505050565b6123a0816124aa565b6007546040516001600160a01b038316916001600160801b031680156108fc02916000818181858888f193505050501580156123e0573d6000803e3d6000fd5b50604080516001600160a01b038316815290517f953ab9eece73c907353307064109cf873462177a0e358e463fd89f5b206daa6c9181900360200190a150565b6001600160a01b038116600090815260086020908152604080832080548251808401909352600a83526924a72b2fa9aa20a5a2a960b11b93830193909352916123795760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b6001600160a01b03166000908152600860205260408120908155600101805470ffffffffffffffffffffffffffffffffff1916905560098054600019019055565b600080546001600160a01b0319166001600160a01b0383161781556125198761251261312f565b60006131a2565b9050600061252a818080808661271c565b6005819055600081815260046020908152604091829020805460ff191660019081179091556001600160801b03808c1690915589166002556003805467ffffffffffffffff898116600160401b026fffffffffffffffff000000000000000019918c1667ffffffffffffffff19909316929092171617905581518b815291519293507f4ac0014773275a3dfb58c58539631006301de41998cce7c4f8698d297c88bb2d92918290030190a15050505050505050565b60065460408051808201909152600a815269494e49545f545749434560b01b6020820152906001600160a01b0316156126595760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060408051808201909152600c81526b494e49545f4e4f4e5a45524f60a01b60208201526001600160a01b0382166126d25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600680546001600160a01b0319166001600160a01b0392909216919091179055600780546001600160801b0319166001600160801b0392909216919091179055565b6132c80290565b6040805160208082018490528183018790526060820186905260808083018690528351808403909101815260a08301845280519082012060c0830189905260e08084019190915283518084039091018152610100909201909252805191012095945050505050565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b8051600090819081908190815b81811015612858576127cf87826131d9565b919650909350905084612822576040805162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7574707574206d65737361676560501b604482015290519081900360640190fd5b838360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093506127bd565b509195945050505050565b6000612879612870610ff0565b8989898961271c565b90508761288543612715565b101560405180604001604052806009815260200168434f4e465f54494d4560b81b815250906128f55760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506000612905828a878787613230565b9050600081116040518060400160405280600f81526020016e21a7a7232fa420a9afa9aa20a5a2a960891b8152509061297f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50612989826134db565b505050505050505050565b60008060006129b08460000151856020015186604001516131a2565b905060006129d7856060015186608001518760a001518860c0015163ffffffff168661271c565b90506129e281610fac565b6040518060400160405280600981526020016826a0a5a2afa622a0a360b91b81525090612a505760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b508451612a5c90613516565b158015612a7157508451612a6f9061351c565b155b6040518060400160405280600881526020016726a0a5a2afa92aa760c11b81525090612ade5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060035460e086015160408051808201909152600981526804d414b455f535445560bc1b60208201529167ffffffffffffffff90811691161115612b635760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506003546101008601518051600160401b90920467ffffffffffffffff169091016001600160801b031690600160200201516001600160801b03161115612ba957600080fd5b612bb7856101000151613520565b604051806040016040528060098152602001684d414b455f54494d4560b81b81525090612c255760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506101208501511580612c3a5750846101a001515b6040518060400160405280600d81526020016c4d414b455f4d4553534147455360981b81525090612cac5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060008054604080516308d74f6960e11b8152815184936001600160a01b0316926311ae9ed2926004808201939182900301818787803b158015612cef57600080fd5b505af1158015612d03573d6000803e3d6000fd5b505050506040513d6040811015612d1957600080fd5b50805160209091015160408901519193509150612d3d90829063ffffffff61355016565b87610120015111156040518060400160405280601081526020016f135052d157d35154d4d051d157d0d39560821b81525090612dba5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506001546002546101c08901516000919067ffffffffffffffff1681612ddc57fe5b049050600082612deb43612715565b0190508960800151811015612e01575060808901515b81016000612e148b888489898d8a613592565b90506000612e258c89858c896135e3565b90506000612e378d8a868d8a8a613642565b90506000612e468e8b876136cc565b6000858152600460205260408082208054600160ff19918216811790925587845282842080548216831790558684528284208054821683179055848452828420805482169092179091558d83529120805490911690559050612eaa8e8b8b8b61370e565b989b50979950505050505050505050915091565b6001600160a01b0382166000818152600860209081526040918290208490558151928352820183905280517fbe690ac5fe353c094bcc6f187eeb841c0ca61b6edf32c142eadad655b7d173f49281900390910190a15050565b60078054604080518082019091529182526614d512d7d0535560ca1b60208301526001600160801b03163414612f8e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5033600090815260086020908152604091829020548251808401909352600c83526b105314911657d4d51052d15160a21b91830191909152156130125760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50604080516060810182528281526001600160801b03438116602080840191825260008486018181523380835260088452918790209551865592516001958601805494511515600160801b0260ff60801b19929096166001600160801b031990951694909417169390931790915560098054909301909255825190815290810183905281517fcbafbb223ed21c82af9e2ad20cdfdf55d3263d06f9a65b3f70da613f32d81f88929181900390910190a150565b600084835b8381101561312357818682815181106130df57fe5b6020026020010151604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120915080806001019150506130ca565b5090505b949350505050565b6040805160008082526020808301808552600360f81b948401948552835192946003938593919260418501929091028083838a5b8381101561317b578181015183820152602001613163565b50505050905001925050506040516020818303038152906040528051906020012091505090565b6040805160208082019590955280820193909352606080840192909252805180840390920182526080909201909152805191012090565b60008060008060006131e9614315565b6131f3888861383a565b92509250925082613211575060009450859350849250613229915050565b60018261321d83613989565b51919750955093505050505b9250925092565b825160095460408051808201909152600a81526910d210d2d7d0d3d5539560b21b60208201526000929182146132a75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50825181600101146040518060400160405280600c81526020016b4348434b5f4f46465345545360a01b815250906133205760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600080805b838110156134ce57600088828151811061333c57fe5b60200260200101519050836bffffffffffffffffffffffff19168160601b6bffffffffffffffffffffffff1916116040518060400160405280600a81526020016921a421a5afa7a92222a960b11b815250906133d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060006133e582612420565b60018101549091508b90613401906001600160801b0316612715565b10156134c05780600001546134418d8b8b878151811061341d57fe5b60200260200101518c886001018151811061343457fe5b60200260200101516130c5565b146040518060400160405280601181526020017021a421a5afa9aa20a5a2a92fa82927a7a360791b815250906134b85760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506001909301925b5060601b9250600101613326565b5098975050505050505050565b60058190556040805182815290517f9d13d0ad532ca8e545a3b66828cb99a18c3bc98e2a50b4db1990a033fdba6f639181900360200190a150565b60011490565b1590565b80516000906001600160801b0316431080159061354a575060208201516001600160801b03164311155b92915050565b600061239083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613abf565b6000806135b2896101400151878b61012001518c604001510188036131a2565b90506135d688886135ce846135c76001612715565b8801612784565b60008861271c565b9998505050505050505050565b60008061360d87602001518861014001516135fc61312f565b8a61016001518b6101200151613b19565b905060006136268261361f6001612715565b8601612784565b905061363687878360018961271c565b98975050505050505050565b60008061365e88600001518961010001518a6101600151613b5f565b905060006136908961018001518a6101a001518b6101c001516000801b8d6101e001516000801b8f6102000151613bb1565b905060006136a38a60e001518484613c14565b90506136be89896136b684898b01612784565b60028b61271c565b9a9950505050505050505050565b600061312783836136e7876101e00151886102000151612784565b60036137098961018001518a61014001518b61012001518c60400151016131a2565b61271c565b7f5761ea2104e5d52e617adb7f0bfc8970ffa1d06f57d28cb2bb3a034532c970356040518060e00160405280858152602001848152602001866101400151815260200186610160015181526020018661018001518152602001866101e00151815260200186610200015181525082866101200151876101000151886101c001518960e001518a6101a001516040518088600760200280838360005b838110156137c15781810151838201526020016137a9565b5050505090500187815260200186815260200185600260200280838360005b838110156137f85781810151838201526020016137e0565b50505067ffffffffffffffff9788169390910192835250509290931660208301521515604080830191909152519081900360600195509350505050a150505050565b600080613845614315565b845184106138655760008461385a6000613c5c565b925092509250613229565b600080859050600087828151811061387957fe5b016020015160019092019160f81c90506000613893614343565b60ff83166138c7576138a58a85613cda565b9196509450915084846138b784613c5c565b9750975097505050505050613229565b60ff8316600114156138ef576138dd8a85613d2d565b9196509450905084846138b783613e8e565b60ff831660021415613917576139058a85613cda565b9196509450915084846138b784613eee565b600360ff84161080159061392e5750600c60ff8416105b156139695760021983016060613945828d88613f6c565b9198509650905086866139578361402a565b99509950995050505050505050613229565b6000806139766000613c5c565b9199509750955050505050509250925092565b61399161436a565b6060820151600c60ff909116106139e3576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207479706520636f646560781b604482015290519081900360640190fd5b606082015160ff16613a10576040518060200160405280613a0784600001516140da565b90529050610fbf565b606082015160ff1660011415613a57576040518060200160405280613a078460200151600001518560200151604001518660200151606001518760200151602001516140fe565b606082015160ff1660021415613a7c5750604080516020810190915281518152610fbf565b600360ff16826060015160ff1610158015613aa057506060820151600c60ff909116105b15613abd576040518060200160405280613a0784604001516141a6565bfe5b60008184841115613b115760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b505050900390565b60408051602080820197909752808201959095526060850193909352608084019190915260a0808401919091528151808403909101815260c09092019052805191012090565b815160209283015160408051808601969096526001600160801b0319608093841b81168783015291831b9091166050860152606080860193909352805180860390930183529301909252815191012090565b6040805160208082019990995296151560f81b8782015260c09590951b6001600160c01b031916604187015260498601939093526069850191909152608984015260a9808401919091528151808403909101815260c99092019052805191012090565b6040805160c09490941b6001600160c01b0319166020808601919091526028850193909352604880850192909252805180850390920182526068909301909252815191012090565b613c64614315565b604080516080808201835284825282519081018352600080825260208281018290528285018290526060830182905280840192909252835181815291820184529192830191613cc9565b613cb6614315565b815260200190600190039081613cae5790505b508152600060209091015292915050565b6000806000808551905084811080613cf457506020858203105b15613d09575060009250839150829050613229565b600160208601613d1f888863ffffffff6142f216565b935093509350509250925092565b600080613d38614343565b60008490506000868281518110613d4b57fe5b602001015160f81c60f81b60f81c905081806001019250506000878381518110613d7157fe5b016020015160019384019360f89190911c915060009060ff84161415613df8576000613d9b614315565b613da58b8761383a565b909750909250905081613de9575050604080516080810182526000808252602082018190529181018290526060810182905290975088965094506132299350505050565b613df281613989565b51925050505b6000613e0a8a8663ffffffff6142f216565b90506020850194508360ff1660011415613e56576040805160808101825260ff909416845260208401919091526001908301819052606083019190915295509193509091506132299050565b6040805160808101825260ff949094168452602084019190915260009083018190526060830152506001989297509550909350505050565b613e96614315565b604080516080810182526000808252602080830186905283518281529081018452919283019190613edd565b613eca614315565b815260200190600190039081613ec25790505b508152600160209091015292915050565b613ef6614315565b604080516080808201835284825282519081018352600080825260208281018290528285018290526060830182905280840192909252835181815291820184529192830191613f5b565b613f48614315565b815260200190600190039081613f405790505b508152600260209091015292915050565b60008060606000849050600060608860ff16604051908082528060200260200182016040528015613fb757816020015b613fa4614315565b815260200190600190039081613f9c5790505b50905060005b8960ff168160ff16101561401457613fd5898561383a565b8451859060ff8616908110613fe657fe5b6020908102919091010152945092508261400c5750600095508694509250614021915050565b600101613fbd565b5060019550919350909150505b93509350939050565b614032614315565b61403c825161430e565b61408d576040805162461bcd60e51b815260206004820152601a60248201527f5475706c65206d75737420686176652076616c69642073697a65000000000000604482015290519081900360640190fd5b5060408051608080820183526000808352835191820184528082526020828101829052828501829052606080840192909252830191909152918101839052915160030160ff169082015290565b60408051602080820193909352815180820384018152908201909152805191012090565b60008315614158575060408051600160f81b6020808301919091526001600160f81b031960f888901b1660218301526022820185905260428083018590528351808403909101815260629092019092528051910120613127565b5060408051600160f81b6020808301919091526001600160f81b031960f888901b16602183015260228083018590528351808403909101815260429092019092528051910120949350505050565b60006008825111156141f6576040805162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840e8eae0d8ca40d8cadccee8d60631b604482015290519081900360640190fd5b60608251604051908082528060200260200182016040528015614223578160200160208202803883390190505b50805190915060005b8181101561427f5761423c61436a565b61425886838151811061424b57fe5b6020026020010151613989565b9050806000015184838151811061426b57fe5b60209081029190910101525060010161422c565b508351600360ff160182604051602001808360ff1660ff1660f81b8152600101828051906020019060200280838360005b838110156142c85781810151838201526020016142b0565b50505050905001925050506040516020818303038152906040528051906020012092505050919050565b6000816020018351101561430557600080fd5b50016020015190565b6008101590565b60405180608001604052806000815260200161432f614343565b815260606020820152600060409091015290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160208101909152600081529056fea265627a7a72315820d5cfb6c38f76e4389ba51f23826a7391e63abce69072b301780ea98d8cbc9d2b64736f6c634300050f0032'; + '0x608060405234801561001057600080fd5b506143b1806100206000396000f3fe60806040526004361061011f5760003560e01c8063badb3f14116100a0578063d684f94b11610064578063d684f94b14610909578063d6e51259146109d5578063dbad0a3914610b08578063e0620d6414610bd3578063ef5f7cb914610c915761011f565b8063badb3f141461065d578063bbc2cc0014610700578063ce2dbd3814610745578063d16c305d146108c3578063d489113a146108f45761011f565b806365f7f80d116100e757806365f7f80d146103335780636bc3cd221461035a57806379d1120b1461039d5780637cfaaf6714610423578063bac5963f1461049e5761011f565b8063113ec9d81461012457806333554032146101b157806357ca6d1b146102915780635dbaf68b146102cf5780636177fd1814610300575b600080fd5b34801561013057600080fd5b506101af6004803603604081101561014757600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561017157600080fd5b82018360208201111561018357600080fd5b803590602001918460208302840111600160201b831117156101a457600080fd5b509092509050610d63565b005b3480156101bd57600080fd5b506101af600480360360808110156101d457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561020357600080fd5b82018360208201111561021557600080fd5b803590602001918460208302840111600160201b8311171561023657600080fd5b919390929091602081019035600160201b81111561025357600080fd5b82018360208201111561026557600080fd5b803590602001918460208302840111600160201b8311171561028657600080fd5b509092509050610e54565b34801561029d57600080fd5b506102bb600480360360208110156102b457600080fd5b5035610fac565b604080519115158252519081900360200190f35b3480156102db57600080fd5b506102e4610fc4565b604080516001600160a01b039092168252519081900360200190f35b34801561030c57600080fd5b506102bb6004803603602081101561032357600080fd5b50356001600160a01b0316610fd3565b34801561033f57600080fd5b50610348610ff0565b60408051918252519081900360200190f35b34801561036657600080fd5b506101af6004803603606081101561037d57600080fd5b506001600160a01b03813581169160208101359091169060400135610ff6565b3480156103a957600080fd5b506101af60048036036101208110156103c157600080fd5b508035906001600160801b036020820135811691604081013582169167ffffffffffffffff606083013581169260808101359091169160a082013516906001600160a01b0360c082013581169160e08101358216916101009091013516611152565b34801561042f57600080fd5b506101af6004803603602081101561044657600080fd5b810190602081018135600160201b81111561046057600080fd5b82018360208201111561047257600080fd5b803590602001918460208302840111600160201b8311171561049357600080fd5b509092509050611194565b3480156104aa57600080fd5b506101af60048036036101a08110156104c257600080fd5b6040805180820182526001600160a01b0384358116946020810135909116938382013593606083013593918301929160c083019160808401906002908390839080828437600092019190915250506040805180820182529295949381810193925090600290839083908082843760009201919091525091949392602081019250359050600160201b81111561055657600080fd5b82018360208201111561056857600080fd5b803590602001918460208302840111600160201b8311171561058957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105d857600080fd5b8201836020820111156105ea57600080fd5b803590602001918460208302840111600160201b8311171561060b57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050823593505050602081013590604001356001600160801b03166111d5565b34801561066957600080fd5b506101af600480360360c081101561068057600080fd5b6001600160a01b03823516916020810135916040820135916060810135916080820135919081019060c0810160a0820135600160201b8111156106c257600080fd5b8201836020820111156106d457600080fd5b803590602001918460208302840111600160201b831117156106f557600080fd5b50909250905061177b565b34801561070c57600080fd5b506107156118f6565b60408051948552602085019390935267ffffffffffffffff91821684840152166060830152519081900360800190f35b34801561075157600080fd5b506101af600480360360e081101561076857600080fd5b81359190810190604081016020820135600160201b81111561078957600080fd5b82018360208201111561079b57600080fd5b803590602001918460018302840111600160201b831117156107bc57600080fd5b919390928235926020810135929190606081019060400135600160201b8111156107e557600080fd5b8201836020820111156107f757600080fd5b803590602001918460208302840111600160201b8311171561081857600080fd5b919390929091602081019035600160201b81111561083557600080fd5b82018360208201111561084757600080fd5b803590602001918460208302840111600160201b8311171561086857600080fd5b919390929091602081019035600160201b81111561088557600080fd5b82018360208201111561089757600080fd5b803590602001918460208302840111600160201b831117156108b857600080fd5b509092509050611917565b3480156108cf57600080fd5b506108d8611ad1565b604080516001600160801b039092168252519081900360200190f35b34801561090057600080fd5b506102e4611ae0565b34801561091557600080fd5b506101af600480360361026081101561092d57600080fd5b610120820135906101408301359063ffffffff610160850135169067ffffffffffffffff6101808601358116916101a08701916101e0880135916102008901351515916102208a013516908901896102608101610240820135600160201b81111561099757600080fd5b8201836020820111156109a957600080fd5b803590602001918460208302840111600160201b831117156109ca57600080fd5b509092509050611aef565b3480156109e157600080fd5b506101af600480360360e08110156109f857600080fd5b81359160208101359160408201359160608101359181019060a081016080820135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460208302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460208302840111600160201b83111715610aad57600080fd5b919390929091602081019035600160201b811115610aca57600080fd5b820183602082011115610adc57600080fd5b803590602001918460208302840111600160201b83111715610afd57600080fd5b509092509050611d1e565b348015610b1457600080fd5b506101af60048036036040811015610b2b57600080fd5b810190602081018135600160201b811115610b4557600080fd5b820183602082011115610b5757600080fd5b803590602001918460208302840111600160201b83111715610b7857600080fd5b919390929091602081019035600160201b811115610b9557600080fd5b820183602082011115610ba757600080fd5b803590602001918460208302840111600160201b83111715610bc857600080fd5b509092509050611e34565b6101af60048036036040811015610be957600080fd5b810190602081018135600160201b811115610c0357600080fd5b820183602082011115610c1557600080fd5b803590602001918460208302840111600160201b83111715610c3657600080fd5b919390929091602081019035600160201b811115610c5357600080fd5b820183602082011115610c6557600080fd5b803590602001918460208302840111600160201b83111715610c8657600080fd5b509092509050611f45565b348015610c9d57600080fd5b506101af60048036036060811015610cb457600080fd5b81359190810190604081016020820135600160201b811115610cd557600080fd5b820183602082011115610ce757600080fd5b803590602001918460208302840111600160201b83111715610d0857600080fd5b919390929091602081019035600160201b811115610d2557600080fd5b820183602082011115610d3757600080fd5b803590602001918460208302840111600160201b83111715610d5857600080fd5b509092509050612058565b60408051808201909152600e81526d0a48a86ac9e9888be988a9c8ea8960931b602082015281610e115760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610dd6578181015183820152602001610dbe565b50505050905090810190601f168015610e035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610e4f8383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061225192505050565b505050565b6000610e5f336122f0565b905082826000818110610e6e57fe5b9050602002013585856000818110610e8257fe5b9050602002013514158015610ed95750610e9a610ff0565b610ed78787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b145b8015610f20575080610f1e8785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b145b604051806040016040528060148152602001732922a1a7ab2fa1a7a7232624a1aa2fa82927a7a360611b81525090610f995760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50610fa387612397565b50505050505050565b60008181526004602052604090205460ff165b919050565b6006546001600160a01b031681565b6001600160a01b0316600090815260086020526040902054151590565b60055490565b336000908152600a6020908152604091829020548251808401909352600f83526e2922a9afa1a420a62fa9a2a72222a960891b9183019190915260ff1661107e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50336000908152600a60205260408120805460ff1916905561109f84612420565b6007546040519192506001600160a01b0386169160026001600160801b039283160490911680156108fc02916000818181858888f193505050501580156110ea573d6000803e3d6000fd5b5060018101805460ff60801b19169055611103836124aa565b604080513381526001600160a01b03808716602083015285168183015290517f468aa7d460319b17466ca163bca353a0c62fff0d7d0fa287f634ef305d946f299181900360600190a150505050565b6111608989898989866124eb565b61116a84836125df565b5050600b80546001600160a01b0319166001600160a01b0392909216919091179055505050505050565b6111d13383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061225192505050565b5050565b60006111e08c612420565b905060006111ed8c612420565b60018301549091508a90611209906001600160801b0316612715565b106040518060400160405280600d81526020016c53544b315f444541444c494e4560981b8152509061127c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060018101548a90611296906001600160801b0316612715565b106040518060400160405280600d81526020016c53544b325f444541444c494e4560981b815250906113095760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600182015460408051808201909152600c81526b14d512cc57d25397d0d2105360a21b602082015290600160801b900460ff16156113895760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600181015460408051808201909152600c81526b14d512cc57d25397d0d2105360a21b602082015290600160801b900460ff16156114095760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506020808a01518a5160408051808201909152600a8152692a2ca822afa7a92222a960b11b93810193909352116114815760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5081546114a96114a38d8d898e600060200201518e60005b602002015161271c565b89612380565b146040518060400160405280600c81526020016b20a9a9a2a92a2fa82927a7a360a11b8152509061151b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50805461154c6115468d8d611539896001600160801b038a16612784565b60208f01518e6001611499565b88612380565b146040518060400160405280600a81526020016921a420a62fa82927a7a360b11b815250906115bc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060018260010160106101000a81548160ff02191690831515021790555060018160010160106101000a81548160ff0219169083151502179055506000600660009054906101000a90046001600160a01b03166001600160a01b031663865da1c28f8f87898f60016002811061162e57fe5b60200201516040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200195505050505050602060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b505050506040513d60208110156116dc57600080fd5b50516001600160a01b0381166000908152600a60205260409020805460ff191660019081179091559091507f6c69257ddf620994c6fb9e5304db0e5563db3765bee033ddd61b6a1caa7d043f908f908f908d9060209081029190910151604080516001600160a01b0395861681529385169284019290925282820152918416606082015290519081900360800190a15050505050505050505050505050565b6000611786336122f0565b90506000611797828989898961271c565b905060006117d88286868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506117e381610fac565b604051806040016040528060138152602001722922a1a7ab2fa222a0a22624a722afa622a0a360691b8152509061185b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5061186589612715565b431015604051806040016040528060138152602001725245434f565f444541444c494e455f54494d4560681b815250906118e05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506118ea8a612397565b50505050505050505050565b60015460025460035467ffffffffffffffff80821691600160401b90041684565b611a018b61196361195d8d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127b092505050565b8b612784565b60038a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061286392505050565b60005460405163e4eb8c6360e01b8152602060048201908152602482018c90526001600160a01b039092169163e4eb8c63918d918d918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b158015611a7857600080fd5b505af1158015611a8c573d6000803e3d6000fd5b5050604080518b815290517f7c4ea4965dec519bdc58e57940c14ed469185c38f401798f2f38ed6d0afb1fd39350908190036020019150a15050505050505050505050565b6007546001600160801b031690565b6000546001600160a01b031681565b600080611c3d6040518061022001604052808f600060098110611b0e57fe5b602002013581526020018f600160098110611b2557fe5b602002013581526020018e81526020018f600260098110611b4257fe5b602002013581526020018d81526020018f600360098110611b5f57fe5b602002013581526020018c63ffffffff1681526020018b67ffffffffffffffff1681526020018a600280602002604051908101604052809291908260026020028082843760009201919091525050508152602081018a90526040018f6004602002013581526020018f600560098110611bd457fe5b602002013581526020018f600660098110611beb57fe5b6020020135815260200188151581526020018767ffffffffffffffff1681526020018f600760098110611c1a57fe5b602002013581526020018f600860098110611c3157fe5b60200201359052612994565b915091506000611c4c336122f0565b905082611c8c8287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b146040518060400160405280601181526020017026a0a5a2afa9aa20a5a2a92fa82927a7a360791b81525090611d035760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50611d0e3383612ebe565b5050505050505050505050505050565b60408051808201909152600d81526c434f4e465f494e565f5459504560981b602082015260038910611d915760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506118ea8a8a8a8a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061286392505050565b6000611e3f336122f0565b90506000611e808287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506000611ec18286868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b9050611ecc81610fac565b6040518060400160405280600981526020016826a7ab22afa622a0a360b91b81525090611f3a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50610fa33383612ebe565b6000611f8b611f52610ff0565b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506000611fcc8285858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b9050611fd781610fac565b6040518060400160405280600a815260200169282620a1a2afa622a0a360b11b815250906120465760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5061205082612f17565b505050505050565b60006120978686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506120a281610fac565b6040518060400160405280600a81526020016928292aa722afa622a0a360b11b815250906121115760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b508282600081811061211f57fe5b905060200201358585600081811061213357fe5b905060200201351415801561218a575061214b610ff0565b6121888785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b145b6040518060400160405280600e81526020016d141495539157d0d3d391931250d560921b815250906121fd5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600081815260046020908152604091829020805460ff19169055815183815291517f3d3e2ada9638548d1bb115fd766ef675213d953efe8d433bbd8d6718f44909509281900390910190a1505050505050565b600061225c336122f0565b9050612266610ff0565b6122708284612380565b146040518060400160405280601081526020016f2922a1a7ab2fa820aa242fa82927a7a360811b815250906122e65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50610e4f83612397565b6001600160a01b0381166000908152600860209081526040808320548151808301909252600a82526924a72b2fa9aa20a5a2a960b11b92820192909252816123795760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5092915050565b60006123908383600085516130c5565b9392505050565b6123a0816124aa565b6007546040516001600160a01b038316916001600160801b031680156108fc02916000818181858888f193505050501580156123e0573d6000803e3d6000fd5b50604080516001600160a01b038316815290517f953ab9eece73c907353307064109cf873462177a0e358e463fd89f5b206daa6c9181900360200190a150565b6001600160a01b038116600090815260086020908152604080832080548251808401909352600a83526924a72b2fa9aa20a5a2a960b11b93830193909352916123795760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b6001600160a01b03166000908152600860205260408120908155600101805470ffffffffffffffffffffffffffffffffff1916905560098054600019019055565b600080546001600160a01b0319166001600160a01b0383161781556125198761251261312f565b60006131a2565b9050600061252a818080808661271c565b6005819055600081815260046020908152604091829020805460ff191660019081179091556001600160801b03808c1690915589166002556003805467ffffffffffffffff898116600160401b026fffffffffffffffff000000000000000019918c1667ffffffffffffffff19909316929092171617905581518b815291519293507f4ac0014773275a3dfb58c58539631006301de41998cce7c4f8698d297c88bb2d92918290030190a15050505050505050565b60065460408051808201909152600a815269494e49545f545749434560b01b6020820152906001600160a01b0316156126595760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060408051808201909152600c81526b494e49545f4e4f4e5a45524f60a01b60208201526001600160a01b0382166126d25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600680546001600160a01b0319166001600160a01b0392909216919091179055600780546001600160801b0319166001600160801b0392909216919091179055565b6103e80290565b6040805160208082018490528183018790526060820186905260808083018690528351808403909101815260a08301845280519082012060c0830189905260e08084019190915283518084039091018152610100909201909252805191012095945050505050565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b8051600090819081908190815b81811015612858576127cf87826131d9565b919650909350905084612822576040805162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7574707574206d65737361676560501b604482015290519081900360640190fd5b838360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093506127bd565b509195945050505050565b6000612879612870610ff0565b8989898961271c565b90508761288543612715565b101560405180604001604052806009815260200168434f4e465f54494d4560b81b815250906128f55760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506000612905828a878787613230565b9050600081116040518060400160405280600f81526020016e21a7a7232fa420a9afa9aa20a5a2a960891b8152509061297f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50612989826134db565b505050505050505050565b60008060006129b08460000151856020015186604001516131a2565b905060006129d7856060015186608001518760a001518860c0015163ffffffff168661271c565b90506129e281610fac565b6040518060400160405280600981526020016826a0a5a2afa622a0a360b91b81525090612a505760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b508451612a5c90613516565b158015612a7157508451612a6f9061351c565b155b6040518060400160405280600881526020016726a0a5a2afa92aa760c11b81525090612ade5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060035460e086015160408051808201909152600981526804d414b455f535445560bc1b60208201529167ffffffffffffffff90811691161115612b635760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506003546101008601518051600160401b90920467ffffffffffffffff169091016001600160801b031690600160200201516001600160801b03161115612ba957600080fd5b612bb7856101000151613520565b604051806040016040528060098152602001684d414b455f54494d4560b81b81525090612c255760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506101208501511580612c3a5750846101a001515b6040518060400160405280600d81526020016c4d414b455f4d4553534147455360981b81525090612cac5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060008054604080516308d74f6960e11b8152815184936001600160a01b0316926311ae9ed2926004808201939182900301818787803b158015612cef57600080fd5b505af1158015612d03573d6000803e3d6000fd5b505050506040513d6040811015612d1957600080fd5b50805160209091015160408901519193509150612d3d90829063ffffffff61355016565b87610120015111156040518060400160405280601081526020016f135052d157d35154d4d051d157d0d39560821b81525090612dba5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506001546002546101c08901516000919067ffffffffffffffff1681612ddc57fe5b049050600082612deb43612715565b0190508960800151811015612e01575060808901515b81016000612e148b888489898d8a613592565b90506000612e258c89858c896135e3565b90506000612e378d8a868d8a8a613642565b90506000612e468e8b876136cc565b6000858152600460205260408082208054600160ff19918216811790925587845282842080548216831790558684528284208054821683179055848452828420805482169092179091558d83529120805490911690559050612eaa8e8b8b8b61370e565b989b50979950505050505050505050915091565b6001600160a01b0382166000818152600860209081526040918290208490558151928352820183905280517fbe690ac5fe353c094bcc6f187eeb841c0ca61b6edf32c142eadad655b7d173f49281900390910190a15050565b60078054604080518082019091529182526614d512d7d0535560ca1b60208301526001600160801b03163414612f8e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5033600090815260086020908152604091829020548251808401909352600c83526b105314911657d4d51052d15160a21b91830191909152156130125760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50604080516060810182528281526001600160801b03438116602080840191825260008486018181523380835260088452918790209551865592516001958601805494511515600160801b0260ff60801b19929096166001600160801b031990951694909417169390931790915560098054909301909255825190815290810183905281517fcbafbb223ed21c82af9e2ad20cdfdf55d3263d06f9a65b3f70da613f32d81f88929181900390910190a150565b600084835b8381101561312357818682815181106130df57fe5b6020026020010151604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120915080806001019150506130ca565b5090505b949350505050565b6040805160008082526020808301808552600360f81b948401948552835192946003938593919260418501929091028083838a5b8381101561317b578181015183820152602001613163565b50505050905001925050506040516020818303038152906040528051906020012091505090565b6040805160208082019590955280820193909352606080840192909252805180840390920182526080909201909152805191012090565b60008060008060006131e9614315565b6131f3888861383a565b92509250925082613211575060009450859350849250613229915050565b60018261321d83613989565b51919750955093505050505b9250925092565b825160095460408051808201909152600a81526910d210d2d7d0d3d5539560b21b60208201526000929182146132a75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50825181600101146040518060400160405280600c81526020016b4348434b5f4f46465345545360a01b815250906133205760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600080805b838110156134ce57600088828151811061333c57fe5b60200260200101519050836bffffffffffffffffffffffff19168160601b6bffffffffffffffffffffffff1916116040518060400160405280600a81526020016921a421a5afa7a92222a960b11b815250906133d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060006133e582612420565b60018101549091508b90613401906001600160801b0316612715565b10156134c05780600001546134418d8b8b878151811061341d57fe5b60200260200101518c886001018151811061343457fe5b60200260200101516130c5565b146040518060400160405280601181526020017021a421a5afa9aa20a5a2a92fa82927a7a360791b815250906134b85760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506001909301925b5060601b9250600101613326565b5098975050505050505050565b60058190556040805182815290517f9d13d0ad532ca8e545a3b66828cb99a18c3bc98e2a50b4db1990a033fdba6f639181900360200190a150565b60011490565b1590565b80516000906001600160801b0316431080159061354a575060208201516001600160801b03164311155b92915050565b600061239083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613abf565b6000806135b2896101400151878b61012001518c604001510188036131a2565b90506135d688886135ce846135c76001612715565b8801612784565b60008861271c565b9998505050505050505050565b60008061360d87602001518861014001516135fc61312f565b8a61016001518b6101200151613b19565b905060006136268261361f6001612715565b8601612784565b905061363687878360018961271c565b98975050505050505050565b60008061365e88600001518961010001518a6101600151613b5f565b905060006136908961018001518a6101a001518b6101c001516000801b8d6101e001516000801b8f6102000151613bb1565b905060006136a38a60e001518484613c14565b90506136be89896136b684898b01612784565b60028b61271c565b9a9950505050505050505050565b600061312783836136e7876101e00151886102000151612784565b60036137098961018001518a61014001518b61012001518c60400151016131a2565b61271c565b7f5761ea2104e5d52e617adb7f0bfc8970ffa1d06f57d28cb2bb3a034532c970356040518060e00160405280858152602001848152602001866101400151815260200186610160015181526020018661018001518152602001866101e00151815260200186610200015181525082866101200151876101000151886101c001518960e001518a6101a001516040518088600760200280838360005b838110156137c15781810151838201526020016137a9565b5050505090500187815260200186815260200185600260200280838360005b838110156137f85781810151838201526020016137e0565b50505067ffffffffffffffff9788169390910192835250509290931660208301521515604080830191909152519081900360600195509350505050a150505050565b600080613845614315565b845184106138655760008461385a6000613c5c565b925092509250613229565b600080859050600087828151811061387957fe5b016020015160019092019160f81c90506000613893614343565b60ff83166138c7576138a58a85613cda565b9196509450915084846138b784613c5c565b9750975097505050505050613229565b60ff8316600114156138ef576138dd8a85613d2d565b9196509450905084846138b783613e8e565b60ff831660021415613917576139058a85613cda565b9196509450915084846138b784613eee565b600360ff84161080159061392e5750600c60ff8416105b156139695760021983016060613945828d88613f6c565b9198509650905086866139578361402a565b99509950995050505050505050613229565b6000806139766000613c5c565b9199509750955050505050509250925092565b61399161436a565b6060820151600c60ff909116106139e3576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207479706520636f646560781b604482015290519081900360640190fd5b606082015160ff16613a10576040518060200160405280613a0784600001516140da565b90529050610fbf565b606082015160ff1660011415613a57576040518060200160405280613a078460200151600001518560200151604001518660200151606001518760200151602001516140fe565b606082015160ff1660021415613a7c5750604080516020810190915281518152610fbf565b600360ff16826060015160ff1610158015613aa057506060820151600c60ff909116105b15613abd576040518060200160405280613a0784604001516141a6565bfe5b60008184841115613b115760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b505050900390565b60408051602080820197909752808201959095526060850193909352608084019190915260a0808401919091528151808403909101815260c09092019052805191012090565b815160209283015160408051808601969096526001600160801b0319608093841b81168783015291831b9091166050860152606080860193909352805180860390930183529301909252815191012090565b6040805160208082019990995296151560f81b8782015260c09590951b6001600160c01b031916604187015260498601939093526069850191909152608984015260a9808401919091528151808403909101815260c99092019052805191012090565b6040805160c09490941b6001600160c01b0319166020808601919091526028850193909352604880850192909252805180850390920182526068909301909252815191012090565b613c64614315565b604080516080808201835284825282519081018352600080825260208281018290528285018290526060830182905280840192909252835181815291820184529192830191613cc9565b613cb6614315565b815260200190600190039081613cae5790505b508152600060209091015292915050565b6000806000808551905084811080613cf457506020858203105b15613d09575060009250839150829050613229565b600160208601613d1f888863ffffffff6142f216565b935093509350509250925092565b600080613d38614343565b60008490506000868281518110613d4b57fe5b602001015160f81c60f81b60f81c905081806001019250506000878381518110613d7157fe5b016020015160019384019360f89190911c915060009060ff84161415613df8576000613d9b614315565b613da58b8761383a565b909750909250905081613de9575050604080516080810182526000808252602082018190529181018290526060810182905290975088965094506132299350505050565b613df281613989565b51925050505b6000613e0a8a8663ffffffff6142f216565b90506020850194508360ff1660011415613e56576040805160808101825260ff909416845260208401919091526001908301819052606083019190915295509193509091506132299050565b6040805160808101825260ff949094168452602084019190915260009083018190526060830152506001989297509550909350505050565b613e96614315565b604080516080810182526000808252602080830186905283518281529081018452919283019190613edd565b613eca614315565b815260200190600190039081613ec25790505b508152600160209091015292915050565b613ef6614315565b604080516080808201835284825282519081018352600080825260208281018290528285018290526060830182905280840192909252835181815291820184529192830191613f5b565b613f48614315565b815260200190600190039081613f405790505b508152600260209091015292915050565b60008060606000849050600060608860ff16604051908082528060200260200182016040528015613fb757816020015b613fa4614315565b815260200190600190039081613f9c5790505b50905060005b8960ff168160ff16101561401457613fd5898561383a565b8451859060ff8616908110613fe657fe5b6020908102919091010152945092508261400c5750600095508694509250614021915050565b600101613fbd565b5060019550919350909150505b93509350939050565b614032614315565b61403c825161430e565b61408d576040805162461bcd60e51b815260206004820152601a60248201527f5475706c65206d75737420686176652076616c69642073697a65000000000000604482015290519081900360640190fd5b5060408051608080820183526000808352835191820184528082526020828101829052828501829052606080840192909252830191909152918101839052915160030160ff169082015290565b60408051602080820193909352815180820384018152908201909152805191012090565b60008315614158575060408051600160f81b6020808301919091526001600160f81b031960f888901b1660218301526022820185905260428083018590528351808403909101815260629092019092528051910120613127565b5060408051600160f81b6020808301919091526001600160f81b031960f888901b16602183015260228083018590528351808403909101815260429092019092528051910120949350505050565b60006008825111156141f6576040805162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840e8eae0d8ca40d8cadccee8d60631b604482015290519081900360640190fd5b60608251604051908082528060200260200182016040528015614223578160200160208202803883390190505b50805190915060005b8181101561427f5761423c61436a565b61425886838151811061424b57fe5b6020026020010151613989565b9050806000015184838151811061426b57fe5b60209081029190910101525060010161422c565b508351600360ff160182604051602001808360ff1660ff1660f81b8152600101828051906020019060200280838360005b838110156142c85781810151838201526020016142b0565b50505050905001925050506040516020818303038152906040528051906020012092505050919050565b6000816020018351101561430557600080fd5b50016020015190565b6008101590565b60405180608001604052806000815260200161432f614343565b815260606020820152600060409091015290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160208101909152600081529056fea265627a7a72315820dadf50407fb2e5085e576b998fce6a5bbcecb70e2329b2dc3af39d9f4f64375f64736f6c634300050f0032'; diff --git a/packages/arb-util/common/timeblocks.go b/packages/arb-util/common/timeblocks.go index 36205bbb5e..2d4ad2518e 100644 --- a/packages/arb-util/common/timeblocks.go +++ b/packages/arb-util/common/timeblocks.go @@ -50,7 +50,7 @@ func (tb *TimeBlocks) AsInt() *big.Int { } func BlocksFromSeconds(seconds int64) *TimeBlocks { - return (*TimeBlocks)(big.NewInt(int64(time.Duration(seconds) * time.Second / AverageDurationPerBlock))) + return (*TimeBlocks)(big.NewInt(int64(time.Duration(seconds) * time.Second / _durationPerBlock))) } func (tb *TimeBlocks) Duration() time.Duration { @@ -68,3 +68,7 @@ func (tb *TimeBlocks) Marshal() *TimeBlocksBuf { func (tb *TimeBlocksBuf) Unmarshal() *TimeBlocks { return (*TimeBlocks)(tb.Val.Unmarshal()) } + +func (tb *TimeBlocks) String() string { + return tb.AsInt().String() +} diff --git a/packages/arb-util/common/timeticks.go b/packages/arb-util/common/timeticks.go index 5cd5e1c919..1ecfa7c166 100644 --- a/packages/arb-util/common/timeticks.go +++ b/packages/arb-util/common/timeticks.go @@ -21,6 +21,8 @@ import ( "time" ) +const TicksPerBlock = int64(1000) + type TimeTicks struct { Val *big.Int } @@ -30,7 +32,7 @@ func TimeFromBlockNum(blockNum *TimeBlocks) TimeTicks { } func TimeFromSeconds(seconds int64) TimeTicks { - return TimeTicks{big.NewInt(int64(time.Duration(seconds*TicksPerBlock) * time.Second / AverageDurationPerBlock))} + return TimeTicks{big.NewInt(int64(time.Duration(seconds*TicksPerBlock) * time.Second / _durationPerBlock))} } func (rt TimeTicks) Add(rt2 TimeTicks) TimeTicks { @@ -42,7 +44,7 @@ func (rt TimeTicks) Cmp(rt2 TimeTicks) int { } func (rt TimeTicks) Duration() time.Duration { - return time.Duration(rt.Val.Int64()) * AverageDurationPerBlock / time.Duration(TicksPerBlock) + return time.Duration(rt.Val.Int64()) * _durationPerBlock / time.Duration(TicksPerBlock) } func (rt TimeTicks) Clone() TimeTicks { diff --git a/packages/arb-validator/cmd/evilRollupServer/evilRollupServer.go b/packages/arb-validator/cmd/evilRollupServer/evilRollupServer.go index c3fcba8b62..d5798f0e0a 100644 --- a/packages/arb-validator/cmd/evilRollupServer/evilRollupServer.go +++ b/packages/arb-validator/cmd/evilRollupServer/evilRollupServer.go @@ -142,7 +142,7 @@ func validateRollupChain() error { return errors.New("usage: rollupServer validate [--rpc] [--blocktime=N] ") } - common.AverageDurationPerBlock = time.Duration(*blocktime) * time.Second + common.SetDurationPerBlock(time.Duration(*blocktime) * time.Second) // 2) Private key keyFile, err := os.Open(validateCmd.Arg(1)) diff --git a/packages/arb-validator/cmd/rollupServer/rollupServer.go b/packages/arb-validator/cmd/rollupServer/rollupServer.go index 985e785e31..a435099600 100644 --- a/packages/arb-validator/cmd/rollupServer/rollupServer.go +++ b/packages/arb-validator/cmd/rollupServer/rollupServer.go @@ -137,10 +137,10 @@ func validateRollupChain() error { } if validateCmd.NArg() != 5 { - return errors.New("usage: rollupServer validate [--rpc] [--blocktime=N] ") + return errors.New("usage: rollupServer validate [--rpc] [--blocktime=NumSeconds] ") } - common.AverageDurationPerBlock = time.Duration(*blocktime) * time.Second + common.SetDurationPerBlock(time.Duration(*blocktime) * time.Second) // 2) Private key keyFile, err := os.Open(validateCmd.Arg(1)) diff --git a/packages/arb-validator/ethbridge/executionchallenge/executionchallenge.go b/packages/arb-validator/ethbridge/executionchallenge/executionchallenge.go index 583cb18eb2..a8bd0c8e1e 100644 --- a/packages/arb-validator/ethbridge/executionchallenge/executionchallenge.go +++ b/packages/arb-validator/ethbridge/executionchallenge/executionchallenge.go @@ -2002,7 +2002,7 @@ var ExecutionChallengeFuncSigs = map[string]string{ } // ExecutionChallengeBin is the compiled bytecode used for deploying new contracts. -var ExecutionChallengeBin = "0x608060405234801561001057600080fd5b50611d6c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806302ad1e4e1461005c57806379a9ad85146100a05780638827cdc614610150578063ba2a231114610261578063ced5c1bf1461054b575b600080fd5b61009e600480360360a081101561007257600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135610553565b005b61009e600480360360808110156100b657600080fd5b81359190810190604081016020820135600160201b8111156100d757600080fd5b8201836020820111156100e957600080fd5b803590602001918460018302840111600160201b8311171561010a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135610568565b61009e600480360361018081101561016757600080fd5b6040805180820182528335936020810135938101929091608083019180840190600290839083908082843760009201919091525091948335946020850135151594604081013594506060810135935060808101359260a08201359267ffffffffffffffff60c0840135169261010081019060e00135600160201b8111156101ed57600080fd5b8201836020820111156101ff57600080fd5b803590602001918460018302840111600160201b8311171561022057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610866945050505050565b61009e600480360361012081101561027857600080fd5b60408051808201825283359392830192916060830191906020840190600290839083908082843760009201919091525091949392602081019250359050600160201b8111156102c657600080fd5b8201836020820111156102d857600080fd5b803590602001918460208302840111600160201b831117156102f957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561034857600080fd5b82018360208201111561035a57600080fd5b803590602001918460208302840111600160201b8311171561037b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103ca57600080fd5b8201836020820111156103dc57600080fd5b803590602001918460208302840111600160201b831117156103fd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561044c57600080fd5b82018360208201111561045e57600080fd5b803590602001918460208302840111600160201b8311171561047f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156104ce57600080fd5b8201836020820111156104e057600080fd5b803590602001918460208302840111600160201b8311171561050157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505050903567ffffffffffffffff169150610c339050565b61009e610e08565b61055f85858585610ee8565b60065550505050565b60055460ff16600281111561057957fe5b60021460405180604001604052806009815260200168434f4e5f535441544560b81b815250906106275760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105ec5781810151838201526020016105d4565b50505050905090810190601f1680156106195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060035461063443611003565b11156040518060400160405280600c81526020016b434f4e5f444541444c494e4560a01b815250906106a75760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5060025460408051808201909152600a81526921a7a72fa9a2a72222a960b11b6020820152906001600160a01b031633146107235760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5060065482146040518060400160405280600881526020016721a7a72fa82922ab60c11b815250906107965760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b506107a68383838760010161100a565b6040518060400160405280600981526020016821a7a72fa82927a7a360b91b815250906108145760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b50600681905561082261110b565b60035460408051868152602081019290925280517f1e1c1e4e68a25c69a078a396e73975691c071d69ef789015dc16a562957804e49281900390910190a150505050565b60055460ff16600281111561087757fe5b600114604051806040016040528060098152602001684249535f535441544560b81b815250906108e85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b506003546108f543611003565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b815250906109685760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b031633146109e45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5060006109f28c8b8d611127565b9050610a16610a11600183610a0c8d8d898e8e8e8e611182565b6111e5565b61122d565b600073__$efcad257db8183701794ea8506d55e247c$__630b1cb7878e8d8f8e8e8e8e8e8e8e8e6040518c63ffffffff1660e01b8152600401808c81526020018b600260200280838360005b83811015610a7a578181015183820152602001610a62565b505050509050018a8152602001898152602001881515151581526020018781526020018681526020018581526020018481526020018367ffffffffffffffff1667ffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b02578181015183820152602001610aea565b50505050905090810190601f168015610b2f5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060206040518083038186803b158015610b5657600080fd5b505af4158015610b6a573d6000803e3d6000fd5b505050506040513d6020811015610b8057600080fd5b505160408051808201909152600981526827a9a82fa82927a7a360b91b60208201529091508115610bf25760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b506040517f117efdf1fdd8be5a6ff0fb3c32333d7033bbd9523924bd0d9ca28f43540516f590600090a1610c246112a3565b50505050505050505050505050565b60055460ff166002811115610c4457fe5b600114604051806040016040528060098152602001684249535f535441544560b81b81525090610cb55760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b50600354610cc243611003565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b81525090610d355760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b03163314610db15760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b50610dfe6040518061010001604052808a81526020018981526020018881526020018781526020018681526020018581526020018481526020018367ffffffffffffffff168152506112ae565b5050505050505050565b600354610e1443611003565b11610e66576040805162461bcd60e51b815260206004820152601760248201527f446561646c696e65206861736e27742065787069726564000000000000000000604482015290519081900360640190fd5b600160055460ff166002811115610e7957fe5b1415610eb5576040517f2b92a4b014281aa2424baba9ea60bf4f26833d1c1fbd873e51cd1a6caeef48f090600090a1610eb0611a3d565b610ee6565b6040517f4e1f1f06cf69d199fcdb4d87a5a92d5248ca6b540e9fc2d3698927c5002a236a90600090a1610ee66112a3565b565b600060055460ff166002811115610efb57fe5b146040518060400160405280600f81526020016e4348414c5f494e49545f535441544560881b81525090610f705760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b50600080546001600160a01b038681166001600160a01b03199283161790925560018054868416908316178155600280549386169390921692909217905560048290556005805460ff19169091179055610fc8611a45565b60035460408051918252517fe070f23072cbc6c0fc7253b8d0120649d5f9d6e19a8aeab79eb50aa6360bcc679181900360200190a150505050565b6132c80290565b600080838160205b885181116110fd578089015193506020818a51036020018161103057fe5b0491505b6000821180156110475750600286066001145b801561105557508160020a86115b1561106857600286046001019550611034565b600286066110b35783836040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250600286816110ab57fe5b0495506110f5565b82846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250600286816110ee57fe5b0460010195505b602001611012565b505090941495945050505050565b600580546001919060ff191682805b0217905550610ee6611a45565b815160209283015160408051808601969096526fffffffffffffffffffffffffffffffff19608093841b81168783015291831b9091166050860152606080860193909352805180860390930183529301909252815191012090565b6040805160208082019990995296151560f81b8782015260c09590951b6001600160c01b031916604187015260498601939093526069850191909152608984015260a9808401919091528151808403909101815260c99092019052805191012090565b6040805160c09490941b6001600160c01b0319166020808601919091526028850193909352604880850192909252805180850390920182526068909301909252815191012090565b6006548114604051806040016040528060088152602001672124a9afa82922ab60c11b8152509061129f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5050565b6112ab611a57565b33ff5b6000600182604001515103905081606001515181146040518060400160405280600a8152602001692124a9afa4a7282622a760b11b815250906113325760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5081608001515181600101146040518060400160405280600a8152602001692124a9afa4a7282622a760b11b815250906113ad5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b508160a001515181600101146040518060400160405280600a8152602001692124a9afa4a7282622a760b11b815250906114285760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b508160c001515181146040518060400160405280600a8152602001692124a9afa4a7282622a760b11b815250906114a05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b50600080805b838110156114f4578460c0015181815181106114be57fe5b60200260200101518301925081806114ea5750846060015181815181106114e157fe5b60200260200101515b91506001016114a6565b506000611522856040015160008151811061150b57fe5b602002602001015186602001518760000151611127565b905060006115aa8660400151868151811061153957fe5b60200260200101518486896080015160008151811061155457fe5b60200260200101518a608001518a8151811061156c57fe5b60200260200101518b60a0015160008151811061158557fe5b60200260200101518c60a001518c8151811061159d57fe5b6020026020010151611182565b90506115be610a118760e0015184846111e5565b6060856040519080825280602002602001820160405280156115ea578160200160208202803883390190505b509050611697876040015160018151811061160157fe5b6020026020010151886060015160008151811061161a57fe5b60200260200101518960c0015160008151811061163357fe5b60200260200101518a6080015160008151811061164c57fe5b60200260200101518b6080015160018151811061166557fe5b60200260200101518c60a0015160008151811061167e57fe5b60200260200101518d60a0015160018151811061159d57fe5b91506116eb6116b48860e0015167ffffffffffffffff1688611ad3565b63ffffffff166116e589604001516000815181106116ce57fe5b60200260200101518a602001518b60000151611127565b846111e5565b816000815181106116f857fe5b602090810291909101015260015b86811015611857578760600151600182038151811061172157fe5b60200260200101511561173957611736611af1565b88525b6117e58860400151826001018151811061174f57fe5b60200260200101518960600151838151811061176757fe5b60200260200101518a60c00151848151811061177f57fe5b60200260200101518b60800151858151811061179757fe5b60200260200101518c6080015186600101815181106117b257fe5b60200260200101518d60a0015187815181106117ca57fe5b60200260200101518e60a00151886001018151811061159d57fe5b92506118386118028960e0015167ffffffffffffffff1689611b64565b63ffffffff166118328a60400151848151811061181b57fe5b60200260200101518b602001518c60000151611127565b856111e5565b82828151811061184457fe5b6020908102919091010152600101611706565b5061186181611b77565b611869611b86565b7f99a5d600237469c778df4f1eb561cbc9eada42285a37b35e762776647ab1ee478760400151886060015189608001518a60a001518b60c001518c60e001516003546040518080602001806020018060200180602001806020018867ffffffffffffffff1667ffffffffffffffff16815260200187815260200186810386528d818151815260200191508051906020019060200280838360005b8381101561191b578181015183820152602001611903565b5050505090500186810385528c818151815260200191508051906020019060200280838360005b8381101561195a578181015183820152602001611942565b5050505090500186810384528b818151815260200191508051906020019060200280838360005b83811015611999578181015183820152602001611981565b5050505090500186810383528a818151815260200191508051906020019060200280838360005b838110156119d85781810151838201526020016119c0565b50505050905001868103825289818151815260200191508051906020019060200280838360005b83811015611a175781810151838201526020016119ff565b505050509050019c5050505050505050505050505060405180910390a150505050505050565b6112ab611b9a565b600454611a5143611003565b01600355565b6000805460015460028054604080516335e1e69160e11b81526001600160a01b0394851660048201529184166024830152604482019290925290519190921692636bc3cd22926064808201939182900301818387803b158015611ab957600080fd5b505af1158015611acd573d6000803e3d6000fd5b50505050565b6000818381611ade57fe5b06828481611ae857fe5b04019392505050565b6040805160008082526020808301808552600360f81b948401948552835192946003938593919260418501929091028083838a5b83811015611b3d578181015183820152602001611b25565b50505050905001925050506040516020818303038152906040528051906020012091505090565b6000818381611b6f57fe5b049392505050565b611b8081611bf9565b60065550565b600580546002919060ff191660018361111a565b6000805460028054600154604080516335e1e69160e11b81526001600160a01b039384166004820152918316602483015260448201939093529151921692636bc3cd229260648084019382900301818387803b158015611ab957600080fd5b6000815b600181511115611d1a5760606002825160010181611c1757fe5b04604051908082528060200260200182016040528015611c41578160200160208202803883390190505b50905060005b8151811015611d12578251816002026001011015611cda57828160020281518110611c6e57fe5b6020026020010151838260020260010181518110611c8857fe5b6020026020010151604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120828281518110611cc957fe5b602002602001018181525050611d0a565b828160020281518110611ce957fe5b6020026020010151828281518110611cfd57fe5b6020026020010181815250505b600101611c47565b509050611bfd565b80600081518110611d2757fe5b602002602001015191505091905056fea265627a7a723158203aff30696f253f0bec093c7548ef257a77d1a84c3565a8e0b5cfaf06c5bda0dc64736f6c63430005100032" +var ExecutionChallengeBin = "0x608060405234801561001057600080fd5b50611d6c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806302ad1e4e1461005c57806379a9ad85146100a05780638827cdc614610150578063ba2a231114610261578063ced5c1bf1461054b575b600080fd5b61009e600480360360a081101561007257600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135610553565b005b61009e600480360360808110156100b657600080fd5b81359190810190604081016020820135600160201b8111156100d757600080fd5b8201836020820111156100e957600080fd5b803590602001918460018302840111600160201b8311171561010a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135610568565b61009e600480360361018081101561016757600080fd5b6040805180820182528335936020810135938101929091608083019180840190600290839083908082843760009201919091525091948335946020850135151594604081013594506060810135935060808101359260a08201359267ffffffffffffffff60c0840135169261010081019060e00135600160201b8111156101ed57600080fd5b8201836020820111156101ff57600080fd5b803590602001918460018302840111600160201b8311171561022057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610866945050505050565b61009e600480360361012081101561027857600080fd5b60408051808201825283359392830192916060830191906020840190600290839083908082843760009201919091525091949392602081019250359050600160201b8111156102c657600080fd5b8201836020820111156102d857600080fd5b803590602001918460208302840111600160201b831117156102f957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561034857600080fd5b82018360208201111561035a57600080fd5b803590602001918460208302840111600160201b8311171561037b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103ca57600080fd5b8201836020820111156103dc57600080fd5b803590602001918460208302840111600160201b831117156103fd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561044c57600080fd5b82018360208201111561045e57600080fd5b803590602001918460208302840111600160201b8311171561047f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156104ce57600080fd5b8201836020820111156104e057600080fd5b803590602001918460208302840111600160201b8311171561050157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505050903567ffffffffffffffff169150610c339050565b61009e610e08565b61055f85858585610ee8565b60065550505050565b60055460ff16600281111561057957fe5b60021460405180604001604052806009815260200168434f4e5f535441544560b81b815250906106275760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156105ec5781810151838201526020016105d4565b50505050905090810190601f1680156106195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060035461063443611003565b11156040518060400160405280600c81526020016b434f4e5f444541444c494e4560a01b815250906106a75760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5060025460408051808201909152600a81526921a7a72fa9a2a72222a960b11b6020820152906001600160a01b031633146107235760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5060065482146040518060400160405280600881526020016721a7a72fa82922ab60c11b815250906107965760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b506107a68383838760010161100a565b6040518060400160405280600981526020016821a7a72fa82927a7a360b91b815250906108145760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b50600681905561082261110b565b60035460408051868152602081019290925280517f1e1c1e4e68a25c69a078a396e73975691c071d69ef789015dc16a562957804e49281900390910190a150505050565b60055460ff16600281111561087757fe5b600114604051806040016040528060098152602001684249535f535441544560b81b815250906108e85760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b506003546108f543611003565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b815250906109685760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b031633146109e45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5060006109f28c8b8d611127565b9050610a16610a11600183610a0c8d8d898e8e8e8e611182565b6111e5565b61122d565b600073__$efcad257db8183701794ea8506d55e247c$__630b1cb7878e8d8f8e8e8e8e8e8e8e8e6040518c63ffffffff1660e01b8152600401808c81526020018b600260200280838360005b83811015610a7a578181015183820152602001610a62565b505050509050018a8152602001898152602001881515151581526020018781526020018681526020018581526020018481526020018367ffffffffffffffff1667ffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b02578181015183820152602001610aea565b50505050905090810190601f168015610b2f5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060206040518083038186803b158015610b5657600080fd5b505af4158015610b6a573d6000803e3d6000fd5b505050506040513d6020811015610b8057600080fd5b505160408051808201909152600981526827a9a82fa82927a7a360b91b60208201529091508115610bf25760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b506040517f117efdf1fdd8be5a6ff0fb3c32333d7033bbd9523924bd0d9ca28f43540516f590600090a1610c246112a3565b50505050505050505050505050565b60055460ff166002811115610c4457fe5b600114604051806040016040528060098152602001684249535f535441544560b81b81525090610cb55760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b50600354610cc243611003565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b81525090610d355760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b03163314610db15760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b50610dfe6040518061010001604052808a81526020018981526020018881526020018781526020018681526020018581526020018481526020018367ffffffffffffffff168152506112ae565b5050505050505050565b600354610e1443611003565b11610e66576040805162461bcd60e51b815260206004820152601760248201527f446561646c696e65206861736e27742065787069726564000000000000000000604482015290519081900360640190fd5b600160055460ff166002811115610e7957fe5b1415610eb5576040517f2b92a4b014281aa2424baba9ea60bf4f26833d1c1fbd873e51cd1a6caeef48f090600090a1610eb0611a3d565b610ee6565b6040517f4e1f1f06cf69d199fcdb4d87a5a92d5248ca6b540e9fc2d3698927c5002a236a90600090a1610ee66112a3565b565b600060055460ff166002811115610efb57fe5b146040518060400160405280600f81526020016e4348414c5f494e49545f535441544560881b81525090610f705760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b50600080546001600160a01b038681166001600160a01b03199283161790925560018054868416908316178155600280549386169390921692909217905560048290556005805460ff19169091179055610fc8611a45565b60035460408051918252517fe070f23072cbc6c0fc7253b8d0120649d5f9d6e19a8aeab79eb50aa6360bcc679181900360200190a150505050565b6103e80290565b600080838160205b885181116110fd578089015193506020818a51036020018161103057fe5b0491505b6000821180156110475750600286066001145b801561105557508160020a86115b1561106857600286046001019550611034565b600286066110b35783836040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250600286816110ab57fe5b0495506110f5565b82846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250600286816110ee57fe5b0460010195505b602001611012565b505090941495945050505050565b600580546001919060ff191682805b0217905550610ee6611a45565b815160209283015160408051808601969096526fffffffffffffffffffffffffffffffff19608093841b81168783015291831b9091166050860152606080860193909352805180860390930183529301909252815191012090565b6040805160208082019990995296151560f81b8782015260c09590951b6001600160c01b031916604187015260498601939093526069850191909152608984015260a9808401919091528151808403909101815260c99092019052805191012090565b6040805160c09490941b6001600160c01b0319166020808601919091526028850193909352604880850192909252805180850390920182526068909301909252815191012090565b6006548114604051806040016040528060088152602001672124a9afa82922ab60c11b8152509061129f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5050565b6112ab611a57565b33ff5b6000600182604001515103905081606001515181146040518060400160405280600a8152602001692124a9afa4a7282622a760b11b815250906113325760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b5081608001515181600101146040518060400160405280600a8152602001692124a9afa4a7282622a760b11b815250906113ad5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b508160a001515181600101146040518060400160405280600a8152602001692124a9afa4a7282622a760b11b815250906114285760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b508160c001515181146040518060400160405280600a8152602001692124a9afa4a7282622a760b11b815250906114a05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156105ec5781810151838201526020016105d4565b50600080805b838110156114f4578460c0015181815181106114be57fe5b60200260200101518301925081806114ea5750846060015181815181106114e157fe5b60200260200101515b91506001016114a6565b506000611522856040015160008151811061150b57fe5b602002602001015186602001518760000151611127565b905060006115aa8660400151868151811061153957fe5b60200260200101518486896080015160008151811061155457fe5b60200260200101518a608001518a8151811061156c57fe5b60200260200101518b60a0015160008151811061158557fe5b60200260200101518c60a001518c8151811061159d57fe5b6020026020010151611182565b90506115be610a118760e0015184846111e5565b6060856040519080825280602002602001820160405280156115ea578160200160208202803883390190505b509050611697876040015160018151811061160157fe5b6020026020010151886060015160008151811061161a57fe5b60200260200101518960c0015160008151811061163357fe5b60200260200101518a6080015160008151811061164c57fe5b60200260200101518b6080015160018151811061166557fe5b60200260200101518c60a0015160008151811061167e57fe5b60200260200101518d60a0015160018151811061159d57fe5b91506116eb6116b48860e0015167ffffffffffffffff1688611ad3565b63ffffffff166116e589604001516000815181106116ce57fe5b60200260200101518a602001518b60000151611127565b846111e5565b816000815181106116f857fe5b602090810291909101015260015b86811015611857578760600151600182038151811061172157fe5b60200260200101511561173957611736611af1565b88525b6117e58860400151826001018151811061174f57fe5b60200260200101518960600151838151811061176757fe5b60200260200101518a60c00151848151811061177f57fe5b60200260200101518b60800151858151811061179757fe5b60200260200101518c6080015186600101815181106117b257fe5b60200260200101518d60a0015187815181106117ca57fe5b60200260200101518e60a00151886001018151811061159d57fe5b92506118386118028960e0015167ffffffffffffffff1689611b64565b63ffffffff166118328a60400151848151811061181b57fe5b60200260200101518b602001518c60000151611127565b856111e5565b82828151811061184457fe5b6020908102919091010152600101611706565b5061186181611b77565b611869611b86565b7f99a5d600237469c778df4f1eb561cbc9eada42285a37b35e762776647ab1ee478760400151886060015189608001518a60a001518b60c001518c60e001516003546040518080602001806020018060200180602001806020018867ffffffffffffffff1667ffffffffffffffff16815260200187815260200186810386528d818151815260200191508051906020019060200280838360005b8381101561191b578181015183820152602001611903565b5050505090500186810385528c818151815260200191508051906020019060200280838360005b8381101561195a578181015183820152602001611942565b5050505090500186810384528b818151815260200191508051906020019060200280838360005b83811015611999578181015183820152602001611981565b5050505090500186810383528a818151815260200191508051906020019060200280838360005b838110156119d85781810151838201526020016119c0565b50505050905001868103825289818151815260200191508051906020019060200280838360005b83811015611a175781810151838201526020016119ff565b505050509050019c5050505050505050505050505060405180910390a150505050505050565b6112ab611b9a565b600454611a5143611003565b01600355565b6000805460015460028054604080516335e1e69160e11b81526001600160a01b0394851660048201529184166024830152604482019290925290519190921692636bc3cd22926064808201939182900301818387803b158015611ab957600080fd5b505af1158015611acd573d6000803e3d6000fd5b50505050565b6000818381611ade57fe5b06828481611ae857fe5b04019392505050565b6040805160008082526020808301808552600360f81b948401948552835192946003938593919260418501929091028083838a5b83811015611b3d578181015183820152602001611b25565b50505050905001925050506040516020818303038152906040528051906020012091505090565b6000818381611b6f57fe5b049392505050565b611b8081611bf9565b60065550565b600580546002919060ff191660018361111a565b6000805460028054600154604080516335e1e69160e11b81526001600160a01b039384166004820152918316602483015260448201939093529151921692636bc3cd229260648084019382900301818387803b158015611ab957600080fd5b6000815b600181511115611d1a5760606002825160010181611c1757fe5b04604051908082528060200260200182016040528015611c41578160200160208202803883390190505b50905060005b8151811015611d12578251816002026001011015611cda57828160020281518110611c6e57fe5b6020026020010151838260020260010181518110611c8857fe5b6020026020010151604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120828281518110611cc957fe5b602002602001018181525050611d0a565b828160020281518110611ce957fe5b6020026020010151828281518110611cfd57fe5b6020026020010181815250505b600101611c47565b509050611bfd565b80600081518110611d2757fe5b602002602001015191505091905056fea265627a7a723158208d99fb1bb6bd67fea1fac32448e701d04345610c4c83b53060d484d6ae7d583a64736f6c63430005100032" // DeployExecutionChallenge deploys a new Ethereum contract, binding an instance of ExecutionChallenge to it. func DeployExecutionChallenge(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ExecutionChallenge, error) { @@ -4095,7 +4095,7 @@ func (_Protocol *ProtocolTransactorRaw) Transact(opts *bind.TransactOpts, method const RollupTimeABI = "[]" // RollupTimeBin is the compiled bytecode used for deploying new contracts. -var RollupTimeBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820567bd523c2a3835903bc4c15252e3f5047d94de05e366f7ab59d27a918b7780e64736f6c63430005100032" +var RollupTimeBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820f76b65696b1afe111f7238e21468898d3dadc1892616aade3f30e3139577028064736f6c63430005100032" // DeployRollupTime deploys a new Ethereum contract, binding an instance of RollupTime to it. func DeployRollupTime(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RollupTime, error) { diff --git a/packages/arb-validator/ethbridge/messageschallenge/messageschallenge.go b/packages/arb-validator/ethbridge/messageschallenge/messageschallenge.go index 260829c06d..79864eda19 100644 --- a/packages/arb-validator/ethbridge/messageschallenge/messageschallenge.go +++ b/packages/arb-validator/ethbridge/messageschallenge/messageschallenge.go @@ -2509,7 +2509,7 @@ var MessagesChallengeFuncSigs = map[string]string{ } // MessagesChallengeBin is the compiled bytecode used for deploying new contracts. -var MessagesChallengeBin = "0x608060405234801561001057600080fd5b50612ae4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636cb4b10a1161005b5780636cb4b10a1461029957806379a9ad85146102ee578063ced5c1bf1461039e578063d9b94b4a146103a657610088565b806302ad1e4e1461008d578063293a3b88146100d1578063500439e51461011f578063569d893d14610244575b600080fd5b6100cf600480360360a08110156100a357600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135610487565b005b6100cf600480360360e08110156100e757600080fd5b508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a08101359060c0013561049c565b6100cf6004803603606081101561013557600080fd5b810190602081018135600160201b81111561014f57600080fd5b82018360208201111561016157600080fd5b803590602001918460208302840111600160201b8311171561018257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156101d157600080fd5b8201836020820111156101e357600080fd5b803590602001918460208302840111600160201b8311171561020457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610691915050565b6100cf600480360361010081101561025b57600080fd5b508035906020810135906001600160a01b03604082013581169160608101358216916080820135169060a08101359060c08101359060e00135610b10565b6100cf60048036036101008110156102b057600080fd5b508035906020810135906001600160a01b03604082013581169160608101358216916080820135169060a08101359060c08101359060e00135610ccb565b6100cf6004803603608081101561030457600080fd5b81359190810190604081016020820135600160201b81111561032557600080fd5b82018360208201111561033757600080fd5b803590602001918460018302840111600160201b8311171561035857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135610e6c565b6100cf61112d565b6100cf60048036036101208110156103bd57600080fd5b8135916020810135916001600160a01b036040830135811692606081013582169260808201359092169160a08201359160c081013591810190610100810160e0820135600160201b81111561041157600080fd5b82018360208201111561042357600080fd5b803590602001918460018302840111600160201b8311171561044457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061120d915050565b610493858585856113cb565b60065550505050565b60055460ff1660028111156104ad57fe5b600114604051806040016040528060098152602001684249535f535441544560b81b8152509061055b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610520578181015183820152602001610508565b50505050905090810190601f16801561054d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600354610568436114e6565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b815250906105db5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b031633146106575760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600061066786868686866114f1565b90506000610678878787878761155c565b905061068689898484611738565b505050505050505050565b60055460ff1660028111156106a257fe5b600114604051806040016040528060098152602001684249535f535441544560b81b815250906107135760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600354610720436114e6565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b815250906107935760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b0316331461080f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b508251825160408051808201909152600d81526c2429afa124a9afa4a7282622a760991b602082015260001983019290911461088c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b506108f06108eb856000815181106108a057fe5b60200260200101518684815181106108b457fe5b6020026020010151866000815181106108c957fe5b60200260200101518786815181106108dd57fe5b602002602001015187611792565b6117d8565b60608160405190808252806020026020018201604052801561091c578160200160208202803883390190505b5090506109858560008151811061092f57fe5b60200260200101518660018151811061094457fe5b60200260200101518660008151811061095957fe5b60200260200101518760018151811061096e57fe5b6020026020010151610980888861184e565b611792565b8160008151811061099257fe5b602090810291909101015260015b82811015610a2a57610a0b8682815181106109b757fe5b60200260200101518783600101815181106109ce57fe5b60200260200101518784815181106109e257fe5b60200260200101518885600101815181106109f957fe5b6020026020010151610980898961186c565b828281518110610a1757fe5b60209081029190910101526001016109a0565b50610a348161187f565b610a3c61188e565b7f500c4a1bbd12a65d684bde95626a41abdd6a8c5d30f84c5c9b81e5bdb0cc0bd3858585600354604051808060200180602001858152602001848152602001838103835287818151815260200191508051906020019060200280838360005b83811015610ab3578181015183820152602001610a9b565b50505050905001838103825286818151815260200191508051906020019060200280838360005b83811015610af2578181015183820152602001610ada565b50505050905001965050505050505060405180910390a15050505050565b60055460ff166002811115610b2157fe5b600114604051806040016040528060098152602001684249535f535441544560b81b81525090610b925760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600354610b9f436114e6565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b81525090610c125760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b03163314610c8e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b506000610c9f8787878787876118ab565b90506000610cb18888888888886118c8565b9050610cbf8a8a8484611738565b50505050505050505050565b60055460ff166002811115610cdc57fe5b600114604051806040016040528060098152602001684249535f535441544560b81b81525090610d4d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600354610d5a436114e6565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b81525090610dcd5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b03163314610e495760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b506000610e5a8787878787876118da565b90506000610cb18888888888886118ec565b60055460ff166002811115610e7d57fe5b60021460405180604001604052806009815260200168434f4e5f535441544560b81b81525090610eee5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600354610efb436114e6565b11156040518060400160405280600c81526020016b434f4e5f444541444c494e4560a01b81525090610f6e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060025460408051808201909152600a81526921a7a72fa9a2a72222a960b11b6020820152906001600160a01b03163314610fea5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060065482146040518060400160405280600881526020016721a7a72fa82922ab60c11b8152509061105d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5061106d838383876001016118fe565b6040518060400160405280600981526020016821a7a72fa82927a7a360b91b815250906110db5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060068190556110e9611a01565b60035460408051868152602081019290925280517f1e1c1e4e68a25c69a078a396e73975691c071d69ef789015dc16a562957804e49281900390910190a150505050565b600354611139436114e6565b1161118b576040805162461bcd60e51b815260206004820152601760248201527f446561646c696e65206861736e27742065787069726564000000000000000000604482015290519081900360640190fd5b600160055460ff16600281111561119e57fe5b14156111da576040517f2b92a4b014281aa2424baba9ea60bf4f26833d1c1fbd873e51cd1a6caeef48f090600090a16111d5611a14565b61120b565b6040517f4e1f1f06cf69d199fcdb4d87a5a92d5248ca6b540e9fc2d3698927c5002a236a90600090a161120b611a1f565b565b60055460ff16600281111561121e57fe5b600114604051806040016040528060098152602001684249535f535441544560b81b8152509061128f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060035461129c436114e6565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b8152509061130f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b0316331461138b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600061139d88888888888888611a27565b905060006113b089898989898989611b1c565b90506113be8b8b8484611738565b5050505050505050505050565b600060055460ff1660028111156113de57fe5b146040518060400160405280600f81526020016e4348414c5f494e49545f535441544560881b815250906114535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600080546001600160a01b038681166001600160a01b03199283161790925560018054868416908316178155600280549386169390921692909217905560048290556005805460ff191690911790556114ab611dc5565b60035460408051918252517fe070f23072cbc6c0fc7253b8d0120649d5f9d6e19a8aeab79eb50aa6360bcc679181900360200190a150505050565b6132c881025b919050565b60408051600160f81b6020808301919091526bffffffffffffffffffffffff19606089811b8216602185015288901b166035830152604982018690526069820185905260898083018590528351808403909101815260a9909201909252805191012095945050505050565b60408051600280825260608281019093526000929190816020015b61157f612a48565b8152602001906001900390816115775790505090506115a6876001600160a01b0316611dd7565b816000815181106115b357fe5b60200260200101819052506115c785611dd7565b816001815181106115d457fe5b602090810291909101015260408051600380825260808201909252606091816020015b6115ff612a48565b8152602001906001900390816115f757905050905061161e6001611dd7565b8160008151811061162b57fe5b6020026020010181905250611648876001600160a01b0316611dd7565b8160018151811061165557fe5b602002602001018190525061166982611e55565b8160028151811061167657fe5b602090810291909101015260408051600380825260808201909252606091816020015b6116a1612a48565b8152602001906001900390816116995790505090506116bf86611dd7565b816000815181106116cc57fe5b60200260200101819052506116e085611dd7565b816001815181106116ed57fe5b602002602001018190525061170182611e55565b8160028151811061170e57fe5b602002602001018190525061172a61172582611e55565b611f05565b519998505050505050505050565b61175b6108eb85611749878661203b565b866117548887612067565b6001611792565b6040517f117efdf1fdd8be5a6ff0fb3c32333d7033bbd9523924bd0d9ca28f43540516f590600090a161178c611a1f565b50505050565b60408051602080820197909752808201959095526060850193909352608084019190915260a0808401919091528151808403909101815260c09092019052805191012090565b6006548114604051806040016040528060088152602001672124a9afa82922ab60c11b8152509061184a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5050565b600081838161185957fe5b0682848161186357fe5b04019392505050565b600081838161187757fe5b049392505050565b6118888161209c565b60065550565b600580546002919060ff19166001835b021790555061120b611dc5565b60006118bd60028888888888886121da565b979650505050505050565b60006118bd6002888888888888612258565b60006118bd60038888888888886121da565b60006118bd6003888888888888612258565b600080838160205b885181116119f1578089015193506020818a51036020018161192457fe5b0491505b60008211801561193b5750600286066001145b801561194957508160020a86115b1561195c57600286046001019550611928565b600286066119a757838360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092506002868161199f57fe5b0495506119e9565b82846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250600286816119e257fe5b0460010195505b602001611906565b505085149150505b949350505050565b600580546001919060ff1916828061189e565b611a1c61245e565b33ff5b611a1c6124d4565b60008088888888888888604051602001808960ff1660ff1660f81b8152600101886001600160a01b03166001600160a01b031660601b8152601401876001600160a01b03166001600160a01b031660601b8152601401866001600160a01b03166001600160a01b031660601b815260140185815260200184815260200183805190602001908083835b60208310611acf5780518252601f199092019160209182019101611ab0565b51815160001960209485036101000a019081169019919091161790529201938452506040805180850381529382019052825192019190912098505050505050505050979650505050505050565b6000806000898989898989604051602001808860ff1660ff1660f81b8152600101876001600160a01b03166001600160a01b031660601b8152601401866001600160a01b03166001600160a01b031660601b8152601401856001600160a01b03166001600160a01b031660601b815260140184815260200183815260200182805190602001908083835b60208310611bc55780518252601f199092019160209182019101611ba6565b6001836020036101000a0380198251168184511680821785525050505050509050019750505050505050506040516020818303038152906040528051906020012090506000611c1385612533565b60408051600480825260a0820190925291925060609190816020015b611c37612a48565b815260200190600190039081611c2f579050509050611c5e8a6001600160a01b0316611dd7565b81600081518110611c6b57fe5b6020026020010181905250611c7f88611dd7565b81600181518110611c8c57fe5b6020026020010181905250611ca087611dd7565b81600281518110611cad57fe5b6020026020010181905250611cc182612627565b81600381518110611cce57fe5b602090810291909101015260408051600380825260808201909252606091816020015b611cf9612a48565b815260200190600190039081611cf1579050509050611d186000611dd7565b81600081518110611d2557fe5b6020026020010181905250611d428a6001600160a01b0316611dd7565b81600181518110611d4f57fe5b6020026020010181905250611d6382611e55565b81600281518110611d7057fe5b6020026020010181905250611db56040518060600160405280611d9289611dd7565b8152602001611da087611dd7565b8152602001611dae84611e55565b90526126a5565b9c9b505050505050505050505050565b600454611dd1436114e6565b01600355565b611ddf612a48565b604080516080808201835284825282519081018352600080825260208281018290528285018290526060830182905280840192909252835181815291820184529192830191611e44565b611e31612a48565b815260200190600190039081611e295790505b508152600060209091015292915050565b611e5d612a48565b611e678251612725565b611eb8576040805162461bcd60e51b815260206004820152601a60248201527f5475706c65206d75737420686176652076616c69642073697a65000000000000604482015290519081900360640190fd5b5060408051608080820183526000808352835191820184528082526020828101829052828501829052606080840192909252830191909152918101839052915160030160ff169082015290565b611f0d612a76565b6060820151600c60ff90911610611f5f576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207479706520636f646560781b604482015290519081900360640190fd5b606082015160ff16611f8c576040518060200160405280611f83846000015161272c565b905290506114ec565b606082015160ff1660011415611fd3576040518060200160405280611f83846020015160000151856020015160400151866020015160600151876020015160200151612750565b606082015160ff1660021415611ff857506040805160208101909152815181526114ec565b600360ff16826060015160ff161015801561201c57506060820151600c60ff909116105b15612039576040518060200160405280611f8384604001516127f8565bfe5b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b6000612095604051806040016040528061208086612627565b815260200161208e85612627565b9052612944565b9392505050565b6000815b6001815111156121bd57606060028251600101816120ba57fe5b046040519080825280602002602001820160405280156120e4578160200160208202803883390190505b50905060005b81518110156121b557825181600202600101101561217d5782816002028151811061211157fe5b602002602001015183826002026001018151811061212b57fe5b602002602001015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012082828151811061216c57fe5b6020026020010181815250506121ad565b82816002028151811061218c57fe5b60200260200101518282815181106121a057fe5b6020026020010181815250505b6001016120ea565b5090506120a0565b806000815181106121ca57fe5b6020026020010151915050919050565b6040805160f89890981b6001600160f81b0319166020808a0191909152606097881b6bffffffffffffffffffffffff1990811660218b015296881b871660358a01529490961b9094166049870152605d860191909152607d850152609d808501929092528251808503909201825260bd909301909152805191012090565b6040805160038082526080820190925260009160609190816020015b61227c612a48565b8152602001906001900390816122745790505090506122a3866001600160a01b0316611dd7565b816000815181106122b057fe5b60200260200101819052506122cd886001600160a01b0316611dd7565b816001815181106122da57fe5b60200260200101819052506122ee85611dd7565b816002815181106122fb57fe5b602090810291909101015260408051600380825260808201909252606091816020015b612326612a48565b81526020019060019003908161231e5790505090506123478a60ff16611dd7565b8160008151811061235457fe5b6020026020010181905250612371886001600160a01b0316611dd7565b8160018151811061237e57fe5b602002602001018190525061239282611e55565b8160028151811061239f57fe5b602090810291909101015260408051600380825260808201909252606091816020015b6123ca612a48565b8152602001906001900390816123c25790505090506123e886611dd7565b816000815181106123f557fe5b602002602001018190525061240985611dd7565b8160018151811061241657fe5b602002602001018190525061242a82611e55565b8160028151811061243757fe5b602002602001018190525061244e61172582611e55565b519b9a5050505050505050505050565b6000805460025460018054604080516335e1e69160e11b81526001600160a01b0394851660048201529184166024830152604482019290925290519190921692636bc3cd22926064808201939182900301818387803b1580156124c057600080fd5b505af115801561178c573d6000803e3d6000fd5b6000805460018054600254604080516335e1e69160e11b81526001600160a01b039384166004820152918316602483015260448201939093529151921692636bc3cd229260648084019382900301818387803b1580156124c057600080fd5b8051600090602080820490601f8301048361254c6129b9565b905060005b8381101561259d57612593604051806040016040528061257085612627565b815260200161208e61258e856020028c612a2c90919063ffffffff16565b611dd7565b9150600101612551565b50818310156125f85760006125bc87601f19870163ffffffff612a2c16565b905083602002856020030360080281901b90506125f460405180604001604052806125e685612627565b815260200161208e84611dd7565b9150505b61261d604051806040016040528061260f87611dd7565b815260200161208e84612627565b9695505050505050565b61262f612a48565b604080516080808201835284825282519081018352600080825260208281018290528285018290526060830182905280840192909252835181815291820184529192830191612694565b612681612a48565b8152602001906001900390816126795790505b508152600260209091015292915050565b6040805160038082526080820190925260009160609190816020015b6126c9612a48565b8152602001906001900390816126c1575050805190915060005b8181101561271b578481600381106126f757fe5b602002015183828151811061270857fe5b60209081029190910101526001016126e3565b506119f9826127f8565b6008101590565b60408051602080820193909352815180820384018152908201909152805191012090565b600083156127aa575060408051600160f81b6020808301919091526001600160f81b031960f888901b16602183015260228201859052604280830185905283518084039091018152606290920190925280519101206119f9565b5060408051600160f81b6020808301919091526001600160f81b031960f888901b16602183015260228083018590528351808403909101815260429092019092528051910120949350505050565b6000600882511115612848576040805162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840e8eae0d8ca40d8cadccee8d60631b604482015290519081900360640190fd5b60608251604051908082528060200260200182016040528015612875578160200160208202803883390190505b50805190915060005b818110156128d15761288e612a76565b6128aa86838151811061289d57fe5b6020026020010151611f05565b905080600001518483815181106128bd57fe5b60209081029190910101525060010161287e565b508351600360ff160182604051602001808360ff1660ff1660f81b8152600101828051906020019060200280838360005b8381101561291a578181015183820152602001612902565b50505050905001925050506040516020818303038152906040528051906020012092505050919050565b60408051600280825260608281019093526000929190816020015b612967612a48565b81526020019060019003908161295f575050805190915060005b8181101561271b5784816002811061299557fe5b60200201518382815181106129a657fe5b6020908102919091010152600101612981565b6040805160008082526020808301808552600360f81b948401948552835192946003938593919260418501929091028083838a5b83811015612a055781810151838201526020016129ed565b50505050905001925050506040516020818303038152906040528051906020012091505090565b60008160200183511015612a3f57600080fd5b50016020015190565b604051806080016040528060008152602001612a62612a88565b815260606020820152600060409091015290565b60408051602081019091526000815290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea265627a7a72315820ac4284673d7902b1184c70a3f623ffc5c59f0b405b84f4304ba6d550ac616a4664736f6c63430005100032" +var MessagesChallengeBin = "0x608060405234801561001057600080fd5b50612ae4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80636cb4b10a1161005b5780636cb4b10a1461029957806379a9ad85146102ee578063ced5c1bf1461039e578063d9b94b4a146103a657610088565b806302ad1e4e1461008d578063293a3b88146100d1578063500439e51461011f578063569d893d14610244575b600080fd5b6100cf600480360360a08110156100a357600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135610487565b005b6100cf600480360360e08110156100e757600080fd5b508035906020810135906001600160a01b03604082013581169160608101359091169060808101359060a08101359060c0013561049c565b6100cf6004803603606081101561013557600080fd5b810190602081018135600160201b81111561014f57600080fd5b82018360208201111561016157600080fd5b803590602001918460208302840111600160201b8311171561018257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156101d157600080fd5b8201836020820111156101e357600080fd5b803590602001918460208302840111600160201b8311171561020457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610691915050565b6100cf600480360361010081101561025b57600080fd5b508035906020810135906001600160a01b03604082013581169160608101358216916080820135169060a08101359060c08101359060e00135610b10565b6100cf60048036036101008110156102b057600080fd5b508035906020810135906001600160a01b03604082013581169160608101358216916080820135169060a08101359060c08101359060e00135610ccb565b6100cf6004803603608081101561030457600080fd5b81359190810190604081016020820135600160201b81111561032557600080fd5b82018360208201111561033757600080fd5b803590602001918460018302840111600160201b8311171561035857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060200135610e6c565b6100cf61112d565b6100cf60048036036101208110156103bd57600080fd5b8135916020810135916001600160a01b036040830135811692606081013582169260808201359092169160a08201359160c081013591810190610100810160e0820135600160201b81111561041157600080fd5b82018360208201111561042357600080fd5b803590602001918460018302840111600160201b8311171561044457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061120d915050565b610493858585856113cb565b60065550505050565b60055460ff1660028111156104ad57fe5b600114604051806040016040528060098152602001684249535f535441544560b81b8152509061055b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610520578181015183820152602001610508565b50505050905090810190601f16801561054d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600354610568436114e6565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b815250906105db5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b031633146106575760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600061066786868686866114f1565b90506000610678878787878761155c565b905061068689898484611738565b505050505050505050565b60055460ff1660028111156106a257fe5b600114604051806040016040528060098152602001684249535f535441544560b81b815250906107135760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600354610720436114e6565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b815250906107935760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b0316331461080f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b508251825160408051808201909152600d81526c2429afa124a9afa4a7282622a760991b602082015260001983019290911461088c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b506108f06108eb856000815181106108a057fe5b60200260200101518684815181106108b457fe5b6020026020010151866000815181106108c957fe5b60200260200101518786815181106108dd57fe5b602002602001015187611792565b6117d8565b60608160405190808252806020026020018201604052801561091c578160200160208202803883390190505b5090506109858560008151811061092f57fe5b60200260200101518660018151811061094457fe5b60200260200101518660008151811061095957fe5b60200260200101518760018151811061096e57fe5b6020026020010151610980888861184e565b611792565b8160008151811061099257fe5b602090810291909101015260015b82811015610a2a57610a0b8682815181106109b757fe5b60200260200101518783600101815181106109ce57fe5b60200260200101518784815181106109e257fe5b60200260200101518885600101815181106109f957fe5b6020026020010151610980898961186c565b828281518110610a1757fe5b60209081029190910101526001016109a0565b50610a348161187f565b610a3c61188e565b7f500c4a1bbd12a65d684bde95626a41abdd6a8c5d30f84c5c9b81e5bdb0cc0bd3858585600354604051808060200180602001858152602001848152602001838103835287818151815260200191508051906020019060200280838360005b83811015610ab3578181015183820152602001610a9b565b50505050905001838103825286818151815260200191508051906020019060200280838360005b83811015610af2578181015183820152602001610ada565b50505050905001965050505050505060405180910390a15050505050565b60055460ff166002811115610b2157fe5b600114604051806040016040528060098152602001684249535f535441544560b81b81525090610b925760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600354610b9f436114e6565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b81525090610c125760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b03163314610c8e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b506000610c9f8787878787876118ab565b90506000610cb18888888888886118c8565b9050610cbf8a8a8484611738565b50505050505050505050565b60055460ff166002811115610cdc57fe5b600114604051806040016040528060098152602001684249535f535441544560b81b81525090610d4d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600354610d5a436114e6565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b81525090610dcd5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b03163314610e495760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b506000610e5a8787878787876118da565b90506000610cb18888888888886118ec565b60055460ff166002811115610e7d57fe5b60021460405180604001604052806009815260200168434f4e5f535441544560b81b81525090610eee5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600354610efb436114e6565b11156040518060400160405280600c81526020016b434f4e5f444541444c494e4560a01b81525090610f6e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060025460408051808201909152600a81526921a7a72fa9a2a72222a960b11b6020820152906001600160a01b03163314610fea5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060065482146040518060400160405280600881526020016721a7a72fa82922ab60c11b8152509061105d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5061106d838383876001016118fe565b6040518060400160405280600981526020016821a7a72fa82927a7a360b91b815250906110db5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060068190556110e9611a01565b60035460408051868152602081019290925280517f1e1c1e4e68a25c69a078a396e73975691c071d69ef789015dc16a562957804e49281900390910190a150505050565b600354611139436114e6565b1161118b576040805162461bcd60e51b815260206004820152601760248201527f446561646c696e65206861736e27742065787069726564000000000000000000604482015290519081900360640190fd5b600160055460ff16600281111561119e57fe5b14156111da576040517f2b92a4b014281aa2424baba9ea60bf4f26833d1c1fbd873e51cd1a6caeef48f090600090a16111d5611a14565b61120b565b6040517f4e1f1f06cf69d199fcdb4d87a5a92d5248ca6b540e9fc2d3698927c5002a236a90600090a161120b611a1f565b565b60055460ff16600281111561121e57fe5b600114604051806040016040528060098152602001684249535f535441544560b81b8152509061128f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060035461129c436114e6565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b8152509061130f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b0316331461138b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600061139d88888888888888611a27565b905060006113b089898989898989611b1c565b90506113be8b8b8484611738565b5050505050505050505050565b600060055460ff1660028111156113de57fe5b146040518060400160405280600f81526020016e4348414c5f494e49545f535441544560881b815250906114535760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b50600080546001600160a01b038681166001600160a01b03199283161790925560018054868416908316178155600280549386169390921692909217905560048290556005805460ff191690911790556114ab611dc5565b60035460408051918252517fe070f23072cbc6c0fc7253b8d0120649d5f9d6e19a8aeab79eb50aa6360bcc679181900360200190a150505050565b6103e881025b919050565b60408051600160f81b6020808301919091526bffffffffffffffffffffffff19606089811b8216602185015288901b166035830152604982018690526069820185905260898083018590528351808403909101815260a9909201909252805191012095945050505050565b60408051600280825260608281019093526000929190816020015b61157f612a48565b8152602001906001900390816115775790505090506115a6876001600160a01b0316611dd7565b816000815181106115b357fe5b60200260200101819052506115c785611dd7565b816001815181106115d457fe5b602090810291909101015260408051600380825260808201909252606091816020015b6115ff612a48565b8152602001906001900390816115f757905050905061161e6001611dd7565b8160008151811061162b57fe5b6020026020010181905250611648876001600160a01b0316611dd7565b8160018151811061165557fe5b602002602001018190525061166982611e55565b8160028151811061167657fe5b602090810291909101015260408051600380825260808201909252606091816020015b6116a1612a48565b8152602001906001900390816116995790505090506116bf86611dd7565b816000815181106116cc57fe5b60200260200101819052506116e085611dd7565b816001815181106116ed57fe5b602002602001018190525061170182611e55565b8160028151811061170e57fe5b602002602001018190525061172a61172582611e55565b611f05565b519998505050505050505050565b61175b6108eb85611749878661203b565b866117548887612067565b6001611792565b6040517f117efdf1fdd8be5a6ff0fb3c32333d7033bbd9523924bd0d9ca28f43540516f590600090a161178c611a1f565b50505050565b60408051602080820197909752808201959095526060850193909352608084019190915260a0808401919091528151808403909101815260c09092019052805191012090565b6006548114604051806040016040528060088152602001672124a9afa82922ab60c11b8152509061184a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610520578181015183820152602001610508565b5050565b600081838161185957fe5b0682848161186357fe5b04019392505050565b600081838161187757fe5b049392505050565b6118888161209c565b60065550565b600580546002919060ff19166001835b021790555061120b611dc5565b60006118bd60028888888888886121da565b979650505050505050565b60006118bd6002888888888888612258565b60006118bd60038888888888886121da565b60006118bd6003888888888888612258565b600080838160205b885181116119f1578089015193506020818a51036020018161192457fe5b0491505b60008211801561193b5750600286066001145b801561194957508160020a86115b1561195c57600286046001019550611928565b600286066119a757838360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092506002868161199f57fe5b0495506119e9565b82846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209250600286816119e257fe5b0460010195505b602001611906565b505085149150505b949350505050565b600580546001919060ff1916828061189e565b611a1c61245e565b33ff5b611a1c6124d4565b60008088888888888888604051602001808960ff1660ff1660f81b8152600101886001600160a01b03166001600160a01b031660601b8152601401876001600160a01b03166001600160a01b031660601b8152601401866001600160a01b03166001600160a01b031660601b815260140185815260200184815260200183805190602001908083835b60208310611acf5780518252601f199092019160209182019101611ab0565b51815160001960209485036101000a019081169019919091161790529201938452506040805180850381529382019052825192019190912098505050505050505050979650505050505050565b6000806000898989898989604051602001808860ff1660ff1660f81b8152600101876001600160a01b03166001600160a01b031660601b8152601401866001600160a01b03166001600160a01b031660601b8152601401856001600160a01b03166001600160a01b031660601b815260140184815260200183815260200182805190602001908083835b60208310611bc55780518252601f199092019160209182019101611ba6565b6001836020036101000a0380198251168184511680821785525050505050509050019750505050505050506040516020818303038152906040528051906020012090506000611c1385612533565b60408051600480825260a0820190925291925060609190816020015b611c37612a48565b815260200190600190039081611c2f579050509050611c5e8a6001600160a01b0316611dd7565b81600081518110611c6b57fe5b6020026020010181905250611c7f88611dd7565b81600181518110611c8c57fe5b6020026020010181905250611ca087611dd7565b81600281518110611cad57fe5b6020026020010181905250611cc182612627565b81600381518110611cce57fe5b602090810291909101015260408051600380825260808201909252606091816020015b611cf9612a48565b815260200190600190039081611cf1579050509050611d186000611dd7565b81600081518110611d2557fe5b6020026020010181905250611d428a6001600160a01b0316611dd7565b81600181518110611d4f57fe5b6020026020010181905250611d6382611e55565b81600281518110611d7057fe5b6020026020010181905250611db56040518060600160405280611d9289611dd7565b8152602001611da087611dd7565b8152602001611dae84611e55565b90526126a5565b9c9b505050505050505050505050565b600454611dd1436114e6565b01600355565b611ddf612a48565b604080516080808201835284825282519081018352600080825260208281018290528285018290526060830182905280840192909252835181815291820184529192830191611e44565b611e31612a48565b815260200190600190039081611e295790505b508152600060209091015292915050565b611e5d612a48565b611e678251612725565b611eb8576040805162461bcd60e51b815260206004820152601a60248201527f5475706c65206d75737420686176652076616c69642073697a65000000000000604482015290519081900360640190fd5b5060408051608080820183526000808352835191820184528082526020828101829052828501829052606080840192909252830191909152918101839052915160030160ff169082015290565b611f0d612a76565b6060820151600c60ff90911610611f5f576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207479706520636f646560781b604482015290519081900360640190fd5b606082015160ff16611f8c576040518060200160405280611f83846000015161272c565b905290506114ec565b606082015160ff1660011415611fd3576040518060200160405280611f83846020015160000151856020015160400151866020015160600151876020015160200151612750565b606082015160ff1660021415611ff857506040805160208101909152815181526114ec565b600360ff16826060015160ff161015801561201c57506060820151600c60ff909116105b15612039576040518060200160405280611f8384604001516127f8565bfe5b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b6000612095604051806040016040528061208086612627565b815260200161208e85612627565b9052612944565b9392505050565b6000815b6001815111156121bd57606060028251600101816120ba57fe5b046040519080825280602002602001820160405280156120e4578160200160208202803883390190505b50905060005b81518110156121b557825181600202600101101561217d5782816002028151811061211157fe5b602002602001015183826002026001018151811061212b57fe5b602002602001015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012082828151811061216c57fe5b6020026020010181815250506121ad565b82816002028151811061218c57fe5b60200260200101518282815181106121a057fe5b6020026020010181815250505b6001016120ea565b5090506120a0565b806000815181106121ca57fe5b6020026020010151915050919050565b6040805160f89890981b6001600160f81b0319166020808a0191909152606097881b6bffffffffffffffffffffffff1990811660218b015296881b871660358a01529490961b9094166049870152605d860191909152607d850152609d808501929092528251808503909201825260bd909301909152805191012090565b6040805160038082526080820190925260009160609190816020015b61227c612a48565b8152602001906001900390816122745790505090506122a3866001600160a01b0316611dd7565b816000815181106122b057fe5b60200260200101819052506122cd886001600160a01b0316611dd7565b816001815181106122da57fe5b60200260200101819052506122ee85611dd7565b816002815181106122fb57fe5b602090810291909101015260408051600380825260808201909252606091816020015b612326612a48565b81526020019060019003908161231e5790505090506123478a60ff16611dd7565b8160008151811061235457fe5b6020026020010181905250612371886001600160a01b0316611dd7565b8160018151811061237e57fe5b602002602001018190525061239282611e55565b8160028151811061239f57fe5b602090810291909101015260408051600380825260808201909252606091816020015b6123ca612a48565b8152602001906001900390816123c25790505090506123e886611dd7565b816000815181106123f557fe5b602002602001018190525061240985611dd7565b8160018151811061241657fe5b602002602001018190525061242a82611e55565b8160028151811061243757fe5b602002602001018190525061244e61172582611e55565b519b9a5050505050505050505050565b6000805460025460018054604080516335e1e69160e11b81526001600160a01b0394851660048201529184166024830152604482019290925290519190921692636bc3cd22926064808201939182900301818387803b1580156124c057600080fd5b505af115801561178c573d6000803e3d6000fd5b6000805460018054600254604080516335e1e69160e11b81526001600160a01b039384166004820152918316602483015260448201939093529151921692636bc3cd229260648084019382900301818387803b1580156124c057600080fd5b8051600090602080820490601f8301048361254c6129b9565b905060005b8381101561259d57612593604051806040016040528061257085612627565b815260200161208e61258e856020028c612a2c90919063ffffffff16565b611dd7565b9150600101612551565b50818310156125f85760006125bc87601f19870163ffffffff612a2c16565b905083602002856020030360080281901b90506125f460405180604001604052806125e685612627565b815260200161208e84611dd7565b9150505b61261d604051806040016040528061260f87611dd7565b815260200161208e84612627565b9695505050505050565b61262f612a48565b604080516080808201835284825282519081018352600080825260208281018290528285018290526060830182905280840192909252835181815291820184529192830191612694565b612681612a48565b8152602001906001900390816126795790505b508152600260209091015292915050565b6040805160038082526080820190925260009160609190816020015b6126c9612a48565b8152602001906001900390816126c1575050805190915060005b8181101561271b578481600381106126f757fe5b602002015183828151811061270857fe5b60209081029190910101526001016126e3565b506119f9826127f8565b6008101590565b60408051602080820193909352815180820384018152908201909152805191012090565b600083156127aa575060408051600160f81b6020808301919091526001600160f81b031960f888901b16602183015260228201859052604280830185905283518084039091018152606290920190925280519101206119f9565b5060408051600160f81b6020808301919091526001600160f81b031960f888901b16602183015260228083018590528351808403909101815260429092019092528051910120949350505050565b6000600882511115612848576040805162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840e8eae0d8ca40d8cadccee8d60631b604482015290519081900360640190fd5b60608251604051908082528060200260200182016040528015612875578160200160208202803883390190505b50805190915060005b818110156128d15761288e612a76565b6128aa86838151811061289d57fe5b6020026020010151611f05565b905080600001518483815181106128bd57fe5b60209081029190910101525060010161287e565b508351600360ff160182604051602001808360ff1660ff1660f81b8152600101828051906020019060200280838360005b8381101561291a578181015183820152602001612902565b50505050905001925050506040516020818303038152906040528051906020012092505050919050565b60408051600280825260608281019093526000929190816020015b612967612a48565b81526020019060019003908161295f575050805190915060005b8181101561271b5784816002811061299557fe5b60200201518382815181106129a657fe5b6020908102919091010152600101612981565b6040805160008082526020808301808552600360f81b948401948552835192946003938593919260418501929091028083838a5b83811015612a055781810151838201526020016129ed565b50505050905001925050506040516020818303038152906040528051906020012091505090565b60008160200183511015612a3f57600080fd5b50016020015190565b604051806080016040528060008152602001612a62612a88565b815260606020820152600060409091015290565b60408051602081019091526000815290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea265627a7a723158200a4e67891138346d039115207f60d6f50f573aef9f9ee1e58e4292e63565e76b64736f6c63430005100032" // DeployMessagesChallenge deploys a new Ethereum contract, binding an instance of MessagesChallenge to it. func DeployMessagesChallenge(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *MessagesChallenge, error) { @@ -3800,7 +3800,7 @@ func (_Protocol *ProtocolTransactorRaw) Transact(opts *bind.TransactOpts, method const RollupTimeABI = "[]" // RollupTimeBin is the compiled bytecode used for deploying new contracts. -var RollupTimeBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820567bd523c2a3835903bc4c15252e3f5047d94de05e366f7ab59d27a918b7780e64736f6c63430005100032" +var RollupTimeBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820f76b65696b1afe111f7238e21468898d3dadc1892616aade3f30e3139577028064736f6c63430005100032" // DeployRollupTime deploys a new Ethereum contract, binding an instance of RollupTime to it. func DeployRollupTime(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RollupTime, error) { diff --git a/packages/arb-validator/ethbridge/pendingtopchallenge/pendingtopchallenge.go b/packages/arb-validator/ethbridge/pendingtopchallenge/pendingtopchallenge.go index 31f9f53be7..d1af1eb99b 100644 --- a/packages/arb-validator/ethbridge/pendingtopchallenge/pendingtopchallenge.go +++ b/packages/arb-validator/ethbridge/pendingtopchallenge/pendingtopchallenge.go @@ -2344,7 +2344,7 @@ var PendingTopChallengeFuncSigs = map[string]string{ } // PendingTopChallengeBin is the compiled bytecode used for deploying new contracts. -var PendingTopChallengeBin = "0x608060405234801561001057600080fd5b5061115f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806302ad1e4e1461005c57806337423267146100a057806379a9ad8514610145578063ced5c1bf146101f7578063df9ce01b146101ff575b600080fd5b61009e600480360360a081101561007257600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135610222565b005b61009e600480360360408110156100b657600080fd5b8101906020810181356401000000008111156100d157600080fd5b8201836020820111156100e357600080fd5b8035906020019184602083028401116401000000008311171561010557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610237915050565b61009e6004803603608081101561015b57600080fd5b8135919081019060408101602082013564010000000081111561017d57600080fd5b82018360208201111561018f57600080fd5b803590602001918460018302840111640100000000831117156101b157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050823593505050602001356105f9565b61009e6108ba565b61009e6004803603604081101561021557600080fd5b508035906020013561099a565b61022e85858585610b66565b60065550505050565b60055460ff16600281111561024857fe5b600114604051806040016040528060098152602001684249535f535441544560b81b815250906102f65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102bb5781810151838201526020016102a3565b50505050905090810190601f1680156102e85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060035461030343610c81565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b815250906103765760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b031633146103f25760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b506000600183510390506104366104318460008151811061040f57fe5b602002602001015185848151811061042357fe5b602002602001015185610c88565b610cbf565b600182116104755760405162461bcd60e51b815260040180806020018281038252602181526020018061110a6021913960400191505060405180910390fd5b6060816040519080825280602002602001820160405280156104a1578160200160208202803883390190505b5090506104e0846000815181106104b457fe5b6020026020010151856001815181106104c957fe5b60200260200101516104db8686610d31565b610c88565b816000815181106104ed57fe5b602090810291909101015260015b8281101561055a5761053b85828151811061051257fe5b602002602001015186836001018151811061052957fe5b60200260200101516104db8787610d4f565b82828151811061054757fe5b60209081029190910101526001016104fb565b5061056481610d62565b61056c610d71565b7f6ccb624e36453fb82f1a793715d74763283e458adc397e1f7d73dcdf604afbb184846003546040518080602001848152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156105de5781810151838201526020016105c6565b5050505090500194505050505060405180910390a150505050565b60055460ff16600281111561060a57fe5b60021460405180604001604052806009815260200168434f4e5f535441544560b81b8152509061067b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b5060035461068843610c81565b11156040518060400160405280600c81526020016b434f4e5f444541444c494e4560a01b815250906106fb5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b5060025460408051808201909152600a81526921a7a72fa9a2a72222a960b11b6020820152906001600160a01b031633146107775760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b5060065482146040518060400160405280600881526020016721a7a72fa82922ab60c11b815250906107ea5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b506107fa83838387600101610d8e565b6040518060400160405280600981526020016821a7a72fa82927a7a360b91b815250906108685760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b506006819055610876610e8f565b60035460408051868152602081019290925280517f1e1c1e4e68a25c69a078a396e73975691c071d69ef789015dc16a562957804e49281900390910190a150505050565b6003546108c643610c81565b11610918576040805162461bcd60e51b815260206004820152601760248201527f446561646c696e65206861736e27742065787069726564000000000000000000604482015290519081900360640190fd5b600160055460ff16600281111561092b57fe5b1415610967576040517f2b92a4b014281aa2424baba9ea60bf4f26833d1c1fbd873e51cd1a6caeef48f090600090a1610962610ea2565b610998565b6040517f4e1f1f06cf69d199fcdb4d87a5a92d5248ca6b540e9fc2d3698927c5002a236a90600090a1610998610ead565b565b60055460ff1660028111156109ab57fe5b600114604051806040016040528060098152602001684249535f535441544560b81b81525090610a1c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b50600354610a2943610c81565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b81525090610a9c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b03163314610b185760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b50610b3161043183610b2a8585610eb5565b6001610c88565b6040517f117efdf1fdd8be5a6ff0fb3c32333d7033bbd9523924bd0d9ca28f43540516f590600090a1610b62610ead565b5050565b600060055460ff166002811115610b7957fe5b146040518060400160405280600f81526020016e4348414c5f494e49545f535441544560881b81525090610bee5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b50600080546001600160a01b038681166001600160a01b03199283161790925560018054868416908316178155600280549386169390921692909217905560048290556005805460ff19169091179055610c46610ee1565b60035460408051918252517fe070f23072cbc6c0fc7253b8d0120649d5f9d6e19a8aeab79eb50aa6360bcc679181900360200190a150505050565b6132c80290565b6040805160208082019590955280820193909352606080840192909252805180840390920182526080909201909152805191012090565b6006548114604051806040016040528060088152602001672124a9afa82922ab60c11b81525090610b625760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b6000818381610d3c57fe5b06828481610d4657fe5b04019392505050565b6000818381610d5a57fe5b049392505050565b610d6b81610ef3565b60065550565b600580546002919060ff19166001835b0217905550610998610ee1565b600080838160205b88518111610e81578089015193506020818a510360200181610db457fe5b0491505b600082118015610dcb5750600286066001145b8015610dd957508160020a86115b15610dec57600286046001019550610db8565b60028606610e37578383604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120925060028681610e2f57fe5b049550610e79565b8284604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120925060028681610e7257fe5b0460010195505b602001610d96565b505090941495945050505050565b600580546001919060ff19168280610d81565b610eaa611031565b33ff5b610eaa6110aa565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b600454610eed43610c81565b01600355565b6000815b6001815111156110145760606002825160010181610f1157fe5b04604051908082528060200260200182016040528015610f3b578160200160208202803883390190505b50905060005b815181101561100c578251816002026001011015610fd457828160020281518110610f6857fe5b6020026020010151838260020260010181518110610f8257fe5b6020026020010151604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120828281518110610fc357fe5b602002602001018181525050611004565b828160020281518110610fe357fe5b6020026020010151828281518110610ff757fe5b6020026020010181815250505b600101610f41565b509050610ef7565b8060008151811061102157fe5b6020026020010151915050919050565b60008054600254600154604080516335e1e69160e11b81526001600160a01b039384166004820152918316602483015260448201859052519190921692636bc3cd22926064808201939182900301818387803b15801561109057600080fd5b505af11580156110a4573d6000803e3d6000fd5b50505050565b60008054600154600254604080516335e1e69160e11b81526001600160a01b039384166004820152918316602483015260448201859052519190921692636bc3cd22926064808201939182900301818387803b15801561109057600080fdfe43616e27742062697365637420636861696e206f66206c657373207468616e2032a265627a7a72315820a1cf6f64dc94f13fe87d5a929935960d9110747b77996aa9f9991927120e34a464736f6c63430005100032" +var PendingTopChallengeBin = "0x608060405234801561001057600080fd5b5061115f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806302ad1e4e1461005c57806337423267146100a057806379a9ad8514610145578063ced5c1bf146101f7578063df9ce01b146101ff575b600080fd5b61009e600480360360a081101561007257600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135610222565b005b61009e600480360360408110156100b657600080fd5b8101906020810181356401000000008111156100d157600080fd5b8201836020820111156100e357600080fd5b8035906020019184602083028401116401000000008311171561010557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610237915050565b61009e6004803603608081101561015b57600080fd5b8135919081019060408101602082013564010000000081111561017d57600080fd5b82018360208201111561018f57600080fd5b803590602001918460018302840111640100000000831117156101b157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050823593505050602001356105f9565b61009e6108ba565b61009e6004803603604081101561021557600080fd5b508035906020013561099a565b61022e85858585610b66565b60065550505050565b60055460ff16600281111561024857fe5b600114604051806040016040528060098152602001684249535f535441544560b81b815250906102f65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102bb5781810151838201526020016102a3565b50505050905090810190601f1680156102e85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060035461030343610c81565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b815250906103765760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b031633146103f25760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b506000600183510390506104366104318460008151811061040f57fe5b602002602001015185848151811061042357fe5b602002602001015185610c88565b610cbf565b600182116104755760405162461bcd60e51b815260040180806020018281038252602181526020018061110a6021913960400191505060405180910390fd5b6060816040519080825280602002602001820160405280156104a1578160200160208202803883390190505b5090506104e0846000815181106104b457fe5b6020026020010151856001815181106104c957fe5b60200260200101516104db8686610d31565b610c88565b816000815181106104ed57fe5b602090810291909101015260015b8281101561055a5761053b85828151811061051257fe5b602002602001015186836001018151811061052957fe5b60200260200101516104db8787610d4f565b82828151811061054757fe5b60209081029190910101526001016104fb565b5061056481610d62565b61056c610d71565b7f6ccb624e36453fb82f1a793715d74763283e458adc397e1f7d73dcdf604afbb184846003546040518080602001848152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156105de5781810151838201526020016105c6565b5050505090500194505050505060405180910390a150505050565b60055460ff16600281111561060a57fe5b60021460405180604001604052806009815260200168434f4e5f535441544560b81b8152509061067b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b5060035461068843610c81565b11156040518060400160405280600c81526020016b434f4e5f444541444c494e4560a01b815250906106fb5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b5060025460408051808201909152600a81526921a7a72fa9a2a72222a960b11b6020820152906001600160a01b031633146107775760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b5060065482146040518060400160405280600881526020016721a7a72fa82922ab60c11b815250906107ea5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b506107fa83838387600101610d8e565b6040518060400160405280600981526020016821a7a72fa82927a7a360b91b815250906108685760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b506006819055610876610e8f565b60035460408051868152602081019290925280517f1e1c1e4e68a25c69a078a396e73975691c071d69ef789015dc16a562957804e49281900390910190a150505050565b6003546108c643610c81565b11610918576040805162461bcd60e51b815260206004820152601760248201527f446561646c696e65206861736e27742065787069726564000000000000000000604482015290519081900360640190fd5b600160055460ff16600281111561092b57fe5b1415610967576040517f2b92a4b014281aa2424baba9ea60bf4f26833d1c1fbd873e51cd1a6caeef48f090600090a1610962610ea2565b610998565b6040517f4e1f1f06cf69d199fcdb4d87a5a92d5248ca6b540e9fc2d3698927c5002a236a90600090a1610998610ead565b565b60055460ff1660028111156109ab57fe5b600114604051806040016040528060098152602001684249535f535441544560b81b81525090610a1c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b50600354610a2943610c81565b11156040518060400160405280600c81526020016b4249535f444541444c494e4560a01b81525090610a9c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b5060015460408051808201909152600a8152692124a9afa9a2a72222a960b11b6020820152906001600160a01b03163314610b185760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b50610b3161043183610b2a8585610eb5565b6001610c88565b6040517f117efdf1fdd8be5a6ff0fb3c32333d7033bbd9523924bd0d9ca28f43540516f590600090a1610b62610ead565b5050565b600060055460ff166002811115610b7957fe5b146040518060400160405280600f81526020016e4348414c5f494e49545f535441544560881b81525090610bee5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b50600080546001600160a01b038681166001600160a01b03199283161790925560018054868416908316178155600280549386169390921692909217905560048290556005805460ff19169091179055610c46610ee1565b60035460408051918252517fe070f23072cbc6c0fc7253b8d0120649d5f9d6e19a8aeab79eb50aa6360bcc679181900360200190a150505050565b6103e80290565b6040805160208082019590955280820193909352606080840192909252805180840390920182526080909201909152805191012090565b6006548114604051806040016040528060088152602001672124a9afa82922ab60c11b81525090610b625760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102bb5781810151838201526020016102a3565b6000818381610d3c57fe5b06828481610d4657fe5b04019392505050565b6000818381610d5a57fe5b049392505050565b610d6b81610ef3565b60065550565b600580546002919060ff19166001835b0217905550610998610ee1565b600080838160205b88518111610e81578089015193506020818a510360200181610db457fe5b0491505b600082118015610dcb5750600286066001145b8015610dd957508160020a86115b15610dec57600286046001019550610db8565b60028606610e37578383604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120925060028681610e2f57fe5b049550610e79565b8284604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120925060028681610e7257fe5b0460010195505b602001610d96565b505090941495945050505050565b600580546001919060ff19168280610d81565b610eaa611031565b33ff5b610eaa6110aa565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b600454610eed43610c81565b01600355565b6000815b6001815111156110145760606002825160010181610f1157fe5b04604051908082528060200260200182016040528015610f3b578160200160208202803883390190505b50905060005b815181101561100c578251816002026001011015610fd457828160020281518110610f6857fe5b6020026020010151838260020260010181518110610f8257fe5b6020026020010151604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120828281518110610fc357fe5b602002602001018181525050611004565b828160020281518110610fe357fe5b6020026020010151828281518110610ff757fe5b6020026020010181815250505b600101610f41565b509050610ef7565b8060008151811061102157fe5b6020026020010151915050919050565b60008054600254600154604080516335e1e69160e11b81526001600160a01b039384166004820152918316602483015260448201859052519190921692636bc3cd22926064808201939182900301818387803b15801561109057600080fd5b505af11580156110a4573d6000803e3d6000fd5b50505050565b60008054600154600254604080516335e1e69160e11b81526001600160a01b039384166004820152918316602483015260448201859052519190921692636bc3cd22926064808201939182900301818387803b15801561109057600080fdfe43616e27742062697365637420636861696e206f66206c657373207468616e2032a265627a7a72315820573b5da23cb25c75d6512e7125a223699aab8f7f419af909dbee269f24e5a4a464736f6c63430005100032" // DeployPendingTopChallenge deploys a new Ethereum contract, binding an instance of PendingTopChallenge to it. func DeployPendingTopChallenge(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *PendingTopChallenge, error) { @@ -3571,7 +3571,7 @@ func (_Protocol *ProtocolTransactorRaw) Transact(opts *bind.TransactOpts, method const RollupTimeABI = "[]" // RollupTimeBin is the compiled bytecode used for deploying new contracts. -var RollupTimeBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820567bd523c2a3835903bc4c15252e3f5047d94de05e366f7ab59d27a918b7780e64736f6c63430005100032" +var RollupTimeBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820f76b65696b1afe111f7238e21468898d3dadc1892616aade3f30e3139577028064736f6c63430005100032" // DeployRollupTime deploys a new Ethereum contract, binding an instance of RollupTime to it. func DeployRollupTime(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RollupTime, error) { diff --git a/packages/arb-validator/ethbridge/rollup/arbrollup.go b/packages/arb-validator/ethbridge/rollup/arbrollup.go index 0971cfe6c0..6da2291f85 100644 --- a/packages/arb-validator/ethbridge/rollup/arbrollup.go +++ b/packages/arb-validator/ethbridge/rollup/arbrollup.go @@ -55,7 +55,7 @@ var ArbRollupFuncSigs = map[string]string{ } // ArbRollupBin is the compiled bytecode used for deploying new contracts. -var ArbRollupBin = "0x608060405234801561001057600080fd5b506143b1806100206000396000f3fe60806040526004361061011f5760003560e01c8063badb3f14116100a0578063d684f94b11610064578063d684f94b14610909578063d6e51259146109d5578063dbad0a3914610b08578063e0620d6414610bd3578063ef5f7cb914610c915761011f565b8063badb3f141461065d578063bbc2cc0014610700578063ce2dbd3814610745578063d16c305d146108c3578063d489113a146108f45761011f565b806365f7f80d116100e757806365f7f80d146103335780636bc3cd221461035a57806379d1120b1461039d5780637cfaaf6714610423578063bac5963f1461049e5761011f565b8063113ec9d81461012457806333554032146101b157806357ca6d1b146102915780635dbaf68b146102cf5780636177fd1814610300575b600080fd5b34801561013057600080fd5b506101af6004803603604081101561014757600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561017157600080fd5b82018360208201111561018357600080fd5b803590602001918460208302840111600160201b831117156101a457600080fd5b509092509050610d63565b005b3480156101bd57600080fd5b506101af600480360360808110156101d457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561020357600080fd5b82018360208201111561021557600080fd5b803590602001918460208302840111600160201b8311171561023657600080fd5b919390929091602081019035600160201b81111561025357600080fd5b82018360208201111561026557600080fd5b803590602001918460208302840111600160201b8311171561028657600080fd5b509092509050610e54565b34801561029d57600080fd5b506102bb600480360360208110156102b457600080fd5b5035610fac565b604080519115158252519081900360200190f35b3480156102db57600080fd5b506102e4610fc4565b604080516001600160a01b039092168252519081900360200190f35b34801561030c57600080fd5b506102bb6004803603602081101561032357600080fd5b50356001600160a01b0316610fd3565b34801561033f57600080fd5b50610348610ff0565b60408051918252519081900360200190f35b34801561036657600080fd5b506101af6004803603606081101561037d57600080fd5b506001600160a01b03813581169160208101359091169060400135610ff6565b3480156103a957600080fd5b506101af60048036036101208110156103c157600080fd5b508035906001600160801b036020820135811691604081013582169167ffffffffffffffff606083013581169260808101359091169160a082013516906001600160a01b0360c082013581169160e08101358216916101009091013516611152565b34801561042f57600080fd5b506101af6004803603602081101561044657600080fd5b810190602081018135600160201b81111561046057600080fd5b82018360208201111561047257600080fd5b803590602001918460208302840111600160201b8311171561049357600080fd5b509092509050611194565b3480156104aa57600080fd5b506101af60048036036101a08110156104c257600080fd5b6040805180820182526001600160a01b0384358116946020810135909116938382013593606083013593918301929160c083019160808401906002908390839080828437600092019190915250506040805180820182529295949381810193925090600290839083908082843760009201919091525091949392602081019250359050600160201b81111561055657600080fd5b82018360208201111561056857600080fd5b803590602001918460208302840111600160201b8311171561058957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105d857600080fd5b8201836020820111156105ea57600080fd5b803590602001918460208302840111600160201b8311171561060b57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050823593505050602081013590604001356001600160801b03166111d5565b34801561066957600080fd5b506101af600480360360c081101561068057600080fd5b6001600160a01b03823516916020810135916040820135916060810135916080820135919081019060c0810160a0820135600160201b8111156106c257600080fd5b8201836020820111156106d457600080fd5b803590602001918460208302840111600160201b831117156106f557600080fd5b50909250905061177b565b34801561070c57600080fd5b506107156118f6565b60408051948552602085019390935267ffffffffffffffff91821684840152166060830152519081900360800190f35b34801561075157600080fd5b506101af600480360360e081101561076857600080fd5b81359190810190604081016020820135600160201b81111561078957600080fd5b82018360208201111561079b57600080fd5b803590602001918460018302840111600160201b831117156107bc57600080fd5b919390928235926020810135929190606081019060400135600160201b8111156107e557600080fd5b8201836020820111156107f757600080fd5b803590602001918460208302840111600160201b8311171561081857600080fd5b919390929091602081019035600160201b81111561083557600080fd5b82018360208201111561084757600080fd5b803590602001918460208302840111600160201b8311171561086857600080fd5b919390929091602081019035600160201b81111561088557600080fd5b82018360208201111561089757600080fd5b803590602001918460208302840111600160201b831117156108b857600080fd5b509092509050611917565b3480156108cf57600080fd5b506108d8611ad1565b604080516001600160801b039092168252519081900360200190f35b34801561090057600080fd5b506102e4611ae0565b34801561091557600080fd5b506101af600480360361026081101561092d57600080fd5b610120820135906101408301359063ffffffff610160850135169067ffffffffffffffff6101808601358116916101a08701916101e0880135916102008901351515916102208a013516908901896102608101610240820135600160201b81111561099757600080fd5b8201836020820111156109a957600080fd5b803590602001918460208302840111600160201b831117156109ca57600080fd5b509092509050611aef565b3480156109e157600080fd5b506101af600480360360e08110156109f857600080fd5b81359160208101359160408201359160608101359181019060a081016080820135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460208302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460208302840111600160201b83111715610aad57600080fd5b919390929091602081019035600160201b811115610aca57600080fd5b820183602082011115610adc57600080fd5b803590602001918460208302840111600160201b83111715610afd57600080fd5b509092509050611d1e565b348015610b1457600080fd5b506101af60048036036040811015610b2b57600080fd5b810190602081018135600160201b811115610b4557600080fd5b820183602082011115610b5757600080fd5b803590602001918460208302840111600160201b83111715610b7857600080fd5b919390929091602081019035600160201b811115610b9557600080fd5b820183602082011115610ba757600080fd5b803590602001918460208302840111600160201b83111715610bc857600080fd5b509092509050611e34565b6101af60048036036040811015610be957600080fd5b810190602081018135600160201b811115610c0357600080fd5b820183602082011115610c1557600080fd5b803590602001918460208302840111600160201b83111715610c3657600080fd5b919390929091602081019035600160201b811115610c5357600080fd5b820183602082011115610c6557600080fd5b803590602001918460208302840111600160201b83111715610c8657600080fd5b509092509050611f45565b348015610c9d57600080fd5b506101af60048036036060811015610cb457600080fd5b81359190810190604081016020820135600160201b811115610cd557600080fd5b820183602082011115610ce757600080fd5b803590602001918460208302840111600160201b83111715610d0857600080fd5b919390929091602081019035600160201b811115610d2557600080fd5b820183602082011115610d3757600080fd5b803590602001918460208302840111600160201b83111715610d5857600080fd5b509092509050612058565b60408051808201909152600e81526d0a48a86ac9e9888be988a9c8ea8960931b602082015281610e115760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610dd6578181015183820152602001610dbe565b50505050905090810190601f168015610e035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610e4f8383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061225192505050565b505050565b6000610e5f336122f0565b905082826000818110610e6e57fe5b9050602002013585856000818110610e8257fe5b9050602002013514158015610ed95750610e9a610ff0565b610ed78787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b145b8015610f20575080610f1e8785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b145b604051806040016040528060148152602001732922a1a7ab2fa1a7a7232624a1aa2fa82927a7a360611b81525090610f995760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50610fa387612397565b50505050505050565b60008181526004602052604090205460ff165b919050565b6006546001600160a01b031681565b6001600160a01b0316600090815260086020526040902054151590565b60055490565b336000908152600a6020908152604091829020548251808401909352600f83526e2922a9afa1a420a62fa9a2a72222a960891b9183019190915260ff1661107e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50336000908152600a60205260408120805460ff1916905561109f84612420565b6007546040519192506001600160a01b0386169160026001600160801b039283160490911680156108fc02916000818181858888f193505050501580156110ea573d6000803e3d6000fd5b5060018101805460ff60801b19169055611103836124aa565b604080513381526001600160a01b03808716602083015285168183015290517f468aa7d460319b17466ca163bca353a0c62fff0d7d0fa287f634ef305d946f299181900360600190a150505050565b6111608989898989866124eb565b61116a84836125df565b5050600b80546001600160a01b0319166001600160a01b0392909216919091179055505050505050565b6111d13383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061225192505050565b5050565b60006111e08c612420565b905060006111ed8c612420565b60018301549091508a90611209906001600160801b0316612715565b106040518060400160405280600d81526020016c53544b315f444541444c494e4560981b8152509061127c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060018101548a90611296906001600160801b0316612715565b106040518060400160405280600d81526020016c53544b325f444541444c494e4560981b815250906113095760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600182015460408051808201909152600c81526b14d512cc57d25397d0d2105360a21b602082015290600160801b900460ff16156113895760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600181015460408051808201909152600c81526b14d512cc57d25397d0d2105360a21b602082015290600160801b900460ff16156114095760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506020808a01518a5160408051808201909152600a8152692a2ca822afa7a92222a960b11b93810193909352116114815760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5081546114a96114a38d8d898e600060200201518e60005b602002015161271c565b89612380565b146040518060400160405280600c81526020016b20a9a9a2a92a2fa82927a7a360a11b8152509061151b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50805461154c6115468d8d611539896001600160801b038a16612784565b60208f01518e6001611499565b88612380565b146040518060400160405280600a81526020016921a420a62fa82927a7a360b11b815250906115bc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060018260010160106101000a81548160ff02191690831515021790555060018160010160106101000a81548160ff0219169083151502179055506000600660009054906101000a90046001600160a01b03166001600160a01b031663865da1c28f8f87898f60016002811061162e57fe5b60200201516040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200195505050505050602060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b505050506040513d60208110156116dc57600080fd5b50516001600160a01b0381166000908152600a60205260409020805460ff191660019081179091559091507f6c69257ddf620994c6fb9e5304db0e5563db3765bee033ddd61b6a1caa7d043f908f908f908d9060209081029190910151604080516001600160a01b0395861681529385169284019290925282820152918416606082015290519081900360800190a15050505050505050505050505050565b6000611786336122f0565b90506000611797828989898961271c565b905060006117d88286868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506117e381610fac565b604051806040016040528060138152602001722922a1a7ab2fa222a0a22624a722afa622a0a360691b8152509061185b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5061186589612715565b431015604051806040016040528060138152602001725245434f565f444541444c494e455f54494d4560681b815250906118e05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506118ea8a612397565b50505050505050505050565b60015460025460035467ffffffffffffffff80821691600160401b90041684565b611a018b61196361195d8d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127b092505050565b8b612784565b60038a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061286392505050565b60005460405163e4eb8c6360e01b8152602060048201908152602482018c90526001600160a01b039092169163e4eb8c63918d918d918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b158015611a7857600080fd5b505af1158015611a8c573d6000803e3d6000fd5b5050604080518b815290517f7c4ea4965dec519bdc58e57940c14ed469185c38f401798f2f38ed6d0afb1fd39350908190036020019150a15050505050505050505050565b6007546001600160801b031690565b6000546001600160a01b031681565b600080611c3d6040518061022001604052808f600060098110611b0e57fe5b602002013581526020018f600160098110611b2557fe5b602002013581526020018e81526020018f600260098110611b4257fe5b602002013581526020018d81526020018f600360098110611b5f57fe5b602002013581526020018c63ffffffff1681526020018b67ffffffffffffffff1681526020018a600280602002604051908101604052809291908260026020028082843760009201919091525050508152602081018a90526040018f6004602002013581526020018f600560098110611bd457fe5b602002013581526020018f600660098110611beb57fe5b6020020135815260200188151581526020018767ffffffffffffffff1681526020018f600760098110611c1a57fe5b602002013581526020018f600860098110611c3157fe5b60200201359052612994565b915091506000611c4c336122f0565b905082611c8c8287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b146040518060400160405280601181526020017026a0a5a2afa9aa20a5a2a92fa82927a7a360791b81525090611d035760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50611d0e3383612ebe565b5050505050505050505050505050565b60408051808201909152600d81526c434f4e465f494e565f5459504560981b602082015260038910611d915760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506118ea8a8a8a8a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061286392505050565b6000611e3f336122f0565b90506000611e808287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506000611ec18286868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b9050611ecc81610fac565b6040518060400160405280600981526020016826a7ab22afa622a0a360b91b81525090611f3a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50610fa33383612ebe565b6000611f8b611f52610ff0565b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506000611fcc8285858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b9050611fd781610fac565b6040518060400160405280600a815260200169282620a1a2afa622a0a360b11b815250906120465760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5061205082612f17565b505050505050565b60006120978686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506120a281610fac565b6040518060400160405280600a81526020016928292aa722afa622a0a360b11b815250906121115760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b508282600081811061211f57fe5b905060200201358585600081811061213357fe5b905060200201351415801561218a575061214b610ff0565b6121888785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b145b6040518060400160405280600e81526020016d141495539157d0d3d391931250d560921b815250906121fd5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600081815260046020908152604091829020805460ff19169055815183815291517f3d3e2ada9638548d1bb115fd766ef675213d953efe8d433bbd8d6718f44909509281900390910190a1505050505050565b600061225c336122f0565b9050612266610ff0565b6122708284612380565b146040518060400160405280601081526020016f2922a1a7ab2fa820aa242fa82927a7a360811b815250906122e65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50610e4f83612397565b6001600160a01b0381166000908152600860209081526040808320548151808301909252600a82526924a72b2fa9aa20a5a2a960b11b92820192909252816123795760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5092915050565b60006123908383600085516130c5565b9392505050565b6123a0816124aa565b6007546040516001600160a01b038316916001600160801b031680156108fc02916000818181858888f193505050501580156123e0573d6000803e3d6000fd5b50604080516001600160a01b038316815290517f953ab9eece73c907353307064109cf873462177a0e358e463fd89f5b206daa6c9181900360200190a150565b6001600160a01b038116600090815260086020908152604080832080548251808401909352600a83526924a72b2fa9aa20a5a2a960b11b93830193909352916123795760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b6001600160a01b03166000908152600860205260408120908155600101805470ffffffffffffffffffffffffffffffffff1916905560098054600019019055565b600080546001600160a01b0319166001600160a01b0383161781556125198761251261312f565b60006131a2565b9050600061252a818080808661271c565b6005819055600081815260046020908152604091829020805460ff191660019081179091556001600160801b03808c1690915589166002556003805467ffffffffffffffff898116600160401b026fffffffffffffffff000000000000000019918c1667ffffffffffffffff19909316929092171617905581518b815291519293507f4ac0014773275a3dfb58c58539631006301de41998cce7c4f8698d297c88bb2d92918290030190a15050505050505050565b60065460408051808201909152600a815269494e49545f545749434560b01b6020820152906001600160a01b0316156126595760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060408051808201909152600c81526b494e49545f4e4f4e5a45524f60a01b60208201526001600160a01b0382166126d25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600680546001600160a01b0319166001600160a01b0392909216919091179055600780546001600160801b0319166001600160801b0392909216919091179055565b6132c80290565b6040805160208082018490528183018790526060820186905260808083018690528351808403909101815260a08301845280519082012060c0830189905260e08084019190915283518084039091018152610100909201909252805191012095945050505050565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b8051600090819081908190815b81811015612858576127cf87826131d9565b919650909350905084612822576040805162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7574707574206d65737361676560501b604482015290519081900360640190fd5b838360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093506127bd565b509195945050505050565b6000612879612870610ff0565b8989898961271c565b90508761288543612715565b101560405180604001604052806009815260200168434f4e465f54494d4560b81b815250906128f55760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506000612905828a878787613230565b9050600081116040518060400160405280600f81526020016e21a7a7232fa420a9afa9aa20a5a2a960891b8152509061297f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50612989826134db565b505050505050505050565b60008060006129b08460000151856020015186604001516131a2565b905060006129d7856060015186608001518760a001518860c0015163ffffffff168661271c565b90506129e281610fac565b6040518060400160405280600981526020016826a0a5a2afa622a0a360b91b81525090612a505760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b508451612a5c90613516565b158015612a7157508451612a6f9061351c565b155b6040518060400160405280600881526020016726a0a5a2afa92aa760c11b81525090612ade5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060035460e086015160408051808201909152600981526804d414b455f535445560bc1b60208201529167ffffffffffffffff90811691161115612b635760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506003546101008601518051600160401b90920467ffffffffffffffff169091016001600160801b031690600160200201516001600160801b03161115612ba957600080fd5b612bb7856101000151613520565b604051806040016040528060098152602001684d414b455f54494d4560b81b81525090612c255760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506101208501511580612c3a5750846101a001515b6040518060400160405280600d81526020016c4d414b455f4d4553534147455360981b81525090612cac5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060008054604080516308d74f6960e11b8152815184936001600160a01b0316926311ae9ed2926004808201939182900301818787803b158015612cef57600080fd5b505af1158015612d03573d6000803e3d6000fd5b505050506040513d6040811015612d1957600080fd5b50805160209091015160408901519193509150612d3d90829063ffffffff61355016565b87610120015111156040518060400160405280601081526020016f135052d157d35154d4d051d157d0d39560821b81525090612dba5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506001546002546101c08901516000919067ffffffffffffffff1681612ddc57fe5b049050600082612deb43612715565b0190508960800151811015612e01575060808901515b81016000612e148b888489898d8a613592565b90506000612e258c89858c896135e3565b90506000612e378d8a868d8a8a613642565b90506000612e468e8b876136cc565b6000858152600460205260408082208054600160ff19918216811790925587845282842080548216831790558684528284208054821683179055848452828420805482169092179091558d83529120805490911690559050612eaa8e8b8b8b61370e565b989b50979950505050505050505050915091565b6001600160a01b0382166000818152600860209081526040918290208490558151928352820183905280517fbe690ac5fe353c094bcc6f187eeb841c0ca61b6edf32c142eadad655b7d173f49281900390910190a15050565b60078054604080518082019091529182526614d512d7d0535560ca1b60208301526001600160801b03163414612f8e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5033600090815260086020908152604091829020548251808401909352600c83526b105314911657d4d51052d15160a21b91830191909152156130125760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50604080516060810182528281526001600160801b03438116602080840191825260008486018181523380835260088452918790209551865592516001958601805494511515600160801b0260ff60801b19929096166001600160801b031990951694909417169390931790915560098054909301909255825190815290810183905281517fcbafbb223ed21c82af9e2ad20cdfdf55d3263d06f9a65b3f70da613f32d81f88929181900390910190a150565b600084835b8381101561312357818682815181106130df57fe5b6020026020010151604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120915080806001019150506130ca565b5090505b949350505050565b6040805160008082526020808301808552600360f81b948401948552835192946003938593919260418501929091028083838a5b8381101561317b578181015183820152602001613163565b50505050905001925050506040516020818303038152906040528051906020012091505090565b6040805160208082019590955280820193909352606080840192909252805180840390920182526080909201909152805191012090565b60008060008060006131e9614315565b6131f3888861383a565b92509250925082613211575060009450859350849250613229915050565b60018261321d83613989565b51919750955093505050505b9250925092565b825160095460408051808201909152600a81526910d210d2d7d0d3d5539560b21b60208201526000929182146132a75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50825181600101146040518060400160405280600c81526020016b4348434b5f4f46465345545360a01b815250906133205760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600080805b838110156134ce57600088828151811061333c57fe5b60200260200101519050836bffffffffffffffffffffffff19168160601b6bffffffffffffffffffffffff1916116040518060400160405280600a81526020016921a421a5afa7a92222a960b11b815250906133d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060006133e582612420565b60018101549091508b90613401906001600160801b0316612715565b10156134c05780600001546134418d8b8b878151811061341d57fe5b60200260200101518c886001018151811061343457fe5b60200260200101516130c5565b146040518060400160405280601181526020017021a421a5afa9aa20a5a2a92fa82927a7a360791b815250906134b85760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506001909301925b5060601b9250600101613326565b5098975050505050505050565b60058190556040805182815290517f9d13d0ad532ca8e545a3b66828cb99a18c3bc98e2a50b4db1990a033fdba6f639181900360200190a150565b60011490565b1590565b80516000906001600160801b0316431080159061354a575060208201516001600160801b03164311155b92915050565b600061239083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613abf565b6000806135b2896101400151878b61012001518c604001510188036131a2565b90506135d688886135ce846135c76001612715565b8801612784565b60008861271c565b9998505050505050505050565b60008061360d87602001518861014001516135fc61312f565b8a61016001518b6101200151613b19565b905060006136268261361f6001612715565b8601612784565b905061363687878360018961271c565b98975050505050505050565b60008061365e88600001518961010001518a6101600151613b5f565b905060006136908961018001518a6101a001518b6101c001516000801b8d6101e001516000801b8f6102000151613bb1565b905060006136a38a60e001518484613c14565b90506136be89896136b684898b01612784565b60028b61271c565b9a9950505050505050505050565b600061312783836136e7876101e00151886102000151612784565b60036137098961018001518a61014001518b61012001518c60400151016131a2565b61271c565b7f5761ea2104e5d52e617adb7f0bfc8970ffa1d06f57d28cb2bb3a034532c970356040518060e00160405280858152602001848152602001866101400151815260200186610160015181526020018661018001518152602001866101e00151815260200186610200015181525082866101200151876101000151886101c001518960e001518a6101a001516040518088600760200280838360005b838110156137c15781810151838201526020016137a9565b5050505090500187815260200186815260200185600260200280838360005b838110156137f85781810151838201526020016137e0565b50505067ffffffffffffffff9788169390910192835250509290931660208301521515604080830191909152519081900360600195509350505050a150505050565b600080613845614315565b845184106138655760008461385a6000613c5c565b925092509250613229565b600080859050600087828151811061387957fe5b016020015160019092019160f81c90506000613893614343565b60ff83166138c7576138a58a85613cda565b9196509450915084846138b784613c5c565b9750975097505050505050613229565b60ff8316600114156138ef576138dd8a85613d2d565b9196509450905084846138b783613e8e565b60ff831660021415613917576139058a85613cda565b9196509450915084846138b784613eee565b600360ff84161080159061392e5750600c60ff8416105b156139695760021983016060613945828d88613f6c565b9198509650905086866139578361402a565b99509950995050505050505050613229565b6000806139766000613c5c565b9199509750955050505050509250925092565b61399161436a565b6060820151600c60ff909116106139e3576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207479706520636f646560781b604482015290519081900360640190fd5b606082015160ff16613a10576040518060200160405280613a0784600001516140da565b90529050610fbf565b606082015160ff1660011415613a57576040518060200160405280613a078460200151600001518560200151604001518660200151606001518760200151602001516140fe565b606082015160ff1660021415613a7c5750604080516020810190915281518152610fbf565b600360ff16826060015160ff1610158015613aa057506060820151600c60ff909116105b15613abd576040518060200160405280613a0784604001516141a6565bfe5b60008184841115613b115760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b505050900390565b60408051602080820197909752808201959095526060850193909352608084019190915260a0808401919091528151808403909101815260c09092019052805191012090565b815160209283015160408051808601969096526001600160801b0319608093841b81168783015291831b9091166050860152606080860193909352805180860390930183529301909252815191012090565b6040805160208082019990995296151560f81b8782015260c09590951b6001600160c01b031916604187015260498601939093526069850191909152608984015260a9808401919091528151808403909101815260c99092019052805191012090565b6040805160c09490941b6001600160c01b0319166020808601919091526028850193909352604880850192909252805180850390920182526068909301909252815191012090565b613c64614315565b604080516080808201835284825282519081018352600080825260208281018290528285018290526060830182905280840192909252835181815291820184529192830191613cc9565b613cb6614315565b815260200190600190039081613cae5790505b508152600060209091015292915050565b6000806000808551905084811080613cf457506020858203105b15613d09575060009250839150829050613229565b600160208601613d1f888863ffffffff6142f216565b935093509350509250925092565b600080613d38614343565b60008490506000868281518110613d4b57fe5b602001015160f81c60f81b60f81c905081806001019250506000878381518110613d7157fe5b016020015160019384019360f89190911c915060009060ff84161415613df8576000613d9b614315565b613da58b8761383a565b909750909250905081613de9575050604080516080810182526000808252602082018190529181018290526060810182905290975088965094506132299350505050565b613df281613989565b51925050505b6000613e0a8a8663ffffffff6142f216565b90506020850194508360ff1660011415613e56576040805160808101825260ff909416845260208401919091526001908301819052606083019190915295509193509091506132299050565b6040805160808101825260ff949094168452602084019190915260009083018190526060830152506001989297509550909350505050565b613e96614315565b604080516080810182526000808252602080830186905283518281529081018452919283019190613edd565b613eca614315565b815260200190600190039081613ec25790505b508152600160209091015292915050565b613ef6614315565b604080516080808201835284825282519081018352600080825260208281018290528285018290526060830182905280840192909252835181815291820184529192830191613f5b565b613f48614315565b815260200190600190039081613f405790505b508152600260209091015292915050565b60008060606000849050600060608860ff16604051908082528060200260200182016040528015613fb757816020015b613fa4614315565b815260200190600190039081613f9c5790505b50905060005b8960ff168160ff16101561401457613fd5898561383a565b8451859060ff8616908110613fe657fe5b6020908102919091010152945092508261400c5750600095508694509250614021915050565b600101613fbd565b5060019550919350909150505b93509350939050565b614032614315565b61403c825161430e565b61408d576040805162461bcd60e51b815260206004820152601a60248201527f5475706c65206d75737420686176652076616c69642073697a65000000000000604482015290519081900360640190fd5b5060408051608080820183526000808352835191820184528082526020828101829052828501829052606080840192909252830191909152918101839052915160030160ff169082015290565b60408051602080820193909352815180820384018152908201909152805191012090565b60008315614158575060408051600160f81b6020808301919091526001600160f81b031960f888901b1660218301526022820185905260428083018590528351808403909101815260629092019092528051910120613127565b5060408051600160f81b6020808301919091526001600160f81b031960f888901b16602183015260228083018590528351808403909101815260429092019092528051910120949350505050565b60006008825111156141f6576040805162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840e8eae0d8ca40d8cadccee8d60631b604482015290519081900360640190fd5b60608251604051908082528060200260200182016040528015614223578160200160208202803883390190505b50805190915060005b8181101561427f5761423c61436a565b61425886838151811061424b57fe5b6020026020010151613989565b9050806000015184838151811061426b57fe5b60209081029190910101525060010161422c565b508351600360ff160182604051602001808360ff1660ff1660f81b8152600101828051906020019060200280838360005b838110156142c85781810151838201526020016142b0565b50505050905001925050506040516020818303038152906040528051906020012092505050919050565b6000816020018351101561430557600080fd5b50016020015190565b6008101590565b60405180608001604052806000815260200161432f614343565b815260606020820152600060409091015290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160208101909152600081529056fea265627a7a7231582060f37ced09ac4143b97c14ca95454c3a03ebc4f11ea6046599432a4ae78daa3664736f6c63430005100032" +var ArbRollupBin = "0x608060405234801561001057600080fd5b506143b1806100206000396000f3fe60806040526004361061011f5760003560e01c8063badb3f14116100a0578063d684f94b11610064578063d684f94b14610909578063d6e51259146109d5578063dbad0a3914610b08578063e0620d6414610bd3578063ef5f7cb914610c915761011f565b8063badb3f141461065d578063bbc2cc0014610700578063ce2dbd3814610745578063d16c305d146108c3578063d489113a146108f45761011f565b806365f7f80d116100e757806365f7f80d146103335780636bc3cd221461035a57806379d1120b1461039d5780637cfaaf6714610423578063bac5963f1461049e5761011f565b8063113ec9d81461012457806333554032146101b157806357ca6d1b146102915780635dbaf68b146102cf5780636177fd1814610300575b600080fd5b34801561013057600080fd5b506101af6004803603604081101561014757600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561017157600080fd5b82018360208201111561018357600080fd5b803590602001918460208302840111600160201b831117156101a457600080fd5b509092509050610d63565b005b3480156101bd57600080fd5b506101af600480360360808110156101d457600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561020357600080fd5b82018360208201111561021557600080fd5b803590602001918460208302840111600160201b8311171561023657600080fd5b919390929091602081019035600160201b81111561025357600080fd5b82018360208201111561026557600080fd5b803590602001918460208302840111600160201b8311171561028657600080fd5b509092509050610e54565b34801561029d57600080fd5b506102bb600480360360208110156102b457600080fd5b5035610fac565b604080519115158252519081900360200190f35b3480156102db57600080fd5b506102e4610fc4565b604080516001600160a01b039092168252519081900360200190f35b34801561030c57600080fd5b506102bb6004803603602081101561032357600080fd5b50356001600160a01b0316610fd3565b34801561033f57600080fd5b50610348610ff0565b60408051918252519081900360200190f35b34801561036657600080fd5b506101af6004803603606081101561037d57600080fd5b506001600160a01b03813581169160208101359091169060400135610ff6565b3480156103a957600080fd5b506101af60048036036101208110156103c157600080fd5b508035906001600160801b036020820135811691604081013582169167ffffffffffffffff606083013581169260808101359091169160a082013516906001600160a01b0360c082013581169160e08101358216916101009091013516611152565b34801561042f57600080fd5b506101af6004803603602081101561044657600080fd5b810190602081018135600160201b81111561046057600080fd5b82018360208201111561047257600080fd5b803590602001918460208302840111600160201b8311171561049357600080fd5b509092509050611194565b3480156104aa57600080fd5b506101af60048036036101a08110156104c257600080fd5b6040805180820182526001600160a01b0384358116946020810135909116938382013593606083013593918301929160c083019160808401906002908390839080828437600092019190915250506040805180820182529295949381810193925090600290839083908082843760009201919091525091949392602081019250359050600160201b81111561055657600080fd5b82018360208201111561056857600080fd5b803590602001918460208302840111600160201b8311171561058957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105d857600080fd5b8201836020820111156105ea57600080fd5b803590602001918460208302840111600160201b8311171561060b57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050823593505050602081013590604001356001600160801b03166111d5565b34801561066957600080fd5b506101af600480360360c081101561068057600080fd5b6001600160a01b03823516916020810135916040820135916060810135916080820135919081019060c0810160a0820135600160201b8111156106c257600080fd5b8201836020820111156106d457600080fd5b803590602001918460208302840111600160201b831117156106f557600080fd5b50909250905061177b565b34801561070c57600080fd5b506107156118f6565b60408051948552602085019390935267ffffffffffffffff91821684840152166060830152519081900360800190f35b34801561075157600080fd5b506101af600480360360e081101561076857600080fd5b81359190810190604081016020820135600160201b81111561078957600080fd5b82018360208201111561079b57600080fd5b803590602001918460018302840111600160201b831117156107bc57600080fd5b919390928235926020810135929190606081019060400135600160201b8111156107e557600080fd5b8201836020820111156107f757600080fd5b803590602001918460208302840111600160201b8311171561081857600080fd5b919390929091602081019035600160201b81111561083557600080fd5b82018360208201111561084757600080fd5b803590602001918460208302840111600160201b8311171561086857600080fd5b919390929091602081019035600160201b81111561088557600080fd5b82018360208201111561089757600080fd5b803590602001918460208302840111600160201b831117156108b857600080fd5b509092509050611917565b3480156108cf57600080fd5b506108d8611ad1565b604080516001600160801b039092168252519081900360200190f35b34801561090057600080fd5b506102e4611ae0565b34801561091557600080fd5b506101af600480360361026081101561092d57600080fd5b610120820135906101408301359063ffffffff610160850135169067ffffffffffffffff6101808601358116916101a08701916101e0880135916102008901351515916102208a013516908901896102608101610240820135600160201b81111561099757600080fd5b8201836020820111156109a957600080fd5b803590602001918460208302840111600160201b831117156109ca57600080fd5b509092509050611aef565b3480156109e157600080fd5b506101af600480360360e08110156109f857600080fd5b81359160208101359160408201359160608101359181019060a081016080820135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460208302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460208302840111600160201b83111715610aad57600080fd5b919390929091602081019035600160201b811115610aca57600080fd5b820183602082011115610adc57600080fd5b803590602001918460208302840111600160201b83111715610afd57600080fd5b509092509050611d1e565b348015610b1457600080fd5b506101af60048036036040811015610b2b57600080fd5b810190602081018135600160201b811115610b4557600080fd5b820183602082011115610b5757600080fd5b803590602001918460208302840111600160201b83111715610b7857600080fd5b919390929091602081019035600160201b811115610b9557600080fd5b820183602082011115610ba757600080fd5b803590602001918460208302840111600160201b83111715610bc857600080fd5b509092509050611e34565b6101af60048036036040811015610be957600080fd5b810190602081018135600160201b811115610c0357600080fd5b820183602082011115610c1557600080fd5b803590602001918460208302840111600160201b83111715610c3657600080fd5b919390929091602081019035600160201b811115610c5357600080fd5b820183602082011115610c6557600080fd5b803590602001918460208302840111600160201b83111715610c8657600080fd5b509092509050611f45565b348015610c9d57600080fd5b506101af60048036036060811015610cb457600080fd5b81359190810190604081016020820135600160201b811115610cd557600080fd5b820183602082011115610ce757600080fd5b803590602001918460208302840111600160201b83111715610d0857600080fd5b919390929091602081019035600160201b811115610d2557600080fd5b820183602082011115610d3757600080fd5b803590602001918460208302840111600160201b83111715610d5857600080fd5b509092509050612058565b60408051808201909152600e81526d0a48a86ac9e9888be988a9c8ea8960931b602082015281610e115760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610dd6578181015183820152602001610dbe565b50505050905090810190601f168015610e035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50610e4f8383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061225192505050565b505050565b6000610e5f336122f0565b905082826000818110610e6e57fe5b9050602002013585856000818110610e8257fe5b9050602002013514158015610ed95750610e9a610ff0565b610ed78787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b145b8015610f20575080610f1e8785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b145b604051806040016040528060148152602001732922a1a7ab2fa1a7a7232624a1aa2fa82927a7a360611b81525090610f995760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50610fa387612397565b50505050505050565b60008181526004602052604090205460ff165b919050565b6006546001600160a01b031681565b6001600160a01b0316600090815260086020526040902054151590565b60055490565b336000908152600a6020908152604091829020548251808401909352600f83526e2922a9afa1a420a62fa9a2a72222a960891b9183019190915260ff1661107e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50336000908152600a60205260408120805460ff1916905561109f84612420565b6007546040519192506001600160a01b0386169160026001600160801b039283160490911680156108fc02916000818181858888f193505050501580156110ea573d6000803e3d6000fd5b5060018101805460ff60801b19169055611103836124aa565b604080513381526001600160a01b03808716602083015285168183015290517f468aa7d460319b17466ca163bca353a0c62fff0d7d0fa287f634ef305d946f299181900360600190a150505050565b6111608989898989866124eb565b61116a84836125df565b5050600b80546001600160a01b0319166001600160a01b0392909216919091179055505050505050565b6111d13383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061225192505050565b5050565b60006111e08c612420565b905060006111ed8c612420565b60018301549091508a90611209906001600160801b0316612715565b106040518060400160405280600d81526020016c53544b315f444541444c494e4560981b8152509061127c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060018101548a90611296906001600160801b0316612715565b106040518060400160405280600d81526020016c53544b325f444541444c494e4560981b815250906113095760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600182015460408051808201909152600c81526b14d512cc57d25397d0d2105360a21b602082015290600160801b900460ff16156113895760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600181015460408051808201909152600c81526b14d512cc57d25397d0d2105360a21b602082015290600160801b900460ff16156114095760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506020808a01518a5160408051808201909152600a8152692a2ca822afa7a92222a960b11b93810193909352116114815760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5081546114a96114a38d8d898e600060200201518e60005b602002015161271c565b89612380565b146040518060400160405280600c81526020016b20a9a9a2a92a2fa82927a7a360a11b8152509061151b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50805461154c6115468d8d611539896001600160801b038a16612784565b60208f01518e6001611499565b88612380565b146040518060400160405280600a81526020016921a420a62fa82927a7a360b11b815250906115bc5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060018260010160106101000a81548160ff02191690831515021790555060018160010160106101000a81548160ff0219169083151502179055506000600660009054906101000a90046001600160a01b03166001600160a01b031663865da1c28f8f87898f60016002811061162e57fe5b60200201516040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200195505050505050602060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b505050506040513d60208110156116dc57600080fd5b50516001600160a01b0381166000908152600a60205260409020805460ff191660019081179091559091507f6c69257ddf620994c6fb9e5304db0e5563db3765bee033ddd61b6a1caa7d043f908f908f908d9060209081029190910151604080516001600160a01b0395861681529385169284019290925282820152918416606082015290519081900360800190a15050505050505050505050505050565b6000611786336122f0565b90506000611797828989898961271c565b905060006117d88286868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506117e381610fac565b604051806040016040528060138152602001722922a1a7ab2fa222a0a22624a722afa622a0a360691b8152509061185b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5061186589612715565b431015604051806040016040528060138152602001725245434f565f444541444c494e455f54494d4560681b815250906118e05760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506118ea8a612397565b50505050505050505050565b60015460025460035467ffffffffffffffff80821691600160401b90041684565b611a018b61196361195d8d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127b092505050565b8b612784565b60038a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061286392505050565b60005460405163e4eb8c6360e01b8152602060048201908152602482018c90526001600160a01b039092169163e4eb8c63918d918d918190604401848480828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b158015611a7857600080fd5b505af1158015611a8c573d6000803e3d6000fd5b5050604080518b815290517f7c4ea4965dec519bdc58e57940c14ed469185c38f401798f2f38ed6d0afb1fd39350908190036020019150a15050505050505050505050565b6007546001600160801b031690565b6000546001600160a01b031681565b600080611c3d6040518061022001604052808f600060098110611b0e57fe5b602002013581526020018f600160098110611b2557fe5b602002013581526020018e81526020018f600260098110611b4257fe5b602002013581526020018d81526020018f600360098110611b5f57fe5b602002013581526020018c63ffffffff1681526020018b67ffffffffffffffff1681526020018a600280602002604051908101604052809291908260026020028082843760009201919091525050508152602081018a90526040018f6004602002013581526020018f600560098110611bd457fe5b602002013581526020018f600660098110611beb57fe5b6020020135815260200188151581526020018767ffffffffffffffff1681526020018f600760098110611c1a57fe5b602002013581526020018f600860098110611c3157fe5b60200201359052612994565b915091506000611c4c336122f0565b905082611c8c8287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b146040518060400160405280601181526020017026a0a5a2afa9aa20a5a2a92fa82927a7a360791b81525090611d035760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50611d0e3383612ebe565b5050505050505050505050505050565b60408051808201909152600d81526c434f4e465f494e565f5459504560981b602082015260038910611d915760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506118ea8a8a8a8a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c91829185019084908082843760009201919091525050604080516020808d0282810182019093528c82529093508c92508b91829185019084908082843760009201919091525061286392505050565b6000611e3f336122f0565b90506000611e808287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506000611ec18286868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b9050611ecc81610fac565b6040518060400160405280600981526020016826a7ab22afa622a0a360b91b81525090611f3a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50610fa33383612ebe565b6000611f8b611f52610ff0565b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506000611fcc8285858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b9050611fd781610fac565b6040518060400160405280600a815260200169282620a1a2afa622a0a360b11b815250906120465760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5061205082612f17565b505050505050565b60006120978686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b90506120a281610fac565b6040518060400160405280600a81526020016928292aa722afa622a0a360b11b815250906121115760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b508282600081811061211f57fe5b905060200201358585600081811061213357fe5b905060200201351415801561218a575061214b610ff0565b6121888785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061238092505050565b145b6040518060400160405280600e81526020016d141495539157d0d3d391931250d560921b815250906121fd5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600081815260046020908152604091829020805460ff19169055815183815291517f3d3e2ada9638548d1bb115fd766ef675213d953efe8d433bbd8d6718f44909509281900390910190a1505050505050565b600061225c336122f0565b9050612266610ff0565b6122708284612380565b146040518060400160405280601081526020016f2922a1a7ab2fa820aa242fa82927a7a360811b815250906122e65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50610e4f83612397565b6001600160a01b0381166000908152600860209081526040808320548151808301909252600a82526924a72b2fa9aa20a5a2a960b11b92820192909252816123795760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5092915050565b60006123908383600085516130c5565b9392505050565b6123a0816124aa565b6007546040516001600160a01b038316916001600160801b031680156108fc02916000818181858888f193505050501580156123e0573d6000803e3d6000fd5b50604080516001600160a01b038316815290517f953ab9eece73c907353307064109cf873462177a0e358e463fd89f5b206daa6c9181900360200190a150565b6001600160a01b038116600090815260086020908152604080832080548251808401909352600a83526924a72b2fa9aa20a5a2a960b11b93830193909352916123795760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b6001600160a01b03166000908152600860205260408120908155600101805470ffffffffffffffffffffffffffffffffff1916905560098054600019019055565b600080546001600160a01b0319166001600160a01b0383161781556125198761251261312f565b60006131a2565b9050600061252a818080808661271c565b6005819055600081815260046020908152604091829020805460ff191660019081179091556001600160801b03808c1690915589166002556003805467ffffffffffffffff898116600160401b026fffffffffffffffff000000000000000019918c1667ffffffffffffffff19909316929092171617905581518b815291519293507f4ac0014773275a3dfb58c58539631006301de41998cce7c4f8698d297c88bb2d92918290030190a15050505050505050565b60065460408051808201909152600a815269494e49545f545749434560b01b6020820152906001600160a01b0316156126595760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060408051808201909152600c81526b494e49545f4e4f4e5a45524f60a01b60208201526001600160a01b0382166126d25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600680546001600160a01b0319166001600160a01b0392909216919091179055600780546001600160801b0319166001600160801b0392909216919091179055565b6103e80290565b6040805160208082018490528183018790526060820186905260808083018690528351808403909101815260a08301845280519082012060c0830189905260e08084019190915283518084039091018152610100909201909252805191012095945050505050565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b8051600090819081908190815b81811015612858576127cf87826131d9565b919650909350905084612822576040805162461bcd60e51b8152602060048201526016602482015275496e76616c6964206f7574707574206d65737361676560501b604482015290519081900360640190fd5b838360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093506127bd565b509195945050505050565b6000612879612870610ff0565b8989898961271c565b90508761288543612715565b101560405180604001604052806009815260200168434f4e465f54494d4560b81b815250906128f55760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506000612905828a878787613230565b9050600081116040518060400160405280600f81526020016e21a7a7232fa420a9afa9aa20a5a2a960891b8152509061297f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50612989826134db565b505050505050505050565b60008060006129b08460000151856020015186604001516131a2565b905060006129d7856060015186608001518760a001518860c0015163ffffffff168661271c565b90506129e281610fac565b6040518060400160405280600981526020016826a0a5a2afa622a0a360b91b81525090612a505760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b508451612a5c90613516565b158015612a7157508451612a6f9061351c565b155b6040518060400160405280600881526020016726a0a5a2afa92aa760c11b81525090612ade5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060035460e086015160408051808201909152600981526804d414b455f535445560bc1b60208201529167ffffffffffffffff90811691161115612b635760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506003546101008601518051600160401b90920467ffffffffffffffff169091016001600160801b031690600160200201516001600160801b03161115612ba957600080fd5b612bb7856101000151613520565b604051806040016040528060098152602001684d414b455f54494d4560b81b81525090612c255760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506101208501511580612c3a5750846101a001515b6040518060400160405280600d81526020016c4d414b455f4d4553534147455360981b81525090612cac5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060008054604080516308d74f6960e11b8152815184936001600160a01b0316926311ae9ed2926004808201939182900301818787803b158015612cef57600080fd5b505af1158015612d03573d6000803e3d6000fd5b505050506040513d6040811015612d1957600080fd5b50805160209091015160408901519193509150612d3d90829063ffffffff61355016565b87610120015111156040518060400160405280601081526020016f135052d157d35154d4d051d157d0d39560821b81525090612dba5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506001546002546101c08901516000919067ffffffffffffffff1681612ddc57fe5b049050600082612deb43612715565b0190508960800151811015612e01575060808901515b81016000612e148b888489898d8a613592565b90506000612e258c89858c896135e3565b90506000612e378d8a868d8a8a613642565b90506000612e468e8b876136cc565b6000858152600460205260408082208054600160ff19918216811790925587845282842080548216831790558684528284208054821683179055848452828420805482169092179091558d83529120805490911690559050612eaa8e8b8b8b61370e565b989b50979950505050505050505050915091565b6001600160a01b0382166000818152600860209081526040918290208490558151928352820183905280517fbe690ac5fe353c094bcc6f187eeb841c0ca61b6edf32c142eadad655b7d173f49281900390910190a15050565b60078054604080518082019091529182526614d512d7d0535560ca1b60208301526001600160801b03163414612f8e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5033600090815260086020908152604091829020548251808401909352600c83526b105314911657d4d51052d15160a21b91830191909152156130125760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50604080516060810182528281526001600160801b03438116602080840191825260008486018181523380835260088452918790209551865592516001958601805494511515600160801b0260ff60801b19929096166001600160801b031990951694909417169390931790915560098054909301909255825190815290810183905281517fcbafbb223ed21c82af9e2ad20cdfdf55d3263d06f9a65b3f70da613f32d81f88929181900390910190a150565b600084835b8381101561312357818682815181106130df57fe5b6020026020010151604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120915080806001019150506130ca565b5090505b949350505050565b6040805160008082526020808301808552600360f81b948401948552835192946003938593919260418501929091028083838a5b8381101561317b578181015183820152602001613163565b50505050905001925050506040516020818303038152906040528051906020012091505090565b6040805160208082019590955280820193909352606080840192909252805180840390920182526080909201909152805191012090565b60008060008060006131e9614315565b6131f3888861383a565b92509250925082613211575060009450859350849250613229915050565b60018261321d83613989565b51919750955093505050505b9250925092565b825160095460408051808201909152600a81526910d210d2d7d0d3d5539560b21b60208201526000929182146132a75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50825181600101146040518060400160405280600c81526020016b4348434b5f4f46465345545360a01b815250906133205760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b50600080805b838110156134ce57600088828151811061333c57fe5b60200260200101519050836bffffffffffffffffffffffff19168160601b6bffffffffffffffffffffffff1916116040518060400160405280600a81526020016921a421a5afa7a92222a960b11b815250906133d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b5060006133e582612420565b60018101549091508b90613401906001600160801b0316612715565b10156134c05780600001546134418d8b8b878151811061341d57fe5b60200260200101518c886001018151811061343457fe5b60200260200101516130c5565b146040518060400160405280601181526020017021a421a5afa9aa20a5a2a92fa82927a7a360791b815250906134b85760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b506001909301925b5060601b9250600101613326565b5098975050505050505050565b60058190556040805182815290517f9d13d0ad532ca8e545a3b66828cb99a18c3bc98e2a50b4db1990a033fdba6f639181900360200190a150565b60011490565b1590565b80516000906001600160801b0316431080159061354a575060208201516001600160801b03164311155b92915050565b600061239083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613abf565b6000806135b2896101400151878b61012001518c604001510188036131a2565b90506135d688886135ce846135c76001612715565b8801612784565b60008861271c565b9998505050505050505050565b60008061360d87602001518861014001516135fc61312f565b8a61016001518b6101200151613b19565b905060006136268261361f6001612715565b8601612784565b905061363687878360018961271c565b98975050505050505050565b60008061365e88600001518961010001518a6101600151613b5f565b905060006136908961018001518a6101a001518b6101c001516000801b8d6101e001516000801b8f6102000151613bb1565b905060006136a38a60e001518484613c14565b90506136be89896136b684898b01612784565b60028b61271c565b9a9950505050505050505050565b600061312783836136e7876101e00151886102000151612784565b60036137098961018001518a61014001518b61012001518c60400151016131a2565b61271c565b7f5761ea2104e5d52e617adb7f0bfc8970ffa1d06f57d28cb2bb3a034532c970356040518060e00160405280858152602001848152602001866101400151815260200186610160015181526020018661018001518152602001866101e00151815260200186610200015181525082866101200151876101000151886101c001518960e001518a6101a001516040518088600760200280838360005b838110156137c15781810151838201526020016137a9565b5050505090500187815260200186815260200185600260200280838360005b838110156137f85781810151838201526020016137e0565b50505067ffffffffffffffff9788169390910192835250509290931660208301521515604080830191909152519081900360600195509350505050a150505050565b600080613845614315565b845184106138655760008461385a6000613c5c565b925092509250613229565b600080859050600087828151811061387957fe5b016020015160019092019160f81c90506000613893614343565b60ff83166138c7576138a58a85613cda565b9196509450915084846138b784613c5c565b9750975097505050505050613229565b60ff8316600114156138ef576138dd8a85613d2d565b9196509450905084846138b783613e8e565b60ff831660021415613917576139058a85613cda565b9196509450915084846138b784613eee565b600360ff84161080159061392e5750600c60ff8416105b156139695760021983016060613945828d88613f6c565b9198509650905086866139578361402a565b99509950995050505050505050613229565b6000806139766000613c5c565b9199509750955050505050509250925092565b61399161436a565b6060820151600c60ff909116106139e3576040805162461bcd60e51b8152602060048201526011602482015270496e76616c6964207479706520636f646560781b604482015290519081900360640190fd5b606082015160ff16613a10576040518060200160405280613a0784600001516140da565b90529050610fbf565b606082015160ff1660011415613a57576040518060200160405280613a078460200151600001518560200151604001518660200151606001518760200151602001516140fe565b606082015160ff1660021415613a7c5750604080516020810190915281518152610fbf565b600360ff16826060015160ff1610158015613aa057506060820151600c60ff909116105b15613abd576040518060200160405280613a0784604001516141a6565bfe5b60008184841115613b115760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610dd6578181015183820152602001610dbe565b505050900390565b60408051602080820197909752808201959095526060850193909352608084019190915260a0808401919091528151808403909101815260c09092019052805191012090565b815160209283015160408051808601969096526001600160801b0319608093841b81168783015291831b9091166050860152606080860193909352805180860390930183529301909252815191012090565b6040805160208082019990995296151560f81b8782015260c09590951b6001600160c01b031916604187015260498601939093526069850191909152608984015260a9808401919091528151808403909101815260c99092019052805191012090565b6040805160c09490941b6001600160c01b0319166020808601919091526028850193909352604880850192909252805180850390920182526068909301909252815191012090565b613c64614315565b604080516080808201835284825282519081018352600080825260208281018290528285018290526060830182905280840192909252835181815291820184529192830191613cc9565b613cb6614315565b815260200190600190039081613cae5790505b508152600060209091015292915050565b6000806000808551905084811080613cf457506020858203105b15613d09575060009250839150829050613229565b600160208601613d1f888863ffffffff6142f216565b935093509350509250925092565b600080613d38614343565b60008490506000868281518110613d4b57fe5b602001015160f81c60f81b60f81c905081806001019250506000878381518110613d7157fe5b016020015160019384019360f89190911c915060009060ff84161415613df8576000613d9b614315565b613da58b8761383a565b909750909250905081613de9575050604080516080810182526000808252602082018190529181018290526060810182905290975088965094506132299350505050565b613df281613989565b51925050505b6000613e0a8a8663ffffffff6142f216565b90506020850194508360ff1660011415613e56576040805160808101825260ff909416845260208401919091526001908301819052606083019190915295509193509091506132299050565b6040805160808101825260ff949094168452602084019190915260009083018190526060830152506001989297509550909350505050565b613e96614315565b604080516080810182526000808252602080830186905283518281529081018452919283019190613edd565b613eca614315565b815260200190600190039081613ec25790505b508152600160209091015292915050565b613ef6614315565b604080516080808201835284825282519081018352600080825260208281018290528285018290526060830182905280840192909252835181815291820184529192830191613f5b565b613f48614315565b815260200190600190039081613f405790505b508152600260209091015292915050565b60008060606000849050600060608860ff16604051908082528060200260200182016040528015613fb757816020015b613fa4614315565b815260200190600190039081613f9c5790505b50905060005b8960ff168160ff16101561401457613fd5898561383a565b8451859060ff8616908110613fe657fe5b6020908102919091010152945092508261400c5750600095508694509250614021915050565b600101613fbd565b5060019550919350909150505b93509350939050565b614032614315565b61403c825161430e565b61408d576040805162461bcd60e51b815260206004820152601a60248201527f5475706c65206d75737420686176652076616c69642073697a65000000000000604482015290519081900360640190fd5b5060408051608080820183526000808352835191820184528082526020828101829052828501829052606080840192909252830191909152918101839052915160030160ff169082015290565b60408051602080820193909352815180820384018152908201909152805191012090565b60008315614158575060408051600160f81b6020808301919091526001600160f81b031960f888901b1660218301526022820185905260428083018590528351808403909101815260629092019092528051910120613127565b5060408051600160f81b6020808301919091526001600160f81b031960f888901b16602183015260228083018590528351808403909101815260429092019092528051910120949350505050565b60006008825111156141f6576040805162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c840e8eae0d8ca40d8cadccee8d60631b604482015290519081900360640190fd5b60608251604051908082528060200260200182016040528015614223578160200160208202803883390190505b50805190915060005b8181101561427f5761423c61436a565b61425886838151811061424b57fe5b6020026020010151613989565b9050806000015184838151811061426b57fe5b60209081029190910101525060010161422c565b508351600360ff160182604051602001808360ff1660ff1660f81b8152600101828051906020019060200280838360005b838110156142c85781810151838201526020016142b0565b50505050905001925050506040516020818303038152906040528051906020012092505050919050565b6000816020018351101561430557600080fd5b50016020015190565b6008101590565b60405180608001604052806000815260200161432f614343565b815260606020820152600060409091015290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160208101909152600081529056fea265627a7a723158206e6e19f94793e755b416bcd103aeb51bfd4c49b38bab229de27ed46a86d6942f64736f6c63430005100032" // DeployArbRollup deploys a new Ethereum contract, binding an instance of ArbRollup to it. func DeployArbRollup(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ArbRollup, error) { @@ -3684,7 +3684,7 @@ var NodeGraphFuncSigs = map[string]string{ } // NodeGraphBin is the compiled bytecode used for deploying new contracts. -var NodeGraphBin = "0x608060405234801561001057600080fd5b50610508806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806357ca6d1b1461005c57806365f7f80d1461008d578063bbc2cc00146100a7578063d489113a146100df578063ef5f7cb914610103575b600080fd5b6100796004803603602081101561007257600080fd5b50356101ce565b604080519115158252519081900360200190f35b6100956101e3565b60408051918252519081900360200190f35b6100af6101e9565b60408051948552602085019390935267ffffffffffffffff91821684840152166060830152519081900360800190f35b6100e761020f565b604080516001600160a01b039092168252519081900360200190f35b6101cc6004803603606081101561011957600080fd5b8135919081019060408101602082013564010000000081111561013b57600080fd5b82018360208201111561014d57600080fd5b8035906020019184602083028401116401000000008311171561016f57600080fd5b91939092909160208101903564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b50909250905061021e565b005b60009081526004602052604090205460ff1690565b60055490565b60015460025460035467ffffffffffffffff808216916801000000000000000090041684565b6000546001600160a01b031681565b600061025d8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061045492505050565b9050610268816101ce565b6040518060400160405280600a81526020016928292aa722afa622a0a360b11b815250906103145760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102d95781810151838201526020016102c1565b50505050905090810190601f1680156103065780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508282600081811061032257fe5b905060200201358585600081811061033657fe5b905060200201351415801561038d575061034e6101e3565b61038b8785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061045492505050565b145b6040518060400160405280600e81526020016d141495539157d0d3d391931250d560921b815250906104005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102d95781810151838201526020016102c1565b50600081815260046020908152604091829020805460ff19169055815183815291517f3d3e2ada9638548d1bb115fd766ef675213d953efe8d433bbd8d6718f44909509281900390910190a1505050505050565b600061046483836000855161046b565b9392505050565b600084835b838110156104c9578186828151811061048557fe5b602002602001015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012091508080600101915050610470565b509594505050505056fea265627a7a7231582033afb54afa63ff3d59e358e2068a6a541da725129d1027644e45bd165cfed2bb64736f6c63430005100032" +var NodeGraphBin = "0x608060405234801561001057600080fd5b50610508806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806357ca6d1b1461005c57806365f7f80d1461008d578063bbc2cc00146100a7578063d489113a146100df578063ef5f7cb914610103575b600080fd5b6100796004803603602081101561007257600080fd5b50356101ce565b604080519115158252519081900360200190f35b6100956101e3565b60408051918252519081900360200190f35b6100af6101e9565b60408051948552602085019390935267ffffffffffffffff91821684840152166060830152519081900360800190f35b6100e761020f565b604080516001600160a01b039092168252519081900360200190f35b6101cc6004803603606081101561011957600080fd5b8135919081019060408101602082013564010000000081111561013b57600080fd5b82018360208201111561014d57600080fd5b8035906020019184602083028401116401000000008311171561016f57600080fd5b91939092909160208101903564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b50909250905061021e565b005b60009081526004602052604090205460ff1690565b60055490565b60015460025460035467ffffffffffffffff808216916801000000000000000090041684565b6000546001600160a01b031681565b600061025d8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061045492505050565b9050610268816101ce565b6040518060400160405280600a81526020016928292aa722afa622a0a360b11b815250906103145760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102d95781810151838201526020016102c1565b50505050905090810190601f1680156103065780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508282600081811061032257fe5b905060200201358585600081811061033657fe5b905060200201351415801561038d575061034e6101e3565b61038b8785858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061045492505050565b145b6040518060400160405280600e81526020016d141495539157d0d3d391931250d560921b815250906104005760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156102d95781810151838201526020016102c1565b50600081815260046020908152604091829020805460ff19169055815183815291517f3d3e2ada9638548d1bb115fd766ef675213d953efe8d433bbd8d6718f44909509281900390910190a1505050505050565b600061046483836000855161046b565b9392505050565b600084835b838110156104c9578186828151811061048557fe5b602002602001015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012091508080600101915050610470565b509594505050505056fea265627a7a72315820c1b9b9718e28b4bf0f3eda48a63a480a6ce139cdaa590dd7b95f6071fc037f7164736f6c63430005100032" // DeployNodeGraph deploys a new Ethereum contract, binding an instance of NodeGraph to it. func DeployNodeGraph(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *NodeGraph, error) { @@ -4689,7 +4689,7 @@ func (_Protocol *ProtocolTransactorRaw) Transact(opts *bind.TransactOpts, method const RollupTimeABI = "[]" // RollupTimeBin is the compiled bytecode used for deploying new contracts. -var RollupTimeBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820567bd523c2a3835903bc4c15252e3f5047d94de05e366f7ab59d27a918b7780e64736f6c63430005100032" +var RollupTimeBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820f76b65696b1afe111f7238e21468898d3dadc1892616aade3f30e3139577028064736f6c63430005100032" // DeployRollupTime deploys a new Ethereum contract, binding an instance of RollupTime to it. func DeployRollupTime(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RollupTime, error) { @@ -5184,7 +5184,7 @@ var StakingFuncSigs = map[string]string{ } // StakingBin is the compiled bytecode used for deploying new contracts. -var StakingBin = "0x608060405234801561001057600080fd5b50610c66806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80635dbaf68b1461005c5780636177fd18146100805780636bc3cd22146100ba578063bac5963f146100f2578063d16c305d146102a8575b600080fd5b6100646102cc565b604080516001600160a01b039092168252519081900360200190f35b6100a66004803603602081101561009657600080fd5b50356001600160a01b03166102db565b604080519115158252519081900360200190f35b6100f0600480360360608110156100d057600080fd5b506001600160a01b038135811691602081013590911690604001356102f8565b005b6100f060048036036101a081101561010957600080fd5b6040805180820182526001600160a01b0384358116946020810135909116938382013593606083013593918301929160c08301916080840190600290839083908082843760009201919091525050604080518082018252929594938181019392509060029083908390808284376000920191909152509194939260208101925035905064010000000081111561019e57600080fd5b8201836020820111156101b057600080fd5b803590602001918460208302840111640100000000831117156101d257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561022257600080fd5b82018360208201111561023457600080fd5b8035906020019184602083028401116401000000008311171561025657600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050823593505050602081013590604001356001600160801b0316610491565b6102b0610a36565b604080516001600160801b039092168252519081900360200190f35b6000546001600160a01b031681565b6001600160a01b0316600090815260026020526040902054151590565b33600090815260046020908152604091829020548251808401909352600f83526e2922a9afa1a420a62fa9a2a72222a960891b9183019190915260ff166103bd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561038257818101518382015260200161036a565b50505050905090810190601f1680156103af5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50336000908152600460205260408120805460ff191690556103de84610a45565b6001546040519192506001600160a01b0386169160026001600160801b039283160490911680156108fc02916000818181858888f19350505050158015610429573d6000803e3d6000fd5b5060018101805460ff60801b1916905561044283610ad6565b604080513381526001600160a01b03808716602083015285168183015290517f468aa7d460319b17466ca163bca353a0c62fff0d7d0fa287f634ef305d946f299181900360600190a150505050565b600061049c8c610a45565b905060006104a98c610a45565b60018301549091508a906104c5906001600160801b0316610b17565b106040518060400160405280600d81526020016c53544b315f444541444c494e4560981b815250906105385760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b5060018101548a90610552906001600160801b0316610b17565b106040518060400160405280600d81526020016c53544b325f444541444c494e4560981b815250906105c55760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b50600182015460408051808201909152600c81526b14d512cc57d25397d0d2105360a21b602082015290600160801b900460ff16156106455760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b50600181015460408051808201909152600c81526b14d512cc57d25397d0d2105360a21b602082015290600160801b900460ff16156106c55760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b506020808a01518a5160408051808201909152600a8152692a2ca822afa7a92222a960b11b938101939093521161073d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b50815461076561075f8d8d898e600060200201518e60005b6020020151610b1e565b89610b86565b146040518060400160405280600c81526020016b20a9a9a2a92a2fa82927a7a360a11b815250906107d75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b5080546108086108028d8d6107f5896001600160801b038a16610b9d565b60208f01518e6001610755565b88610b86565b146040518060400160405280600a81526020016921a420a62fa82927a7a360b11b815250906108785760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b5060018260010160106101000a81548160ff02191690831515021790555060018160010160106101000a81548160ff02191690831515021790555060008060009054906101000a90046001600160a01b03166001600160a01b031663865da1c28f8f87898f6001600281106108e957fe5b60200201516040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200195505050505050602060405180830381600087803b15801561096d57600080fd5b505af1158015610981573d6000803e3d6000fd5b505050506040513d602081101561099757600080fd5b50516001600160a01b0381166000908152600460205260409020805460ff191660019081179091559091507f6c69257ddf620994c6fb9e5304db0e5563db3765bee033ddd61b6a1caa7d043f908f908f908d9060209081029190910151604080516001600160a01b0395861681529385169284019290925282820152918416606082015290519081900360800190a15050505050505050505050505050565b6001546001600160801b031690565b6001600160a01b038116600090815260026020908152604080832080548251808401909352600a83526924a72b2fa9aa20a5a2a960b11b9383019390935291610acf5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b5092915050565b6001600160a01b03166000908152600260205260408120908155600101805470ffffffffffffffffffffffffffffffffff1916905560038054600019019055565b6132c80290565b6040805160208082018490528183018790526060820186905260808083018690528351808403909101815260a08301845280519082012060c0830189905260e08084019190915283518084039091018152610100909201909252805191012095945050505050565b6000610b96838360008551610bc9565b9392505050565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b600084835b83811015610c275781868281518110610be357fe5b602002602001015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012091508080600101915050610bce565b509594505050505056fea265627a7a723158207eb6fa74cb9757cb74ef9337d37da64c4097f56fda07aaf3e3702b9abb5e1a8864736f6c63430005100032" +var StakingBin = "0x608060405234801561001057600080fd5b50610c66806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80635dbaf68b1461005c5780636177fd18146100805780636bc3cd22146100ba578063bac5963f146100f2578063d16c305d146102a8575b600080fd5b6100646102cc565b604080516001600160a01b039092168252519081900360200190f35b6100a66004803603602081101561009657600080fd5b50356001600160a01b03166102db565b604080519115158252519081900360200190f35b6100f0600480360360608110156100d057600080fd5b506001600160a01b038135811691602081013590911690604001356102f8565b005b6100f060048036036101a081101561010957600080fd5b6040805180820182526001600160a01b0384358116946020810135909116938382013593606083013593918301929160c08301916080840190600290839083908082843760009201919091525050604080518082018252929594938181019392509060029083908390808284376000920191909152509194939260208101925035905064010000000081111561019e57600080fd5b8201836020820111156101b057600080fd5b803590602001918460208302840111640100000000831117156101d257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561022257600080fd5b82018360208201111561023457600080fd5b8035906020019184602083028401116401000000008311171561025657600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050823593505050602081013590604001356001600160801b0316610491565b6102b0610a36565b604080516001600160801b039092168252519081900360200190f35b6000546001600160a01b031681565b6001600160a01b0316600090815260026020526040902054151590565b33600090815260046020908152604091829020548251808401909352600f83526e2922a9afa1a420a62fa9a2a72222a960891b9183019190915260ff166103bd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561038257818101518382015260200161036a565b50505050905090810190601f1680156103af5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50336000908152600460205260408120805460ff191690556103de84610a45565b6001546040519192506001600160a01b0386169160026001600160801b039283160490911680156108fc02916000818181858888f19350505050158015610429573d6000803e3d6000fd5b5060018101805460ff60801b1916905561044283610ad6565b604080513381526001600160a01b03808716602083015285168183015290517f468aa7d460319b17466ca163bca353a0c62fff0d7d0fa287f634ef305d946f299181900360600190a150505050565b600061049c8c610a45565b905060006104a98c610a45565b60018301549091508a906104c5906001600160801b0316610b17565b106040518060400160405280600d81526020016c53544b315f444541444c494e4560981b815250906105385760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b5060018101548a90610552906001600160801b0316610b17565b106040518060400160405280600d81526020016c53544b325f444541444c494e4560981b815250906105c55760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b50600182015460408051808201909152600c81526b14d512cc57d25397d0d2105360a21b602082015290600160801b900460ff16156106455760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b50600181015460408051808201909152600c81526b14d512cc57d25397d0d2105360a21b602082015290600160801b900460ff16156106c55760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b506020808a01518a5160408051808201909152600a8152692a2ca822afa7a92222a960b11b938101939093521161073d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b50815461076561075f8d8d898e600060200201518e60005b6020020151610b1e565b89610b86565b146040518060400160405280600c81526020016b20a9a9a2a92a2fa82927a7a360a11b815250906107d75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b5080546108086108028d8d6107f5896001600160801b038a16610b9d565b60208f01518e6001610755565b88610b86565b146040518060400160405280600a81526020016921a420a62fa82927a7a360b11b815250906108785760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b5060018260010160106101000a81548160ff02191690831515021790555060018160010160106101000a81548160ff02191690831515021790555060008060009054906101000a90046001600160a01b03166001600160a01b031663865da1c28f8f87898f6001600281106108e957fe5b60200201516040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200195505050505050602060405180830381600087803b15801561096d57600080fd5b505af1158015610981573d6000803e3d6000fd5b505050506040513d602081101561099757600080fd5b50516001600160a01b0381166000908152600460205260409020805460ff191660019081179091559091507f6c69257ddf620994c6fb9e5304db0e5563db3765bee033ddd61b6a1caa7d043f908f908f908d9060209081029190910151604080516001600160a01b0395861681529385169284019290925282820152918416606082015290519081900360800190a15050505050505050505050505050565b6001546001600160801b031690565b6001600160a01b038116600090815260026020908152604080832080548251808401909352600a83526924a72b2fa9aa20a5a2a960b11b9383019390935291610acf5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561038257818101518382015260200161036a565b5092915050565b6001600160a01b03166000908152600260205260408120908155600101805470ffffffffffffffffffffffffffffffffff1916905560038054600019019055565b6103e80290565b6040805160208082018490528183018790526060820186905260808083018690528351808403909101815260a08301845280519082012060c0830189905260e08084019190915283518084039091018152610100909201909252805191012095945050505050565b6000610b96838360008551610bc9565b9392505050565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b600084835b83811015610c275781868281518110610be357fe5b602002602001015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012091508080600101915050610bce565b509594505050505056fea265627a7a723158200c676799a9041ce2f4fa4940e1b025faa5d103b374eebc79c2b0bb171b0ceb0064736f6c63430005100032" // DeployStaking deploys a new Ethereum contract, binding an instance of Staking to it. func DeployStaking(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Staking, error) { diff --git a/packages/arb-validator/rollup/opinionThread.go b/packages/arb-validator/rollup/opinionThread.go index b2d13f6b1f..d84dfb73ed 100644 --- a/packages/arb-validator/rollup/opinionThread.go +++ b/packages/arb-validator/rollup/opinionThread.go @@ -233,6 +233,7 @@ func (chain *ChainObserver) prepareAssertion() *preparedAssertion { messagesVal := inbox.AsValue() mach := currentOpinion.machine.Clone() timeBounds := chain.currentTimeBounds() + log.Println("timeBounds: ", timeBounds.Start.String(), timeBounds.End.String()) maxSteps := chain.nodeGraph.params.MaxExecutionSteps currentHeight := chain.latestBlockId.Height.Clone() timeBoundsLength := new(big.Int).Sub(timeBounds.End.AsInt(), timeBounds.Start.AsInt()) From 1c5f3c18b84e46c47ce2ae572b023b071225c4f3 Mon Sep 17 00:00:00 2001 From: Ed Felten Date: Tue, 4 Feb 2020 22:02:27 -0500 Subject: [PATCH 7/7] Rename functions --- packages/arb-util/common/timeblocks.go | 2 +- packages/arb-util/common/timeticks.go | 4 ++-- packages/arb-validator/challenges/challenge.go | 2 +- packages/arb-validator/challenges/testHelper.go | 2 +- packages/arb-validator/rollup/chainParamsSetting.go | 2 +- packages/arb-validator/rollup/confirmThread.go | 2 +- packages/arb-validator/rollup/node.go | 6 +++--- packages/arb-validator/rollup/rollup_test.go | 2 +- packages/arb-validator/rollup/stakedNodeGraph.go | 2 +- packages/arb-validator/structures/params.go | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/arb-util/common/timeblocks.go b/packages/arb-util/common/timeblocks.go index 2d4ad2518e..65030fd60c 100644 --- a/packages/arb-util/common/timeblocks.go +++ b/packages/arb-util/common/timeblocks.go @@ -54,7 +54,7 @@ func BlocksFromSeconds(seconds int64) *TimeBlocks { } func (tb *TimeBlocks) Duration() time.Duration { - return TimeFromBlockNum(tb).Duration() + return TicksFromBlockNum(tb).Duration() } func (tb *TimeBlocks) Cmp(tb2 *TimeBlocks) int { diff --git a/packages/arb-util/common/timeticks.go b/packages/arb-util/common/timeticks.go index 1ecfa7c166..1a06f2575a 100644 --- a/packages/arb-util/common/timeticks.go +++ b/packages/arb-util/common/timeticks.go @@ -27,11 +27,11 @@ type TimeTicks struct { Val *big.Int } -func TimeFromBlockNum(blockNum *TimeBlocks) TimeTicks { +func TicksFromBlockNum(blockNum *TimeBlocks) TimeTicks { return TimeTicks{new(big.Int).Mul(big.NewInt(TicksPerBlock), blockNum.AsInt())} } -func TimeFromSeconds(seconds int64) TimeTicks { +func TicksFromSeconds(seconds int64) TimeTicks { return TimeTicks{big.NewInt(int64(time.Duration(seconds*TicksPerBlock) * time.Second / _durationPerBlock))} } diff --git a/packages/arb-validator/challenges/challenge.go b/packages/arb-validator/challenges/challenge.go index a10900260e..f7c6bf8175 100644 --- a/packages/arb-validator/challenges/challenge.go +++ b/packages/arb-validator/challenges/challenge.go @@ -89,7 +89,7 @@ func getNextEventWithTimeout( if err != nil { return nil, 0, err } - if common.TimeFromBlockNum(blockId.Height).Cmp(deadline) >= 0 { + if common.TicksFromBlockNum(blockId.Height).Cmp(deadline) >= 0 { err := contract.TimeoutChallenge(ctx) if err != nil { return nil, 0, err diff --git a/packages/arb-validator/challenges/testHelper.go b/packages/arb-validator/challenges/testHelper.go index c73b8efba4..d9c62641fa 100644 --- a/packages/arb-validator/challenges/testHelper.go +++ b/packages/arb-validator/challenges/testHelper.go @@ -101,7 +101,7 @@ func testChallenge( context.Background(), client1.Address(), client2.Address(), - common.TimeFromBlockNum(common.NewTimeBlocksInt(5)), + common.TicksFromBlockNum(common.NewTimeBlocksInt(5)), challengeHash, new(big.Int).SetUint64(uint64(challengeType)), ) diff --git a/packages/arb-validator/rollup/chainParamsSetting.go b/packages/arb-validator/rollup/chainParamsSetting.go index 93ad82dae9..0fb68d72b4 100644 --- a/packages/arb-validator/rollup/chainParamsSetting.go +++ b/packages/arb-validator/rollup/chainParamsSetting.go @@ -26,7 +26,7 @@ func DefaultChainParams() structures.ChainParams { gracePeriodInBlocks := int64(30) return structures.ChainParams{ StakeRequirement: big.NewInt(10), - GracePeriod: common.TimeFromBlockNum(common.NewTimeBlocks(big.NewInt(gracePeriodInBlocks))), + GracePeriod: common.TicksFromBlockNum(common.NewTimeBlocks(big.NewInt(gracePeriodInBlocks))), MaxExecutionSteps: 1000000000, MaxTimeBoundsWidth: 20, ArbGasSpeedLimitPerTick: 20000000, diff --git a/packages/arb-validator/rollup/confirmThread.go b/packages/arb-validator/rollup/confirmThread.go index d6341e0386..d610a46b84 100644 --- a/packages/arb-validator/rollup/confirmThread.go +++ b/packages/arb-validator/rollup/confirmThread.go @@ -37,7 +37,7 @@ func (chain *ChainObserver) startConfirmThread(ctx context.Context) { chain.RUnlock() break } - confValid, confInvalid := chain.nodeGraph.generateNextConfProof(common.TimeFromBlockNum(chain.latestBlockId.Height)) + confValid, confInvalid := chain.nodeGraph.generateNextConfProof(common.TicksFromBlockNum(chain.latestBlockId.Height)) if confValid != nil { for _, listener := range chain.listeners { listener.ValidNodeConfirmable(ctx, chain, confValid) diff --git a/packages/arb-validator/rollup/node.go b/packages/arb-validator/rollup/node.go index 7abb5fefb5..78b8de8e08 100644 --- a/packages/arb-validator/rollup/node.go +++ b/packages/arb-validator/rollup/node.go @@ -119,7 +119,7 @@ func NewNodeFromPrev( assertionTxHash common.Hash, ) *Node { checkTime := disputable.CheckTime(params) - deadlineTicks := common.TimeFromBlockNum(currentTime).Add(params.GracePeriod) + deadlineTicks := common.TicksFromBlockNum(currentTime).Add(params.GracePeriod) if deadlineTicks.Cmp(prev.deadline) >= 0 { deadlineTicks = deadlineTicks.Add(checkTime) } else { @@ -195,7 +195,7 @@ func (node *Node) ChallengeNodeData(params structures.ChainParams) (common.Hash, node.disputable.MaxPendingTop, pendingLeft, ) - challengePeriod := params.GracePeriod.Add(common.TimeFromBlockNum(common.NewTimeBlocks(big.NewInt(1)))) + challengePeriod := params.GracePeriod.Add(common.TicksFromBlockNum(common.NewTimeBlocks(big.NewInt(1)))) return ret, challengePeriod case structures.InvalidMessagesChildType: ret := structures.MessageChallengeDataHash( @@ -205,7 +205,7 @@ func (node *Node) ChallengeNodeData(params structures.ChainParams) (common.Hash, node.disputable.AssertionClaim.ImportedMessagesSlice, node.disputable.AssertionParams.ImportedMessageCount, ) - challengePeriod := params.GracePeriod.Add(common.TimeFromBlockNum(common.NewTimeBlocks(big.NewInt(1)))) + challengePeriod := params.GracePeriod.Add(common.TicksFromBlockNum(common.NewTimeBlocks(big.NewInt(1)))) return ret, challengePeriod case structures.InvalidExecutionChildType: ret := structures.ExecutionDataHash( diff --git a/packages/arb-validator/rollup/rollup_test.go b/packages/arb-validator/rollup/rollup_test.go index c13f026fd9..a7b70684c0 100644 --- a/packages/arb-validator/rollup/rollup_test.go +++ b/packages/arb-validator/rollup/rollup_test.go @@ -236,7 +236,7 @@ func setUpChain(rollupAddress common.Address, checkpointType string, contractPat checkpointer, structures.ChainParams{ StakeRequirement: big.NewInt(1), - GracePeriod: common.TimeFromSeconds(60 * 60), + GracePeriod: common.TicksFromSeconds(60 * 60), MaxExecutionSteps: 1000000, MaxTimeBoundsWidth: 20, ArbGasSpeedLimitPerTick: 1000, diff --git a/packages/arb-validator/rollup/stakedNodeGraph.go b/packages/arb-validator/rollup/stakedNodeGraph.go index 1cabd7bf8c..0903eaa0bc 100644 --- a/packages/arb-validator/rollup/stakedNodeGraph.go +++ b/packages/arb-validator/rollup/stakedNodeGraph.go @@ -86,7 +86,7 @@ func (chain *StakedNodeGraph) CreateStake(ev arbbridge.StakeCreatedEvent) { chain.stakers.Add(&Staker{ ev.Staker, node, - common.TimeFromBlockNum(ev.BlockId.Height), + common.TicksFromBlockNum(ev.BlockId.Height), common.Address{}, }) } diff --git a/packages/arb-validator/structures/params.go b/packages/arb-validator/structures/params.go index 3a4ef3a8c3..f805a1a403 100644 --- a/packages/arb-validator/structures/params.go +++ b/packages/arb-validator/structures/params.go @@ -43,7 +43,7 @@ func (cp ChainParams) WithGracePeriod(period common.TimeTicks) ChainParams { } func (cp ChainParams) WithGracePeriodBlocks(period common.TimeBlocks) ChainParams { - return cp.WithGracePeriod(common.TimeFromBlockNum(&period)) + return cp.WithGracePeriod(common.TicksFromBlockNum(&period)) } func (cp ChainParams) WithMaxExecutionSteps(steps uint64) ChainParams {