Skip to content

Commit b5bfd14

Browse files
authored
style: revive (#1704)
1 parent af17d5c commit b5bfd14

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+352
-288
lines changed

.avalanche-golangci.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ linters:
7373
- perfsprint
7474
# - prealloc
7575
# - predeclared
76-
# - revive
76+
- revive
7777
- spancheck
7878
# - staticcheck
7979
- tagalign
@@ -138,6 +138,9 @@ linters:
138138
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#empty-lines
139139
- name: empty-lines
140140
disabled: false
141+
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#redundant-import-alias
142+
- name: redundant-import-alias
143+
disabled: false
141144
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#string-format
142145
- name: string-format
143146
disabled: false

cmd/simulator/key/key.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
package key
55

66
import (
7-
"context"
87
"crypto/ecdsa"
98
"fmt"
109
"os"
@@ -34,7 +33,7 @@ func Load(file string) (*Key, error) {
3433
}
3534

3635
// LoadAll loads all keys in [dir].
37-
func LoadAll(ctx context.Context, dir string) ([]*Key, error) {
36+
func LoadAll(dir string) ([]*Key, error) {
3837
if _, err := os.Stat(dir); os.IsNotExist(err) {
3938
if err := os.MkdirAll(dir, 0o755); err != nil {
4039
return nil, fmt.Errorf("unable to create %s: %w", dir, err)
@@ -45,7 +44,7 @@ func LoadAll(ctx context.Context, dir string) ([]*Key, error) {
4544

4645
var files []string
4746

48-
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
47+
err := filepath.Walk(dir, func(path string, _ os.FileInfo, _ error) error {
4948
if path == dir {
5049
return nil
5150
}

cmd/simulator/load/funder.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func DistributeFunds(ctx context.Context, client ethclient.Client, keys []*key.K
109109
if err != nil {
110110
return nil, fmt.Errorf("failed to generate fund distribution sequence from %s of length %d", maxFundsKey.Address, len(needFundsAddrs))
111111
}
112-
worker := NewSingleAddressTxWorker(ctx, client, maxFundsKey.Address)
112+
worker := NewSingleAddressTxWorker(client, maxFundsKey.Address)
113113
txFunderAgent := txs.NewIssueNAgent[*types.Transaction](txSequence, worker, numTxs, m)
114114

115115
if err := txFunderAgent.Execute(ctx); err != nil {

cmd/simulator/load/loader.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ func ExecuteLoader(ctx context.Context, config config.Config) error {
165165
clients = append(clients, client)
166166
}
167167

168-
keys, err := key.LoadAll(ctx, config.KeyDir)
168+
keys, err := key.LoadAll(config.KeyDir)
169169
if err != nil {
170170
return err
171171
}
@@ -235,7 +235,7 @@ func ExecuteLoader(ctx context.Context, config config.Config) error {
235235

236236
workers := make([]txs.Worker[*types.Transaction], 0, len(clients))
237237
for i, client := range clients {
238-
workers = append(workers, NewSingleAddressTxWorker(ctx, client, ethcrypto.PubkeyToAddress(pks[i].PublicKey)))
238+
workers = append(workers, NewSingleAddressTxWorker(client, ethcrypto.PubkeyToAddress(pks[i].PublicKey)))
239239
}
240240
loader := New(workers, txSequences, config.BatchSize, m)
241241
err = loader.Execute(ctx)

cmd/simulator/load/worker.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ type ethereumTxWorker struct {
2626

2727
// NewSingleAddressTxWorker creates and returns a new ethereumTxWorker that confirms transactions by checking the latest
2828
// nonce of [address] and assuming any transaction with a lower nonce was already accepted.
29-
func NewSingleAddressTxWorker(ctx context.Context, client ethclient.Client, address common.Address) *ethereumTxWorker {
29+
func NewSingleAddressTxWorker(client ethclient.Client, address common.Address) *ethereumTxWorker {
3030
newHeads := make(chan *types.Header)
3131
tw := &ethereumTxWorker{
3232
client: client,
@@ -39,7 +39,7 @@ func NewSingleAddressTxWorker(ctx context.Context, client ethclient.Client, addr
3939

4040
// NewTxReceiptWorker creates and returns a new ethereumTxWorker that confirms transactions by checking for the
4141
// corresponding transaction receipt.
42-
func NewTxReceiptWorker(ctx context.Context, client ethclient.Client) *ethereumTxWorker {
42+
func NewTxReceiptWorker(client ethclient.Client) *ethereumTxWorker {
4343
newHeads := make(chan *types.Header)
4444
tw := &ethereumTxWorker{
4545
client: client,

consensus/dummy/consensus.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,14 +257,14 @@ func (eng *DummyEngine) VerifyHeader(chain consensus.ChainHeaderReader, header *
257257
return eng.verifyHeader(chain, header, parent, false)
258258
}
259259

260-
func (*DummyEngine) VerifyUncles(chain consensus.ChainReader, block *types.Block) error {
260+
func (*DummyEngine) VerifyUncles(_ consensus.ChainReader, block *types.Block) error {
261261
if len(block.Uncles()) > 0 {
262262
return errUnclesUnsupported
263263
}
264264
return nil
265265
}
266266

267-
func (*DummyEngine) Prepare(chain consensus.ChainHeaderReader, header *types.Header) error {
267+
func (*DummyEngine) Prepare(_ consensus.ChainHeaderReader, header *types.Header) error {
268268
header.Difficulty = big.NewInt(1)
269269
return nil
270270
}
@@ -329,7 +329,7 @@ func (eng *DummyEngine) verifyBlockFee(
329329
return nil
330330
}
331331

332-
func (eng *DummyEngine) Finalize(chain consensus.ChainHeaderReader, block *types.Block, parent *types.Header, state *state.StateDB, receipts []*types.Receipt) error {
332+
func (eng *DummyEngine) Finalize(chain consensus.ChainHeaderReader, block *types.Block, parent *types.Header, _ *state.StateDB, receipts []*types.Receipt) error {
333333
config := params.GetExtra(chain.Config())
334334
timestamp := block.Time()
335335
// we use the parent to determine the fee config
@@ -411,6 +411,7 @@ func (eng *DummyEngine) FinalizeAndAssemble(chain consensus.ChainHeaderReader, h
411411
), nil
412412
}
413413

414+
//nolint:revive // General-purpose types lose the meaning of args if unused ones are removed
414415
func (*DummyEngine) CalcDifficulty(chain consensus.ChainHeaderReader, time uint64, parent *types.Header) *big.Int {
415416
return big.NewInt(1)
416417
}

core/blockchain_ext_test.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ func InsertChainAcceptSingleBlock(t *testing.T, create createFunc) {
246246

247247
// This call generates a chain of 3 blocks.
248248
signer := types.HomesteadSigner{}
249-
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, 3, 10, func(i int, gen *BlockGen) {
249+
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, 3, 10, func(_ int, gen *BlockGen) {
250250
tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(addr1), addr2, big.NewInt(10000), ethparams.TxGas, nil, nil), signer, key1)
251251
gen.AddTx(tx)
252252
})
@@ -317,7 +317,7 @@ func InsertLongForkedChain(t *testing.T, create createFunc) {
317317

318318
numBlocks := 129
319319
signer := types.HomesteadSigner{}
320-
_, chain1, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, numBlocks, 10, func(i int, gen *BlockGen) {
320+
_, chain1, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, numBlocks, 10, func(_ int, gen *BlockGen) {
321321
// Generate a transaction to create a unique block
322322
tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(addr1), addr2, big.NewInt(10000), ethparams.TxGas, nil, nil), signer, key1)
323323
gen.AddTx(tx)
@@ -327,7 +327,7 @@ func InsertLongForkedChain(t *testing.T, create createFunc) {
327327
}
328328
// Generate the forked chain to be longer than the original chain to check for a regression where
329329
// a longer chain can trigger a reorg.
330-
_, chain2, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, numBlocks+1, 10, func(i int, gen *BlockGen) {
330+
_, chain2, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, numBlocks+1, 10, func(_ int, gen *BlockGen) {
331331
// Generate a transaction with a different amount to ensure [chain2] is different than [chain1].
332332
tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(addr1), addr2, big.NewInt(5000), ethparams.TxGas, nil, nil), signer, key1)
333333
gen.AddTx(tx)
@@ -481,15 +481,15 @@ func AcceptNonCanonicalBlock(t *testing.T, create createFunc) {
481481

482482
numBlocks := 3
483483
signer := types.HomesteadSigner{}
484-
_, chain1, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, numBlocks, 10, func(i int, gen *BlockGen) {
484+
_, chain1, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, numBlocks, 10, func(_ int, gen *BlockGen) {
485485
// Generate a transaction to create a unique block
486486
tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(addr1), addr2, big.NewInt(10000), ethparams.TxGas, nil, nil), signer, key1)
487487
gen.AddTx(tx)
488488
})
489489
if err != nil {
490490
t.Fatal(err)
491491
}
492-
_, chain2, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, numBlocks, 10, func(i int, gen *BlockGen) {
492+
_, chain2, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, numBlocks, 10, func(_ int, gen *BlockGen) {
493493
// Generate a transaction with a different amount to create a chain of blocks different from [chain1]
494494
tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(addr1), addr2, big.NewInt(5000), ethparams.TxGas, nil, nil), signer, key1)
495495
gen.AddTx(tx)
@@ -590,7 +590,7 @@ func SetPreferenceRewind(t *testing.T, create createFunc) {
590590

591591
numBlocks := 3
592592
signer := types.HomesteadSigner{}
593-
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, numBlocks, 10, func(i int, gen *BlockGen) {
593+
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, numBlocks, 10, func(_ int, gen *BlockGen) {
594594
// Generate a transaction to create a unique block
595595
tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(addr1), addr2, big.NewInt(10000), ethparams.TxGas, nil, nil), signer, key1)
596596
gen.AddTx(tx)
@@ -879,7 +879,7 @@ func EmptyBlocks(t *testing.T, create createFunc) {
879879
}
880880
defer blockchain.Stop()
881881

882-
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, 3, 10, func(i int, gen *BlockGen) {})
882+
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, 3, 10, func(int, *BlockGen) {})
883883
if err != nil {
884884
t.Fatal(err)
885885
}
@@ -896,7 +896,7 @@ func EmptyBlocks(t *testing.T, create createFunc) {
896896
blockchain.DrainAcceptorQueue()
897897

898898
// Nothing to assert about the state
899-
checkState := func(sdb *state.StateDB) error {
899+
checkState := func(*state.StateDB) error {
900900
return nil
901901
}
902902

@@ -997,7 +997,7 @@ func ReorgReInsert(t *testing.T, create createFunc) {
997997

998998
signer := types.HomesteadSigner{}
999999
numBlocks := 3
1000-
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, numBlocks, 10, func(i int, gen *BlockGen) {
1000+
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, numBlocks, 10, func(_ int, gen *BlockGen) {
10011001
// Generate a transaction to create a unique block
10021002
tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(addr1), addr2, big.NewInt(10000), ethparams.TxGas, nil, nil), signer, key1)
10031003
gen.AddTx(tx)
@@ -1400,7 +1400,7 @@ func GenerateChainInvalidBlockFee(t *testing.T, create createFunc) {
14001400

14011401
// This call generates a chain of 3 blocks.
14021402
signer := types.LatestSigner(params.TestChainConfig)
1403-
_, _, _, err = GenerateChainWithGenesis(gspec, blockchain.engine, 3, extras.TestChainConfig.FeeConfig.TargetBlockRate-1, func(i int, gen *BlockGen) {
1403+
_, _, _, err = GenerateChainWithGenesis(gspec, blockchain.engine, 3, extras.TestChainConfig.FeeConfig.TargetBlockRate-1, func(_ int, gen *BlockGen) {
14041404
tx := types.NewTx(&types.DynamicFeeTx{
14051405
ChainID: params.TestChainConfig.ChainID,
14061406
Nonce: gen.TxNonce(addr1),
@@ -1442,7 +1442,7 @@ func InsertChainInvalidBlockFee(t *testing.T, create createFunc) {
14421442
// This call generates a chain of 3 blocks.
14431443
signer := types.LatestSigner(params.TestChainConfig)
14441444
eng := dummy.NewFakerWithMode(dummy.Mode{ModeSkipBlockFee: true, ModeSkipCoinbase: true})
1445-
_, chain, _, err := GenerateChainWithGenesis(gspec, eng, 3, extras.TestChainConfig.FeeConfig.TargetBlockRate-1, func(i int, gen *BlockGen) {
1445+
_, chain, _, err := GenerateChainWithGenesis(gspec, eng, 3, extras.TestChainConfig.FeeConfig.TargetBlockRate-1, func(_ int, gen *BlockGen) {
14461446
tx := types.NewTx(&types.DynamicFeeTx{
14471447
ChainID: params.TestChainConfig.ChainID,
14481448
Nonce: gen.TxNonce(addr1),
@@ -1487,7 +1487,7 @@ func InsertChainValidBlockFee(t *testing.T, create createFunc) {
14871487
signer := types.LatestSigner(params.TestChainConfig)
14881488
tip := big.NewInt(50000 * params.GWei)
14891489
transfer := big.NewInt(10000)
1490-
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, 3, extras.TestChainConfig.FeeConfig.TargetBlockRate-1, func(i int, gen *BlockGen) {
1490+
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, 3, extras.TestChainConfig.FeeConfig.TargetBlockRate-1, func(_ int, gen *BlockGen) {
14911491
feeCap := new(big.Int).Add(gen.BaseFee(), tip)
14921492
tx := types.NewTx(&types.DynamicFeeTx{
14931493
ChainID: params.TestChainConfig.ChainID,
@@ -1692,7 +1692,7 @@ func StatefulPrecompiles(t *testing.T, create createFunc) {
16921692

16931693
// Generate chain of blocks using [genDB] instead of [chainDB] to avoid writing
16941694
// to the BlockChain's database while generating blocks.
1695-
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, 1, 0, func(i int, gen *BlockGen) {
1695+
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, 1, 0, func(_ int, gen *BlockGen) {
16961696
for _, test := range tests {
16971697
test.addTx(gen)
16981698
}
@@ -1759,7 +1759,7 @@ func ReexecBlocks(t *testing.T, create ReexecTestFunc) {
17591759

17601760
// This call generates a chain of 10 blocks.
17611761
signer := types.HomesteadSigner{}
1762-
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, 10, 10, func(i int, gen *BlockGen) {
1762+
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, 10, 10, func(_ int, gen *BlockGen) {
17631763
tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(addr1), addr2, big.NewInt(10000), ethparams.TxGas, nil, nil), signer, key1)
17641764
gen.AddTx(tx)
17651765
})
@@ -1893,7 +1893,7 @@ func ReexecMaxBlocks(t *testing.T, create ReexecTestFunc) {
18931893
numAcceptedBlocks := 2*newCommitInterval - 1
18941894

18951895
signer := types.HomesteadSigner{}
1896-
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, genNumBlocks, 10, func(i int, gen *BlockGen) {
1896+
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, genNumBlocks, 10, func(_ int, gen *BlockGen) {
18971897
tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(addr1), addr2, big.NewInt(10000), ethparams.TxGas, nil, nil), signer, key1)
18981898
gen.AddTx(tx)
18991899
})

core/blockchain_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ type wrappedStateManager struct {
164164
TrieWriter
165165
}
166166

167-
func (w *wrappedStateManager) Shutdown() error { return nil }
167+
func (*wrappedStateManager) Shutdown() error { return nil }
168168

169169
func TestPruningBlockChainUngracefulShutdown(t *testing.T) {
170170
create := func(db ethdb.Database, gspec *Genesis, lastAcceptedHash common.Hash, _ string) (*BlockChain, error) {
@@ -360,7 +360,7 @@ func testRepopulateMissingTriesParallel(t *testing.T, parallelism int) {
360360

361361
// This call generates a chain of 3 blocks.
362362
signer := types.HomesteadSigner{}
363-
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, 10, 10, func(i int, gen *BlockGen) {
363+
_, chain, _, err := GenerateChainWithGenesis(gspec, blockchain.engine, 10, 10, func(_ int, gen *BlockGen) {
364364
tx, _ := types.SignTx(types.NewTransaction(gen.TxNonce(addr1), addr2, big.NewInt(10000), ethparams.TxGas, nil, nil), signer, key1)
365365
gen.AddTx(tx)
366366
})
@@ -534,11 +534,11 @@ func testCanonicalHashMarker(t *testing.T, scheme string) {
534534
}
535535
engine = dummy.NewCoinbaseFaker()
536536
)
537-
_, forkA, _, err := GenerateChainWithGenesis(gspec, engine, c.forkA, 10, func(i int, gen *BlockGen) {})
537+
_, forkA, _, err := GenerateChainWithGenesis(gspec, engine, c.forkA, 10, func(int, *BlockGen) {})
538538
if err != nil {
539539
t.Fatal(err)
540540
}
541-
_, forkB, _, err := GenerateChainWithGenesis(gspec, engine, c.forkB, 10, func(i int, gen *BlockGen) {})
541+
_, forkB, _, err := GenerateChainWithGenesis(gspec, engine, c.forkB, 10, func(int, *BlockGen) {})
542542
if err != nil {
543543
t.Fatal(err)
544544
}
@@ -708,7 +708,7 @@ func testCreateThenDelete(t *testing.T, config *params.ChainConfig) {
708708
}
709709
nonce := uint64(0)
710710
signer := types.HomesteadSigner{}
711-
_, blocks, _, _ := GenerateChainWithGenesis(gspec, engine, 2, 10, func(i int, b *BlockGen) {
711+
_, blocks, _, _ := GenerateChainWithGenesis(gspec, engine, 2, 10, func(_ int, b *BlockGen) {
712712
fee := big.NewInt(1)
713713
if b.header.BaseFee != nil {
714714
fee = b.header.BaseFee
@@ -911,7 +911,7 @@ func TestTransientStorageReset(t *testing.T) {
911911
}
912912
nonce := uint64(0)
913913
signer := types.HomesteadSigner{}
914-
_, blocks, _, _ := GenerateChainWithGenesis(gspec, engine, 1, 10, func(i int, b *BlockGen) {
914+
_, blocks, _, _ := GenerateChainWithGenesis(gspec, engine, 1, 10, func(_ int, b *BlockGen) {
915915
fee := big.NewInt(1)
916916
if b.header.BaseFee != nil {
917917
fee = b.header.BaseFee
@@ -1009,7 +1009,7 @@ func TestEIP3651(t *testing.T) {
10091009

10101010
signer := types.LatestSigner(gspec.Config)
10111011

1012-
_, blocks, _, _ := GenerateChainWithGenesis(gspec, engine, 1, 10, func(i int, b *BlockGen) {
1012+
_, blocks, _, _ := GenerateChainWithGenesis(gspec, engine, 1, 10, func(_ int, b *BlockGen) {
10131013
b.SetCoinbase(aa)
10141014
// One transaction to Coinbase
10151015
txdata := &types.DynamicFeeTx{

core/extstate/firewood_database.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@ func (db *firewoodAccessorDb) OpenTrie(root common.Hash) (state.Trie, error) {
2929
}
3030

3131
// OpenStorageTrie opens a wrapped version of the account trie.
32-
func (db *firewoodAccessorDb) OpenStorageTrie(stateRoot common.Hash, address common.Address, root common.Hash, self state.Trie) (state.Trie, error) {
32+
func (*firewoodAccessorDb) OpenStorageTrie(_ common.Hash, _ common.Address, accountRoot common.Hash, self state.Trie) (state.Trie, error) {
3333
accountTrie, ok := self.(*firewood.AccountTrie)
3434
if !ok {
3535
return nil, fmt.Errorf("Invalid account trie type: %T", self)
3636
}
37-
return firewood.NewStorageTrie(accountTrie, root)
37+
return firewood.NewStorageTrie(accountTrie, accountRoot)
3838
}
3939

4040
// CopyTrie returns a deep copy of the given trie.
4141
// It can be altered by the caller.
42-
func (db *firewoodAccessorDb) CopyTrie(t state.Trie) state.Trie {
42+
func (*firewoodAccessorDb) CopyTrie(t state.Trie) state.Trie {
4343
switch t := t.(type) {
4444
case *firewood.AccountTrie:
4545
return t.Copy()

core/fifo_cache.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func (f *BufferFIFOCache[K, V]) remove(key K) error {
6565

6666
type NoOpFIFOCache[K comparable, V any] struct{}
6767

68-
func (f *NoOpFIFOCache[K, V]) Put(_ K, _ V) {}
69-
func (f *NoOpFIFOCache[K, V]) Get(_ K) (V, bool) {
68+
func (*NoOpFIFOCache[K, V]) Put(K, V) {}
69+
func (*NoOpFIFOCache[K, V]) Get(K) (V, bool) {
7070
return *new(V), false
7171
}

0 commit comments

Comments
 (0)