Full Code of sero-cash/go-sero for AI

master 59892fdab790 cached
2342 files
49.1 MB
8.2M tokens
96173 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (32,655K chars total). Download the full file to get everything.
Repository: sero-cash/go-sero
Branch: master
Commit: 59892fdab790
Files: 2342
Total size: 49.1 MB

Directory structure:
gitextract_id4_y5p3/

├── .gitignore
├── AUTHORS
├── AUTHORS.SERO
├── COPYING
├── COPYING.LESSER
├── Dockerfile
├── LICENSE.SERO
├── LICENSE.SERO.LESSER
├── Makefile
├── README.md
├── accounts/
│   ├── abi/
│   │   ├── abi.go
│   │   ├── abi_test.go
│   │   ├── argument.go
│   │   ├── bind/
│   │   │   ├── auth.go
│   │   │   ├── backend.go
│   │   │   ├── base.go
│   │   │   ├── bind.go
│   │   │   ├── template.go
│   │   │   ├── topics.go
│   │   │   └── util.go
│   │   ├── doc.go
│   │   ├── error.go
│   │   ├── event.go
│   │   ├── method.go
│   │   ├── numbers.go
│   │   ├── pack.go
│   │   ├── reflect.go
│   │   ├── type.go
│   │   └── unpack.go
│   ├── accounts.go
│   ├── errors.go
│   ├── hd.go
│   ├── keystore/
│   │   ├── account_cache.go
│   │   ├── account_cache_test.go
│   │   ├── file_cache.go
│   │   ├── key.go
│   │   ├── keystore.go
│   │   ├── keystore_passphrase.go
│   │   ├── keystore_passphrase_test.go
│   │   ├── keystore_test.go
│   │   ├── keystore_wallet.go
│   │   ├── presale.go
│   │   ├── testdata/
│   │   │   ├── dupes/
│   │   │   │   ├── 1
│   │   │   │   ├── 2
│   │   │   │   └── foo
│   │   │   ├── keystore/
│   │   │   │   ├── .hiddenfile
│   │   │   │   ├── README
│   │   │   │   ├── UTC--2018-08-11T10-19-38.165083119Z--64t1MPxFp4yzxNJ64zp1NmrTXWsrLuw9DMiMZeujbD2HVAKhjR3zpKnuFVjjAXAp86G2PzSVSsdiMdwp5JPoqxtP
│   │   │   │   ├── aaa
│   │   │   │   ├── empty
│   │   │   │   ├── foo/
│   │   │   │   │   └── fd9bd350f08ee3c0c19b85a8e16114a11a60aa4e
│   │   │   │   ├── garbage
│   │   │   │   ├── no-address
│   │   │   │   ├── zero
│   │   │   │   └── zzz
│   │   │   ├── v1/
│   │   │   │   └── cb61d5a9c4896fb9658090b597ef0e7be6f7b67e/
│   │   │   │       └── cb61d5a9c4896fb9658090b597ef0e7be6f7b67e
│   │   │   ├── v1_test_vector.json
│   │   │   ├── v3_test_vector.json
│   │   │   └── very-light-scrypt.json
│   │   ├── watch.go
│   │   └── watch_fallback.go
│   ├── manager.go
│   ├── url.go
│   └── url_test.go
├── appveyor.yml
├── build/
│   ├── RPMINSTALL.md
│   ├── ci-notes.md
│   ├── ci.go
│   ├── clean_go_build_cache.sh
│   ├── env.sh
│   ├── gero.conf
│   ├── gero.spec
│   ├── geropkg/
│   │   ├── attach.bat
│   │   ├── attach.sh
│   │   ├── clean.sh
│   │   ├── geroConfig.toml
│   │   ├── startup.bat
│   │   ├── startup.sh
│   │   ├── startupEx.sh
│   │   ├── startupVoter.bat
│   │   ├── startupVoter.sh
│   │   └── stop.sh
│   ├── goimports.sh
│   ├── install.sh
│   ├── pod.podspec
│   └── update-license.go
├── circle.yml
├── cmd/
│   ├── abigen/
│   │   └── main.go
│   ├── bootnode/
│   │   └── main.go
│   ├── gero/
│   │   ├── accountcmd.go
│   │   ├── bugcmd.go
│   │   ├── chaincmd.go
│   │   ├── config.go
│   │   ├── consolecmd.go
│   │   ├── main.go
│   │   ├── misccmd.go
│   │   ├── monitorcmd.go
│   │   ├── snapshotcmd.go
│   │   ├── testdata/
│   │   │   ├── empty.js
│   │   │   ├── guswallet.json
│   │   │   ├── passwords.txt
│   │   │   └── wrong-passwords.txt
│   │   └── usage.go
│   ├── internal/
│   │   └── browser/
│   │       └── browser.go
│   ├── proofnode/
│   │   └── main.go
│   ├── tx/
│   │   ├── confirm.go
│   │   ├── dec.go
│   │   ├── main.go
│   │   └── sign.go
│   └── utils/
│       ├── cmd.go
│       ├── customflags.go
│       └── flags.go
├── common/
│   ├── address/
│   │   └── account_types.go
│   ├── big.go
│   ├── bitutil/
│   │   ├── bitutil.go
│   │   ├── bitutil_test.go
│   │   ├── compress.go
│   │   ├── compress_fuzz.go
│   │   └── compress_test.go
│   ├── bytes.go
│   ├── bytes_test.go
│   ├── compiler/
│   │   ├── helpers.go
│   │   ├── solidity.go
│   │   └── solidity_test.go
│   ├── debug.go
│   ├── fdlimit/
│   │   ├── fdlimit_freebsd.go
│   │   ├── fdlimit_unix.go
│   │   └── fdlimit_windows.go
│   ├── format.go
│   ├── hexutil/
│   │   ├── abi_string.go
│   │   ├── hexutil.go
│   │   ├── hexutil_test.go
│   │   ├── json.go
│   │   └── json_test.go
│   ├── math/
│   │   ├── big.go
│   │   ├── big_test.go
│   │   ├── integer.go
│   │   └── integer_test.go
│   ├── mclock/
│   │   └── mclock.go
│   ├── path.go
│   ├── size.go
│   ├── size_test.go
│   ├── test_utils.go
│   └── types.go
├── consensus/
│   ├── consensus.go
│   ├── errors.go
│   ├── ethash/
│   │   ├── algorithm.go
│   │   ├── algorithm_test.go
│   │   ├── consensus.go
│   │   ├── consensus_test.go
│   │   ├── ethash.go
│   │   ├── ethash_test.go
│   │   ├── progpow.go
│   │   ├── progpow_test.go
│   │   └── sealer.go
│   └── ethash_hash/
│       ├── blake2b.c
│       ├── hash_c.go
│       ├── hash_c_test.go
│       └── xxenc.c
├── console/
│   ├── bridge.go
│   ├── console.go
│   ├── console_test.go
│   ├── prompter.go
│   └── testdata/
│       ├── exec.js
│       └── preload.js
├── containers/
│   └── docker/
│       └── gero-ubuntu/
│           ├── Dockerfile
│           ├── Makefile
│           ├── geroConfig.toml
│           └── rungero.docker
├── core/
│   ├── .gitignore
│   ├── asm/
│   │   ├── asm.go
│   │   ├── compiler.go
│   │   └── lexer.go
│   ├── block_validator.go
│   ├── block_validator_test.go
│   ├── blockchain.go
│   ├── bloombits/
│   │   ├── doc.go
│   │   ├── generator.go
│   │   ├── generator_test.go
│   │   ├── matcher.go
│   │   ├── scheduler.go
│   │   └── scheduler_test.go
│   ├── chain_indexer.go
│   ├── chain_indexer_test.go
│   ├── chain_makers.go
│   ├── error.go
│   ├── events.go
│   ├── evm.go
│   ├── gaspool.go
│   ├── gen_genesis.go
│   ├── gen_genesis_account.go
│   ├── genesis.go
│   ├── genesis_alloc.go
│   ├── headerchain.go
│   ├── mkalloc.go
│   ├── rawdb/
│   │   ├── accessors_chain.go
│   │   ├── accessors_chain_test.go
│   │   ├── accessors_indexes.go
│   │   ├── accessors_metadata.go
│   │   ├── interfaces.go
│   │   └── schema.go
│   ├── state/
│   │   ├── database.go
│   │   ├── dump.go
│   │   ├── iterator.go
│   │   ├── iterator_test.go
│   │   ├── journal.go
│   │   ├── managed_state.go
│   │   ├── state_object.go
│   │   ├── state_test.go
│   │   ├── statedb.go
│   │   ├── statedb4zero.go
│   │   ├── statedb_test.go
│   │   ├── sync.go
│   │   └── sync_test.go
│   ├── state_processor.go
│   ├── state_transition.go
│   ├── tx_checker.go
│   ├── tx_journal.go
│   ├── tx_list.go
│   ├── tx_pool.go
│   ├── types/
│   │   ├── block.go
│   │   ├── block_rlp.go
│   │   ├── block_test.go
│   │   ├── bloom9.go
│   │   ├── derive_sha.go
│   │   ├── gen_header_json.go
│   │   ├── gen_log_json.go
│   │   ├── gen_receipt_json.go
│   │   ├── gen_tx_json.go
│   │   ├── header.go
│   │   ├── header_test.go
│   │   ├── log.go
│   │   ├── receipt.go
│   │   ├── receipt_rlp.go
│   │   ├── share.go
│   │   ├── transaction.go
│   │   ├── transaction_test.go
│   │   └── vserial/
│   │       └── rlp.go
│   ├── types.go
│   ├── vm/
│   │   ├── analysis.go
│   │   ├── analysis_test.go
│   │   ├── common.go
│   │   ├── contract.go
│   │   ├── contracts.go
│   │   ├── doc.go
│   │   ├── errors.go
│   │   ├── evm.go
│   │   ├── gas.go
│   │   ├── gas_table.go
│   │   ├── gas_table_test.go
│   │   ├── gen_structlog.go
│   │   ├── instructions.go
│   │   ├── instructions_test.go
│   │   ├── int_pool_verifier.go
│   │   ├── int_pool_verifier_empty.go
│   │   ├── interface.go
│   │   ├── interpreter.go
│   │   ├── intpool.go
│   │   ├── intpool_test.go
│   │   ├── jump_table.go
│   │   ├── logger.go
│   │   ├── logger_test.go
│   │   ├── memory.go
│   │   ├── memory_table.go
│   │   ├── noop.go
│   │   ├── opcodes.go
│   │   ├── runtime/
│   │   │   ├── doc.go
│   │   │   ├── env.go
│   │   │   ├── fuzz.go
│   │   │   ├── runtime.go
│   │   │   └── runtime_test.go
│   │   ├── stack.go
│   │   └── stack_table.go
│   └── vote.go
├── crypto/
│   ├── crypto.go
│   ├── ecies/
│   │   ├── .gitignore
│   │   ├── LICENSE
│   │   ├── README
│   │   ├── ecies.go
│   │   ├── ecies_test.go
│   │   └── params.go
│   ├── secp256k1/
│   │   ├── .gitignore
│   │   ├── LICENSE
│   │   ├── curve.go
│   │   ├── ext.h
│   │   ├── libsecp256k1/
│   │   │   ├── .gitignore
│   │   │   ├── .travis.yml
│   │   │   ├── COPYING
│   │   │   ├── Makefile.am
│   │   │   ├── README.md
│   │   │   ├── TODO
│   │   │   ├── autogen.sh
│   │   │   ├── build-aux/
│   │   │   │   └── m4/
│   │   │   │       ├── ax_jni_include_dir.m4
│   │   │   │       ├── ax_prog_cc_for_build.m4
│   │   │   │       └── bitcoin_secp.m4
│   │   │   ├── configure.ac
│   │   │   ├── contrib/
│   │   │   │   ├── lax_der_parsing.c
│   │   │   │   ├── lax_der_parsing.h
│   │   │   │   ├── lax_der_privatekey_parsing.c
│   │   │   │   └── lax_der_privatekey_parsing.h
│   │   │   ├── include/
│   │   │   │   ├── secp256k1.h
│   │   │   │   ├── secp256k1_ecdh.h
│   │   │   │   └── secp256k1_recovery.h
│   │   │   ├── libsecp256k1.pc.in
│   │   │   ├── obj/
│   │   │   │   └── .gitignore
│   │   │   ├── sage/
│   │   │   │   ├── group_prover.sage
│   │   │   │   ├── secp256k1.sage
│   │   │   │   └── weierstrass_prover.sage
│   │   │   └── src/
│   │   │       ├── asm/
│   │   │       │   └── field_10x26_arm.s
│   │   │       ├── basic-config.h
│   │   │       ├── bench.h
│   │   │       ├── bench_ecdh.c
│   │   │       ├── bench_internal.c
│   │   │       ├── bench_recover.c
│   │   │       ├── bench_schnorr_verify.c
│   │   │       ├── bench_sign.c
│   │   │       ├── bench_verify.c
│   │   │       ├── ecdsa.h
│   │   │       ├── ecdsa_impl.h
│   │   │       ├── eckey.h
│   │   │       ├── eckey_impl.h
│   │   │       ├── ecmult.h
│   │   │       ├── ecmult_const.h
│   │   │       ├── ecmult_const_impl.h
│   │   │       ├── ecmult_gen.h
│   │   │       ├── ecmult_gen_impl.h
│   │   │       ├── ecmult_impl.h
│   │   │       ├── field.h
│   │   │       ├── field_10x26.h
│   │   │       ├── field_10x26_impl.h
│   │   │       ├── field_5x52.h
│   │   │       ├── field_5x52_asm_impl.h
│   │   │       ├── field_5x52_impl.h
│   │   │       ├── field_5x52_int128_impl.h
│   │   │       ├── field_impl.h
│   │   │       ├── gen_context.c
│   │   │       ├── group.h
│   │   │       ├── group_impl.h
│   │   │       ├── hash.h
│   │   │       ├── hash_impl.h
│   │   │       ├── java/
│   │   │       │   ├── org/
│   │   │       │   │   └── bitcoin/
│   │   │       │   │       ├── NativeSecp256k1.java
│   │   │       │   │       ├── NativeSecp256k1Test.java
│   │   │       │   │       ├── NativeSecp256k1Util.java
│   │   │       │   │       └── Secp256k1Context.java
│   │   │       │   ├── org_bitcoin_NativeSecp256k1.c
│   │   │       │   ├── org_bitcoin_NativeSecp256k1.h
│   │   │       │   ├── org_bitcoin_Secp256k1Context.c
│   │   │       │   └── org_bitcoin_Secp256k1Context.h
│   │   │       ├── modules/
│   │   │       │   ├── ecdh/
│   │   │       │   │   ├── Makefile.am.include
│   │   │       │   │   ├── main_impl.h
│   │   │       │   │   └── tests_impl.h
│   │   │       │   └── recovery/
│   │   │       │       ├── Makefile.am.include
│   │   │       │       ├── main_impl.h
│   │   │       │       └── tests_impl.h
│   │   │       ├── num.h
│   │   │       ├── num_gmp.h
│   │   │       ├── num_gmp_impl.h
│   │   │       ├── num_impl.h
│   │   │       ├── scalar.h
│   │   │       ├── scalar_4x64.h
│   │   │       ├── scalar_4x64_impl.h
│   │   │       ├── scalar_8x32.h
│   │   │       ├── scalar_8x32_impl.h
│   │   │       ├── scalar_impl.h
│   │   │       ├── scalar_low.h
│   │   │       ├── scalar_low_impl.h
│   │   │       ├── secp256k1.c
│   │   │       ├── testrand.h
│   │   │       ├── testrand_impl.h
│   │   │       ├── tests.c
│   │   │       ├── tests_exhaustive.c
│   │   │       └── util.h
│   │   ├── panic_cb.go
│   │   └── secp256.go
│   ├── sha3/
│   │   ├── LICENSE
│   │   ├── PATENTS
│   │   ├── doc.go
│   │   ├── hashes.go
│   │   ├── keccakf.go
│   │   ├── keccakf_amd64.go
│   │   ├── keccakf_amd64.s
│   │   ├── register.go
│   │   ├── sha3.go
│   │   ├── shake.go
│   │   ├── testdata/
│   │   │   └── keccakKats.json.deflate
│   │   ├── xor.go
│   │   ├── xor_generic.go
│   │   └── xor_unaligned.go
│   ├── signature_cgo.go
│   └── signature_nocgo.go
├── dashboard/
│   ├── README.md
│   ├── assets/
│   │   ├── .eslintrc
│   │   ├── .flowconfig
│   │   ├── common.jsx
│   │   ├── components/
│   │   │   ├── Body.jsx
│   │   │   ├── ChartRow.jsx
│   │   │   ├── CustomTooltip.jsx
│   │   │   ├── Dashboard.jsx
│   │   │   ├── Footer.jsx
│   │   │   ├── Header.jsx
│   │   │   ├── Logs.jsx
│   │   │   ├── Main.jsx
│   │   │   └── SideBar.jsx
│   │   ├── fa-only-woff-loader.js
│   │   ├── index.html
│   │   ├── index.jsx
│   │   ├── package.json
│   │   ├── types/
│   │   │   └── content.jsx
│   │   └── webpack.config.js
│   ├── assets.go
│   ├── config.go
│   ├── cpu.go
│   ├── cpu_windows.go
│   ├── dashboard.go
│   ├── log.go
│   └── message.go
├── event/
│   ├── event.go
│   ├── feed.go
│   ├── filter/
│   │   ├── filter.go
│   │   └── generic_filter.go
│   └── subscription.go
├── interfaces.go
├── internal/
│   ├── build/
│   │   ├── archive.go
│   │   ├── azure.go
│   │   ├── env.go
│   │   ├── pgp.go
│   │   └── util.go
│   ├── cmdtest/
│   │   └── test_cmd.go
│   ├── debug/
│   │   ├── api.go
│   │   ├── flags.go
│   │   ├── loudpanic.go
│   │   ├── loudpanic_fallback.go
│   │   ├── trace.go
│   │   └── trace_fallback.go
│   ├── ethapi/
│   │   ├── SRC20Api.go
│   │   ├── addrlock.go
│   │   ├── api.go
│   │   ├── api_abi.go
│   │   ├── api_exchange.go
│   │   ├── api_flight.go
│   │   ├── api_light_node.go
│   │   ├── api_local.go
│   │   ├── api_proof.go
│   │   ├── api_ssi.go
│   │   ├── api_stake.go
│   │   ├── backend.go
│   │   ├── blockReward.go
│   │   ├── gentx.go
│   │   ├── instance.go
│   │   ├── json.go
│   │   └── util_test.go
│   ├── guide/
│   │   └── guide.go
│   ├── jsre/
│   │   ├── completion.go
│   │   ├── deps/
│   │   │   ├── bignumber.js
│   │   │   ├── bindata.go
│   │   │   ├── deps.go
│   │   │   └── web3.js
│   │   ├── jsre.go
│   │   └── pretty.go
│   └── web3ext/
│       └── web3ext.go
├── log/
│   ├── CONTRIBUTORS
│   ├── LICENSE
│   ├── README.md
│   ├── README_ETHEREUM.md
│   ├── doc.go
│   ├── format.go
│   ├── handler.go
│   ├── handler_glog.go
│   ├── handler_go13.go
│   ├── handler_go14.go
│   ├── logger.go
│   ├── root.go
│   ├── syslog.go
│   └── term/
│       ├── LICENSE
│       ├── terminal_appengine.go
│       ├── terminal_darwin.go
│       ├── terminal_freebsd.go
│       ├── terminal_linux.go
│       ├── terminal_netbsd.go
│       ├── terminal_notwindows.go
│       ├── terminal_openbsd.go
│       ├── terminal_solaris.go
│       └── terminal_windows.go
├── makepkg.sh
├── maketxpkg.sh
├── metrics/
│   ├── FORK.md
│   ├── LICENSE
│   ├── README.md
│   ├── counter.go
│   ├── debug.go
│   ├── disk.go
│   ├── disk_linux.go
│   ├── disk_nop.go
│   ├── ewma.go
│   ├── exp/
│   │   └── exp.go
│   ├── gauge.go
│   ├── gauge_float64.go
│   ├── graphite.go
│   ├── healthcheck.go
│   ├── histogram.go
│   ├── influxdb/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   └── influxdb.go
│   ├── json.go
│   ├── librato/
│   │   ├── client.go
│   │   └── librato.go
│   ├── log.go
│   ├── memory.md
│   ├── meter.go
│   ├── metrics.go
│   ├── opentsdb.go
│   ├── registry.go
│   ├── resetting_timer.go
│   ├── runtime.go
│   ├── runtime_cgo.go
│   ├── runtime_gccpufraction.go
│   ├── runtime_no_cgo.go
│   ├── runtime_no_gccpufraction.go
│   ├── sample.go
│   ├── syslog.go
│   ├── timer.go
│   ├── validate.sh
│   └── writer.go
├── miner/
│   ├── agent.go
│   ├── lotter.go
│   ├── miner.go
│   ├── pending_vote.go
│   ├── remote_agent.go
│   ├── unconfirmed.go
│   └── worker.go
├── node/
│   ├── api.go
│   ├── config.go
│   ├── defaults.go
│   ├── doc.go
│   ├── errors.go
│   ├── node.go
│   └── service.go
├── p2p/
│   ├── dial.go
│   ├── discover/
│   │   ├── database.go
│   │   ├── node.go
│   │   ├── ntp.go
│   │   ├── table.go
│   │   └── udp.go
│   ├── discv5/
│   │   ├── database.go
│   │   ├── metrics.go
│   │   ├── net.go
│   │   ├── node.go
│   │   ├── nodeevent_string.go
│   │   ├── ntp.go
│   │   ├── table.go
│   │   ├── ticket.go
│   │   ├── topic.go
│   │   └── udp.go
│   ├── enr/
│   │   ├── enr.go
│   │   ├── entries.go
│   │   └── idscheme.go
│   ├── message.go
│   ├── metrics.go
│   ├── nat/
│   │   ├── nat.go
│   │   ├── natpmp.go
│   │   └── natupnp.go
│   ├── netutil/
│   │   ├── error.go
│   │   ├── net.go
│   │   ├── toobig_notwindows.go
│   │   └── toobig_windows.go
│   ├── peer.go
│   ├── peer_error.go
│   ├── protocol.go
│   ├── protocols/
│   │   └── protocol.go
│   ├── rlpx.go
│   ├── server.go
│   ├── simulations/
│   │   ├── README.md
│   │   ├── adapters/
│   │   │   ├── docker.go
│   │   │   ├── exec.go
│   │   │   ├── inproc.go
│   │   │   ├── types.go
│   │   │   └── ws.go
│   │   ├── events.go
│   │   ├── examples/
│   │   │   ├── README.md
│   │   │   ├── ping-pong.go
│   │   │   └── ping-pong.sh
│   │   ├── http.go
│   │   ├── mocker.go
│   │   ├── network.go
│   │   ├── pipes/
│   │   │   └── pipes.go
│   │   └── simulation.go
│   └── testing/
│       ├── peerpool.go
│       ├── protocolsession.go
│       └── protocoltester.go
├── params/
│   ├── bootnodes.go
│   ├── config.go
│   ├── denomination.go
│   ├── gas_table.go
│   ├── network_params.go
│   ├── protocol_params.go
│   └── version.go
├── rlp/
│   ├── decode.go
│   ├── doc.go
│   ├── encode.go
│   ├── raw.go
│   └── typecache.go
├── rpc/
│   ├── client.go
│   ├── doc.go
│   ├── endpoints.go
│   ├── errors.go
│   ├── http.go
│   ├── inproc.go
│   ├── ipc.go
│   ├── ipc_unix.go
│   ├── ipc_windows.go
│   ├── json.go
│   ├── server.go
│   ├── subscription.go
│   ├── types.go
│   ├── utils.go
│   └── websocket.go
├── sero/
│   ├── api.go
│   ├── api_backend.go
│   ├── api_tracer.go
│   ├── backend.go
│   ├── backup.go
│   ├── bloombits.go
│   ├── config.go
│   ├── downloader/
│   │   ├── api.go
│   │   ├── downloader.go
│   │   ├── events.go
│   │   ├── fakepeer.go
│   │   ├── metrics.go
│   │   ├── modes.go
│   │   ├── peer.go
│   │   ├── queue.go
│   │   ├── statesync.go
│   │   └── types.go
│   ├── fetcher/
│   │   ├── fetcher.go
│   │   └── metrics.go
│   ├── filters/
│   │   ├── api.go
│   │   ├── filter.go
│   │   └── filter_system.go
│   ├── gasprice/
│   │   └── gasprice.go
│   ├── gen_config.go
│   ├── handler.go
│   ├── metrics.go
│   ├── peer.go
│   ├── protocol.go
│   ├── sync.go
│   └── tracers/
│       ├── internal/
│       │   └── tracers/
│       │       ├── 4byte_tracer.js
│       │       ├── assets.go
│       │       ├── bigram_tracer.js
│       │       ├── call_tracer.js
│       │       ├── evmdis_tracer.js
│       │       ├── noop_tracer.js
│       │       ├── opcount_tracer.js
│       │       ├── prestate_tracer.js
│       │       ├── tracers.go
│       │       ├── trigram_tracer.js
│       │       └── unigram_tracer.js
│       ├── testdata/
│       │   ├── call_tracer_create.json
│       │   ├── call_tracer_deep_calls.json
│       │   ├── call_tracer_delegatecall.json
│       │   ├── call_tracer_inner_create_oog_outer_throw.json
│       │   ├── call_tracer_inner_throw_outer_revert.json
│       │   ├── call_tracer_oog.json
│       │   ├── call_tracer_revert.json
│       │   ├── call_tracer_simple.json
│       │   └── call_tracer_throw.json
│       ├── tracer.go
│       └── tracers.go
├── seroclient/
│   └── seroclient.go
├── serodb/
│   ├── .gitignore
│   ├── database.go
│   ├── interface.go
│   └── memory_database.go
├── serostats/
│   └── serostats.go
├── tests/
│   ├── abigen/
│   │   ├── testAbi.go
│   │   └── testAbi.sol
│   ├── abigen_test.go
│   ├── block_test.go
│   ├── block_test_util.go
│   ├── difficulty_test.go
│   ├── difficulty_test_util.go
│   ├── gen_btheader.go
│   ├── gen_difficultytest.go
│   ├── gen_stenv.go
│   ├── gen_sttransaction.go
│   ├── gen_tttransaction.go
│   ├── gen_vmexec.go
│   ├── init.go
│   ├── init_test.go
│   ├── rlp_test.go
│   ├── rlp_test_util.go
│   ├── state_test.go
│   ├── state_test_util.go
│   ├── transaction_test_util.go
│   ├── vm_test.go
│   └── vm_test_util.go
├── trie/
│   ├── database.go
│   ├── encoding.go
│   ├── errors.go
│   ├── hasher.go
│   ├── iterator.go
│   ├── node.go
│   ├── proof.go
│   ├── secure_trie.go
│   ├── sync.go
│   └── trie.go
├── vendor/
│   ├── bazil.org/
│   │   └── fuse/
│   │       ├── LICENSE
│   │       ├── README.md
│   │       ├── buffer.go
│   │       ├── debug.go
│   │       ├── error_darwin.go
│   │       ├── error_freebsd.go
│   │       ├── error_linux.go
│   │       ├── error_std.go
│   │       ├── fs/
│   │       │   ├── serve.go
│   │       │   └── tree.go
│   │       ├── fuse.go
│   │       ├── fuse.iml
│   │       ├── fuse_darwin.go
│   │       ├── fuse_freebsd.go
│   │       ├── fuse_kernel.go
│   │       ├── fuse_kernel_darwin.go
│   │       ├── fuse_kernel_freebsd.go
│   │       ├── fuse_kernel_linux.go
│   │       ├── fuse_kernel_std.go
│   │       ├── fuse_linux.go
│   │       ├── fuseutil/
│   │       │   └── fuseutil.go
│   │       ├── mount.go
│   │       ├── mount_darwin.go
│   │       ├── mount_freebsd.go
│   │       ├── mount_linux.go
│   │       ├── options.go
│   │       ├── options_darwin.go
│   │       ├── options_freebsd.go
│   │       ├── options_linux.go
│   │       ├── protocol.go
│   │       ├── unmount.go
│   │       ├── unmount_linux.go
│   │       └── unmount_std.go
│   ├── github.com/
│   │   ├── Azure/
│   │   │   ├── azure-pipeline-go/
│   │   │   │   ├── LICENSE
│   │   │   │   └── pipeline/
│   │   │   │       ├── core.go
│   │   │   │       ├── defaultlog_syslog.go
│   │   │   │       ├── defaultlog_windows.go
│   │   │   │       ├── doc.go
│   │   │   │       ├── error.go
│   │   │   │       ├── progress.go
│   │   │   │       ├── request.go
│   │   │   │       ├── response.go
│   │   │   │       └── version.go
│   │   │   ├── azure-sdk-for-go/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   └── glide.yaml
│   │   │   └── azure-storage-blob-go/
│   │   │       ├── 2018-03-28/
│   │   │       │   └── azblob/
│   │   │       │       ├── access_conditions.go
│   │   │       │       ├── atomicmorph.go
│   │   │       │       ├── highlevel.go
│   │   │       │       ├── parsing_urls.go
│   │   │       │       ├── sas_service.go
│   │   │       │       ├── service_codes_blob.go
│   │   │       │       ├── url_append_blob.go
│   │   │       │       ├── url_blob.go
│   │   │       │       ├── url_block_blob.go
│   │   │       │       ├── url_container.go
│   │   │       │       ├── url_page_blob.go
│   │   │       │       ├── url_service.go
│   │   │       │       ├── version.go
│   │   │       │       ├── zc_credential_anonymous.go
│   │   │       │       ├── zc_credential_shared_key.go
│   │   │       │       ├── zc_credential_token.go
│   │   │       │       ├── zc_mmf_unix.go
│   │   │       │       ├── zc_mmf_windows.go
│   │   │       │       ├── zc_pipeline.go
│   │   │       │       ├── zc_policy_request_log.go
│   │   │       │       ├── zc_policy_retry.go
│   │   │       │       ├── zc_policy_telemetry.go
│   │   │       │       ├── zc_policy_unique_request_id.go
│   │   │       │       ├── zc_retry_reader.go
│   │   │       │       ├── zc_sas_account.go
│   │   │       │       ├── zc_sas_query_params.go
│   │   │       │       ├── zc_service_codes_common.go
│   │   │       │       ├── zc_storage_error.go
│   │   │       │       ├── zc_util_validate.go
│   │   │       │       ├── zc_uuid.go
│   │   │       │       ├── zt_doc.go
│   │   │       │       ├── zz_generated_append_blob.go
│   │   │       │       ├── zz_generated_blob.go
│   │   │       │       ├── zz_generated_block_blob.go
│   │   │       │       ├── zz_generated_client.go
│   │   │       │       ├── zz_generated_container.go
│   │   │       │       ├── zz_generated_models.go
│   │   │       │       ├── zz_generated_page_blob.go
│   │   │       │       ├── zz_generated_responder_policy.go
│   │   │       │       ├── zz_generated_response_error.go
│   │   │       │       ├── zz_generated_service.go
│   │   │       │       ├── zz_generated_validation.go
│   │   │       │       ├── zz_generated_version.go
│   │   │       │       └── zz_response_helpers.go
│   │   │       └── LICENSE
│   │   ├── StackExchange/
│   │   │   └── wmi/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── swbemservices.go
│   │   │       └── wmi.go
│   │   ├── aristanetworks/
│   │   │   └── goarista/
│   │   │       ├── .travis.yml
│   │   │       ├── AUTHORS
│   │   │       ├── COPYING
│   │   │       ├── Dockerfile
│   │   │       ├── Makefile
│   │   │       ├── README.md
│   │   │       ├── check_line_len.awk
│   │   │       ├── iptables.sh
│   │   │       ├── monotime/
│   │   │       │   ├── issue15006.s
│   │   │       │   └── nanotime.go
│   │   │       └── rpmbuild.sh
│   │   ├── btcsuite/
│   │   │   └── btcutil/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── address.go
│   │   │       ├── amount.go
│   │   │       ├── appdata.go
│   │   │       ├── base58/
│   │   │       │   ├── README.md
│   │   │       │   ├── alphabet.go
│   │   │       │   ├── base58.go
│   │   │       │   ├── base58check.go
│   │   │       │   ├── cov_report.sh
│   │   │       │   ├── doc.go
│   │   │       │   └── genalphabet.go
│   │   │       ├── bech32/
│   │   │       │   ├── README.md
│   │   │       │   ├── bech32.go
│   │   │       │   └── doc.go
│   │   │       ├── block.go
│   │   │       ├── certgen.go
│   │   │       ├── const.go
│   │   │       ├── cov_report.sh
│   │   │       ├── doc.go
│   │   │       ├── goclean.sh
│   │   │       ├── hash160.go
│   │   │       ├── net.go
│   │   │       ├── net_noop.go
│   │   │       ├── test_coverage.txt
│   │   │       ├── tx.go
│   │   │       └── wif.go
│   │   ├── cespare/
│   │   │   └── cp/
│   │   │       ├── LICENSE.txt
│   │   │       ├── README.md
│   │   │       └── cp.go
│   │   ├── codahale/
│   │   │   └── hdrhistogram/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── hdr.go
│   │   │       └── window.go
│   │   ├── davecgh/
│   │   │   └── go-spew/
│   │   │       ├── .gitignore
│   │   │       ├── .travis.yml
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── cov_report.sh
│   │   │       ├── spew/
│   │   │       │   ├── bypass.go
│   │   │       │   ├── bypasssafe.go
│   │   │       │   ├── common.go
│   │   │       │   ├── config.go
│   │   │       │   ├── doc.go
│   │   │       │   ├── dump.go
│   │   │       │   ├── format.go
│   │   │       │   └── spew.go
│   │   │       └── test_coverage.txt
│   │   ├── deckarep/
│   │   │   └── golang-set/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── iterator.go
│   │   │       ├── set.go
│   │   │       ├── threadsafe.go
│   │   │       └── threadunsafe.go
│   │   ├── dgrijalva/
│   │   │   └── jwt-go/
│   │   │       ├── LICENSE
│   │   │       ├── MIGRATION_GUIDE.md
│   │   │       ├── README.md
│   │   │       ├── VERSION_HISTORY.md
│   │   │       ├── claims.go
│   │   │       ├── doc.go
│   │   │       ├── ecdsa.go
│   │   │       ├── ecdsa_utils.go
│   │   │       ├── errors.go
│   │   │       ├── hmac.go
│   │   │       ├── map_claims.go
│   │   │       ├── none.go
│   │   │       ├── parser.go
│   │   │       ├── rsa.go
│   │   │       ├── rsa_pss.go
│   │   │       ├── rsa_utils.go
│   │   │       ├── signing_method.go
│   │   │       └── token.go
│   │   ├── docker/
│   │   │   └── docker/
│   │   │       ├── LICENSE
│   │   │       ├── NOTICE
│   │   │       └── pkg/
│   │   │           └── reexec/
│   │   │               ├── README.md
│   │   │               ├── command_linux.go
│   │   │               ├── command_unix.go
│   │   │               ├── command_unsupported.go
│   │   │               ├── command_windows.go
│   │   │               └── reexec.go
│   │   ├── edsrzf/
│   │   │   └── mmap-go/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── mmap.go
│   │   │       ├── mmap_unix.go
│   │   │       ├── mmap_windows.go
│   │   │       ├── msync_netbsd.go
│   │   │       └── msync_unix.go
│   │   ├── elastic/
│   │   │   └── gosigar/
│   │   │       ├── CHANGELOG.md
│   │   │       ├── LICENSE
│   │   │       ├── NOTICE
│   │   │       ├── README.md
│   │   │       ├── Vagrantfile
│   │   │       ├── codecov.yml
│   │   │       ├── concrete_sigar.go
│   │   │       ├── sigar_darwin.go
│   │   │       ├── sigar_format.go
│   │   │       ├── sigar_freebsd.go
│   │   │       ├── sigar_interface.go
│   │   │       ├── sigar_linux.go
│   │   │       ├── sigar_linux_common.go
│   │   │       ├── sigar_openbsd.go
│   │   │       ├── sigar_stub.go
│   │   │       ├── sigar_unix.go
│   │   │       ├── sigar_util.go
│   │   │       ├── sigar_windows.go
│   │   │       └── sys/
│   │   │           └── windows/
│   │   │               ├── doc.go
│   │   │               ├── ntquery.go
│   │   │               ├── privileges.go
│   │   │               ├── syscall_windows.go
│   │   │               ├── version.go
│   │   │               └── zsyscall_windows.go
│   │   ├── fatih/
│   │   │   └── color/
│   │   │       ├── LICENSE.md
│   │   │       ├── README.md
│   │   │       ├── color.go
│   │   │       └── doc.go
│   │   ├── fjl/
│   │   │   └── memsize/
│   │   │       ├── LICENSE
│   │   │       ├── bitmap.go
│   │   │       ├── doc.go
│   │   │       ├── memsize.go
│   │   │       ├── memsizeui/
│   │   │       │   ├── template.go
│   │   │       │   └── ui.go
│   │   │       ├── runtimefunc.go
│   │   │       ├── runtimefunc.s
│   │   │       └── type.go
│   │   ├── gizak/
│   │   │   └── termui/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── barchart.go
│   │   │       ├── block.go
│   │   │       ├── block_common.go
│   │   │       ├── block_windows.go
│   │   │       ├── buffer.go
│   │   │       ├── canvas.go
│   │   │       ├── config.py
│   │   │       ├── doc.go
│   │   │       ├── events.go
│   │   │       ├── gauge.go
│   │   │       ├── glide.yaml
│   │   │       ├── grid.go
│   │   │       ├── helper.go
│   │   │       ├── linechart.go
│   │   │       ├── linechart_others.go
│   │   │       ├── linechart_windows.go
│   │   │       ├── list.go
│   │   │       ├── mbarchart.go
│   │   │       ├── mkdocs.yml
│   │   │       ├── par.go
│   │   │       ├── pos.go
│   │   │       ├── render.go
│   │   │       ├── sparkline.go
│   │   │       ├── table.go
│   │   │       ├── textbuilder.go
│   │   │       ├── theme.go
│   │   │       └── widget.go
│   │   ├── go-ole/
│   │   │   └── go-ole/
│   │   │       ├── ChangeLog.md
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── appveyor.yml
│   │   │       ├── com.go
│   │   │       ├── com_func.go
│   │   │       ├── connect.go
│   │   │       ├── constants.go
│   │   │       ├── error.go
│   │   │       ├── error_func.go
│   │   │       ├── error_windows.go
│   │   │       ├── guid.go
│   │   │       ├── iconnectionpoint.go
│   │   │       ├── iconnectionpoint_func.go
│   │   │       ├── iconnectionpoint_windows.go
│   │   │       ├── iconnectionpointcontainer.go
│   │   │       ├── iconnectionpointcontainer_func.go
│   │   │       ├── iconnectionpointcontainer_windows.go
│   │   │       ├── idispatch.go
│   │   │       ├── idispatch_func.go
│   │   │       ├── idispatch_windows.go
│   │   │       ├── ienumvariant.go
│   │   │       ├── ienumvariant_func.go
│   │   │       ├── ienumvariant_windows.go
│   │   │       ├── iinspectable.go
│   │   │       ├── iinspectable_func.go
│   │   │       ├── iinspectable_windows.go
│   │   │       ├── iprovideclassinfo.go
│   │   │       ├── iprovideclassinfo_func.go
│   │   │       ├── iprovideclassinfo_windows.go
│   │   │       ├── itypeinfo.go
│   │   │       ├── itypeinfo_func.go
│   │   │       ├── itypeinfo_windows.go
│   │   │       ├── iunknown.go
│   │   │       ├── iunknown_func.go
│   │   │       ├── iunknown_windows.go
│   │   │       ├── ole.go
│   │   │       ├── oleutil/
│   │   │       │   ├── connection.go
│   │   │       │   ├── connection_func.go
│   │   │       │   ├── connection_windows.go
│   │   │       │   ├── go-get.go
│   │   │       │   └── oleutil.go
│   │   │       ├── safearray.go
│   │   │       ├── safearray_func.go
│   │   │       ├── safearray_windows.go
│   │   │       ├── safearrayconversion.go
│   │   │       ├── safearrayslices.go
│   │   │       ├── utility.go
│   │   │       ├── variables.go
│   │   │       ├── variant.go
│   │   │       ├── variant_386.go
│   │   │       ├── variant_amd64.go
│   │   │       ├── variant_s390x.go
│   │   │       ├── vt_string.go
│   │   │       ├── winrt.go
│   │   │       └── winrt_doc.go
│   │   ├── go-stack/
│   │   │   └── stack/
│   │   │       ├── LICENSE.md
│   │   │       ├── README.md
│   │   │       └── stack.go
│   │   ├── golang/
│   │   │   ├── protobuf/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── proto/
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── clone.go
│   │   │   │   │   ├── decode.go
│   │   │   │   │   ├── encode.go
│   │   │   │   │   ├── equal.go
│   │   │   │   │   ├── extensions.go
│   │   │   │   │   ├── lib.go
│   │   │   │   │   ├── message_set.go
│   │   │   │   │   ├── pointer_reflect.go
│   │   │   │   │   ├── pointer_unsafe.go
│   │   │   │   │   ├── properties.go
│   │   │   │   │   ├── text.go
│   │   │   │   │   └── text_parser.go
│   │   │   │   └── protoc-gen-go/
│   │   │   │       └── descriptor/
│   │   │   │           ├── Makefile
│   │   │   │           └── descriptor.pb.go
│   │   │   └── snappy/
│   │   │       ├── AUTHORS
│   │   │       ├── CONTRIBUTORS
│   │   │       ├── LICENSE
│   │   │       ├── README
│   │   │       ├── decode.go
│   │   │       ├── decode_amd64.go
│   │   │       ├── decode_amd64.s
│   │   │       ├── decode_other.go
│   │   │       ├── encode.go
│   │   │       ├── encode_amd64.go
│   │   │       ├── encode_amd64.s
│   │   │       ├── encode_other.go
│   │   │       └── snappy.go
│   │   ├── gosuri/
│   │   │   ├── uilive/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── doc.go
│   │   │   │   ├── writer.go
│   │   │   │   ├── writer_posix.go
│   │   │   │   └── writer_windows.go
│   │   │   └── uiprogress/
│   │   │       ├── LICENSE
│   │   │       ├── Makefile
│   │   │       ├── README.md
│   │   │       ├── bar.go
│   │   │       ├── doc.go
│   │   │       ├── progress.go
│   │   │       └── util/
│   │   │           └── strutil/
│   │   │               └── strutil.go
│   │   ├── hashicorp/
│   │   │   └── golang-lru/
│   │   │       ├── 2q.go
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── arc.go
│   │   │       ├── lru.go
│   │   │       └── simplelru/
│   │   │           └── lru.go
│   │   ├── huin/
│   │   │   └── goupnp/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── dcps/
│   │   │       │   ├── internetgateway1/
│   │   │       │   │   └── internetgateway1.go
│   │   │       │   └── internetgateway2/
│   │   │       │       └── internetgateway2.go
│   │   │       ├── device.go
│   │   │       ├── goupnp.go
│   │   │       ├── httpu/
│   │   │       │   ├── httpu.go
│   │   │       │   └── serve.go
│   │   │       ├── scpd/
│   │   │       │   └── scpd.go
│   │   │       ├── service_client.go
│   │   │       ├── soap/
│   │   │       │   ├── soap.go
│   │   │       │   └── types.go
│   │   │       └── ssdp/
│   │   │           ├── registry.go
│   │   │           └── ssdp.go
│   │   ├── influxdata/
│   │   │   └── influxdb/
│   │   │       ├── LICENSE
│   │   │       ├── LICENSE_OF_DEPENDENCIES.md
│   │   │       ├── client/
│   │   │       │   ├── README.md
│   │   │       │   ├── influxdb.go
│   │   │       │   └── v2/
│   │   │       │       ├── client.go
│   │   │       │       └── udp.go
│   │   │       ├── models/
│   │   │       │   ├── consistency.go
│   │   │       │   ├── inline_fnv.go
│   │   │       │   ├── inline_strconv_parse.go
│   │   │       │   ├── points.go
│   │   │       │   ├── rows.go
│   │   │       │   ├── statistic.go
│   │   │       │   ├── time.go
│   │   │       │   └── uint_support.go
│   │   │       └── pkg/
│   │   │           └── escape/
│   │   │               ├── bytes.go
│   │   │               └── strings.go
│   │   ├── jackpal/
│   │   │   └── go-nat-pmp/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── natpmp.go
│   │   │       ├── network.go
│   │   │       └── recorder.go
│   │   ├── julienschmidt/
│   │   │   └── httprouter/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── path.go
│   │   │       ├── router.go
│   │   │       └── tree.go
│   │   ├── karalabe/
│   │   │   └── hid/
│   │   │       ├── LICENSE.md
│   │   │       ├── README.md
│   │   │       ├── appveyor.yml
│   │   │       ├── hid.go
│   │   │       ├── hid_disabled.go
│   │   │       ├── hid_enabled.go
│   │   │       ├── hidapi/
│   │   │       │   ├── AUTHORS.txt
│   │   │       │   ├── LICENSE-bsd.txt
│   │   │       │   ├── LICENSE-gpl3.txt
│   │   │       │   ├── LICENSE-orig.txt
│   │   │       │   ├── LICENSE.txt
│   │   │       │   ├── README.txt
│   │   │       │   ├── hidapi/
│   │   │       │   │   └── hidapi.h
│   │   │       │   ├── libusb/
│   │   │       │   │   └── hid.c
│   │   │       │   ├── mac/
│   │   │       │   │   └── hid.c
│   │   │       │   └── windows/
│   │   │       │       └── hid.c
│   │   │       ├── libusb/
│   │   │       │   ├── AUTHORS
│   │   │       │   ├── COPYING
│   │   │       │   └── libusb/
│   │   │       │       ├── config.h
│   │   │       │       ├── core.c
│   │   │       │       ├── descriptor.c
│   │   │       │       ├── hotplug.c
│   │   │       │       ├── hotplug.h
│   │   │       │       ├── io.c
│   │   │       │       ├── libusb.h
│   │   │       │       ├── libusbi.h
│   │   │       │       ├── os/
│   │   │       │       │   ├── darwin_usb.c
│   │   │       │       │   ├── darwin_usb.h
│   │   │       │       │   ├── haiku_pollfs.cpp
│   │   │       │       │   ├── haiku_usb.h
│   │   │       │       │   ├── haiku_usb_backend.cpp
│   │   │       │       │   ├── haiku_usb_raw.cpp
│   │   │       │       │   ├── haiku_usb_raw.h
│   │   │       │       │   ├── linux_netlink.c
│   │   │       │       │   ├── linux_udev.c
│   │   │       │       │   ├── linux_usbfs.c
│   │   │       │       │   ├── linux_usbfs.h
│   │   │       │       │   ├── netbsd_usb.c
│   │   │       │       │   ├── openbsd_usb.c
│   │   │       │       │   ├── poll_posix.c
│   │   │       │       │   ├── poll_posix.h
│   │   │       │       │   ├── poll_windows.c
│   │   │       │       │   ├── poll_windows.h
│   │   │       │       │   ├── sunos_usb.c
│   │   │       │       │   ├── sunos_usb.h
│   │   │       │       │   ├── threads_posix.c
│   │   │       │       │   ├── threads_posix.h
│   │   │       │       │   ├── threads_windows.c
│   │   │       │       │   ├── threads_windows.h
│   │   │       │       │   ├── wince_usb.c
│   │   │       │       │   ├── wince_usb.h
│   │   │       │       │   ├── windows_common.h
│   │   │       │       │   ├── windows_nt_common.c
│   │   │       │       │   ├── windows_nt_common.h
│   │   │       │       │   ├── windows_usbdk.c
│   │   │       │       │   ├── windows_usbdk.h
│   │   │       │       │   ├── windows_winusb.c
│   │   │       │       │   └── windows_winusb.h
│   │   │       │       ├── strerror.c
│   │   │       │       ├── sync.c
│   │   │       │       ├── version.h
│   │   │       │       └── version_nano.h
│   │   │       └── wchar.go
│   │   ├── maruel/
│   │   │   └── panicparse/
│   │   │       ├── .travis.yml
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── stack/
│   │   │       │   ├── source.go
│   │   │       │   ├── stack.go
│   │   │       │   └── ui.go
│   │   │       └── vendor.yml
│   │   ├── mattn/
│   │   │   ├── go-colorable/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── colorable_others.go
│   │   │   │   ├── colorable_windows.go
│   │   │   │   └── noncolorable.go
│   │   │   ├── go-isatty/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── doc.go
│   │   │   │   ├── isatty_appengine.go
│   │   │   │   ├── isatty_bsd.go
│   │   │   │   ├── isatty_linux.go
│   │   │   │   ├── isatty_not_windows.go
│   │   │   │   ├── isatty_solaris.go
│   │   │   │   └── isatty_windows.go
│   │   │   └── go-runewidth/
│   │   │       ├── LICENSE
│   │   │       ├── README.mkd
│   │   │       ├── runewidth.go
│   │   │       ├── runewidth_js.go
│   │   │       ├── runewidth_posix.go
│   │   │       └── runewidth_windows.go
│   │   ├── mitchellh/
│   │   │   └── go-wordwrap/
│   │   │       ├── LICENSE.md
│   │   │       ├── README.md
│   │   │       └── wordwrap.go
│   │   ├── mohae/
│   │   │   └── deepcopy/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       └── deepcopy.go
│   │   ├── naoina/
│   │   │   ├── go-stringutil/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── da.go
│   │   │   │   └── strings.go
│   │   │   └── toml/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── ast/
│   │   │       │   └── ast.go
│   │   │       ├── config.go
│   │   │       ├── decode.go
│   │   │       ├── encode.go
│   │   │       ├── error.go
│   │   │       ├── parse.go
│   │   │       ├── parse.peg
│   │   │       ├── parse.peg.go
│   │   │       └── util.go
│   │   ├── nsf/
│   │   │   └── termbox-go/
│   │   │       ├── AUTHORS
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── api.go
│   │   │       ├── api_common.go
│   │   │       ├── api_windows.go
│   │   │       ├── collect_terminfo.py
│   │   │       ├── syscalls.go
│   │   │       ├── syscalls_darwin.go
│   │   │       ├── syscalls_darwin_amd64.go
│   │   │       ├── syscalls_dragonfly.go
│   │   │       ├── syscalls_freebsd.go
│   │   │       ├── syscalls_linux.go
│   │   │       ├── syscalls_netbsd.go
│   │   │       ├── syscalls_openbsd.go
│   │   │       ├── syscalls_windows.go
│   │   │       ├── termbox.go
│   │   │       ├── termbox_common.go
│   │   │       ├── termbox_windows.go
│   │   │       ├── terminfo.go
│   │   │       └── terminfo_builtin.go
│   │   ├── olekukonko/
│   │   │   └── tablewriter/
│   │   │       ├── LICENCE.md
│   │   │       ├── README.md
│   │   │       ├── csv.go
│   │   │       ├── table.go
│   │   │       ├── test.csv
│   │   │       ├── test_info.csv
│   │   │       ├── util.go
│   │   │       └── wrap.go
│   │   ├── opentracing/
│   │   │   └── opentracing-go/
│   │   │       ├── CHANGELOG.md
│   │   │       ├── LICENSE
│   │   │       ├── Makefile
│   │   │       ├── README.md
│   │   │       ├── ext/
│   │   │       │   └── tags.go
│   │   │       ├── globaltracer.go
│   │   │       ├── gocontext.go
│   │   │       ├── log/
│   │   │       │   ├── field.go
│   │   │       │   └── util.go
│   │   │       ├── noop.go
│   │   │       ├── propagation.go
│   │   │       ├── span.go
│   │   │       └── tracer.go
│   │   ├── pborman/
│   │   │   └── uuid/
│   │   │       ├── CONTRIBUTING.md
│   │   │       ├── CONTRIBUTORS
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── dce.go
│   │   │       ├── doc.go
│   │   │       ├── hash.go
│   │   │       ├── marshal.go
│   │   │       ├── node.go
│   │   │       ├── sql.go
│   │   │       ├── time.go
│   │   │       ├── util.go
│   │   │       ├── uuid.go
│   │   │       ├── version1.go
│   │   │       └── version4.go
│   │   ├── peterh/
│   │   │   └── liner/
│   │   │       ├── COPYING
│   │   │       ├── README.md
│   │   │       ├── bsdinput.go
│   │   │       ├── common.go
│   │   │       ├── fallbackinput.go
│   │   │       ├── input.go
│   │   │       ├── input_darwin.go
│   │   │       ├── input_linux.go
│   │   │       ├── input_windows.go
│   │   │       ├── line.go
│   │   │       ├── output.go
│   │   │       ├── output_windows.go
│   │   │       ├── unixmode.go
│   │   │       └── width.go
│   │   ├── pkg/
│   │   │   └── errors/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── appveyor.yml
│   │   │       ├── errors.go
│   │   │       └── stack.go
│   │   ├── pmezard/
│   │   │   └── go-difflib/
│   │   │       ├── LICENSE
│   │   │       └── difflib/
│   │   │           └── difflib.go
│   │   ├── prometheus/
│   │   │   └── prometheus/
│   │   │       ├── LICENSE
│   │   │       ├── NOTICE
│   │   │       └── util/
│   │   │           └── flock/
│   │   │               ├── flock.go
│   │   │               ├── flock_plan9.go
│   │   │               ├── flock_solaris.go
│   │   │               ├── flock_unix.go
│   │   │               └── flock_windows.go
│   │   ├── rjeczalik/
│   │   │   └── notify/
│   │   │       ├── AUTHORS
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── appveyor.yml
│   │   │       ├── debug.go
│   │   │       ├── debug_debug.go
│   │   │       ├── debug_nodebug.go
│   │   │       ├── doc.go
│   │   │       ├── event.go
│   │   │       ├── event_fen.go
│   │   │       ├── event_fsevents.go
│   │   │       ├── event_inotify.go
│   │   │       ├── event_kqueue.go
│   │   │       ├── event_readdcw.go
│   │   │       ├── event_stub.go
│   │   │       ├── event_trigger.go
│   │   │       ├── node.go
│   │   │       ├── notify.go
│   │   │       ├── tree.go
│   │   │       ├── tree_nonrecursive.go
│   │   │       ├── tree_recursive.go
│   │   │       ├── util.go
│   │   │       ├── watcher.go
│   │   │       ├── watcher_fen.go
│   │   │       ├── watcher_fen_cgo.go
│   │   │       ├── watcher_fsevents.go
│   │   │       ├── watcher_fsevents_cgo.go
│   │   │       ├── watcher_inotify.go
│   │   │       ├── watcher_kqueue.go
│   │   │       ├── watcher_notimplemented.go
│   │   │       ├── watcher_readdcw.go
│   │   │       ├── watcher_stub.go
│   │   │       ├── watcher_trigger.go
│   │   │       ├── watchpoint.go
│   │   │       ├── watchpoint_other.go
│   │   │       └── watchpoint_readdcw.go
│   │   ├── robertkrimen/
│   │   │   └── otto/
│   │   │       ├── DESIGN.markdown
│   │   │       ├── LICENSE
│   │   │       ├── Makefile
│   │   │       ├── README.markdown
│   │   │       ├── ast/
│   │   │       │   ├── README.markdown
│   │   │       │   ├── comments.go
│   │   │       │   └── node.go
│   │   │       ├── builtin.go
│   │   │       ├── builtin_array.go
│   │   │       ├── builtin_boolean.go
│   │   │       ├── builtin_date.go
│   │   │       ├── builtin_error.go
│   │   │       ├── builtin_function.go
│   │   │       ├── builtin_json.go
│   │   │       ├── builtin_math.go
│   │   │       ├── builtin_number.go
│   │   │       ├── builtin_object.go
│   │   │       ├── builtin_regexp.go
│   │   │       ├── builtin_string.go
│   │   │       ├── clone.go
│   │   │       ├── cmpl.go
│   │   │       ├── cmpl_evaluate.go
│   │   │       ├── cmpl_evaluate_expression.go
│   │   │       ├── cmpl_evaluate_statement.go
│   │   │       ├── cmpl_parse.go
│   │   │       ├── console.go
│   │   │       ├── dbg/
│   │   │       │   └── dbg.go
│   │   │       ├── dbg.go
│   │   │       ├── error.go
│   │   │       ├── evaluate.go
│   │   │       ├── file/
│   │   │       │   ├── README.markdown
│   │   │       │   └── file.go
│   │   │       ├── global.go
│   │   │       ├── inline.go
│   │   │       ├── inline.pl
│   │   │       ├── object.go
│   │   │       ├── object_class.go
│   │   │       ├── otto.go
│   │   │       ├── otto_.go
│   │   │       ├── parser/
│   │   │       │   ├── Makefile
│   │   │       │   ├── README.markdown
│   │   │       │   ├── dbg.go
│   │   │       │   ├── error.go
│   │   │       │   ├── expression.go
│   │   │       │   ├── lexer.go
│   │   │       │   ├── parser.go
│   │   │       │   ├── regexp.go
│   │   │       │   ├── scope.go
│   │   │       │   └── statement.go
│   │   │       ├── property.go
│   │   │       ├── registry/
│   │   │       │   ├── README.markdown
│   │   │       │   └── registry.go
│   │   │       ├── result.go
│   │   │       ├── runtime.go
│   │   │       ├── scope.go
│   │   │       ├── script.go
│   │   │       ├── stash.go
│   │   │       ├── token/
│   │   │       │   ├── Makefile
│   │   │       │   ├── README.markdown
│   │   │       │   ├── token.go
│   │   │       │   ├── token_const.go
│   │   │       │   └── tokenfmt
│   │   │       ├── type_arguments.go
│   │   │       ├── type_array.go
│   │   │       ├── type_boolean.go
│   │   │       ├── type_date.go
│   │   │       ├── type_error.go
│   │   │       ├── type_function.go
│   │   │       ├── type_go_array.go
│   │   │       ├── type_go_map.go
│   │   │       ├── type_go_slice.go
│   │   │       ├── type_go_struct.go
│   │   │       ├── type_number.go
│   │   │       ├── type_reference.go
│   │   │       ├── type_regexp.go
│   │   │       ├── type_string.go
│   │   │       ├── value.go
│   │   │       ├── value_boolean.go
│   │   │       ├── value_number.go
│   │   │       ├── value_primitive.go
│   │   │       └── value_string.go
│   │   ├── robfig/
│   │   │   └── cron/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── constantdelay.go
│   │   │       ├── cron.go
│   │   │       ├── doc.go
│   │   │       ├── parser.go
│   │   │       └── spec.go
│   │   ├── rs/
│   │   │   ├── cors/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── cors.go
│   │   │   │   └── utils.go
│   │   │   └── xhandler/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── chain.go
│   │   │       ├── middleware.go
│   │   │       └── xhandler.go
│   │   ├── stretchr/
│   │   │   └── testify/
│   │   │       ├── LICENSE
│   │   │       ├── assert/
│   │   │       │   ├── assertion_format.go
│   │   │       │   ├── assertion_format.go.tmpl
│   │   │       │   ├── assertion_forward.go
│   │   │       │   ├── assertion_forward.go.tmpl
│   │   │       │   ├── assertions.go
│   │   │       │   ├── doc.go
│   │   │       │   ├── errors.go
│   │   │       │   ├── forward_assertions.go
│   │   │       │   └── http_assertions.go
│   │   │       └── require/
│   │   │           ├── doc.go
│   │   │           ├── forward_requirements.go
│   │   │           ├── require.go
│   │   │           ├── require.go.tmpl
│   │   │           ├── require_forward.go
│   │   │           ├── require_forward.go.tmpl
│   │   │           └── requirements.go
│   │   ├── syndtr/
│   │   │   └── goleveldb/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       └── leveldb/
│   │   │           ├── batch.go
│   │   │           ├── cache/
│   │   │           │   ├── cache.go
│   │   │           │   └── lru.go
│   │   │           ├── comparer/
│   │   │           │   ├── bytes_comparer.go
│   │   │           │   └── comparer.go
│   │   │           ├── comparer.go
│   │   │           ├── db.go
│   │   │           ├── db_compaction.go
│   │   │           ├── db_iter.go
│   │   │           ├── db_snapshot.go
│   │   │           ├── db_state.go
│   │   │           ├── db_transaction.go
│   │   │           ├── db_util.go
│   │   │           ├── db_write.go
│   │   │           ├── doc.go
│   │   │           ├── errors/
│   │   │           │   └── errors.go
│   │   │           ├── errors.go
│   │   │           ├── filter/
│   │   │           │   ├── bloom.go
│   │   │           │   └── filter.go
│   │   │           ├── filter.go
│   │   │           ├── iterator/
│   │   │           │   ├── array_iter.go
│   │   │           │   ├── indexed_iter.go
│   │   │           │   ├── iter.go
│   │   │           │   └── merged_iter.go
│   │   │           ├── journal/
│   │   │           │   └── journal.go
│   │   │           ├── key.go
│   │   │           ├── memdb/
│   │   │           │   └── memdb.go
│   │   │           ├── opt/
│   │   │           │   └── options.go
│   │   │           ├── options.go
│   │   │           ├── session.go
│   │   │           ├── session_compaction.go
│   │   │           ├── session_record.go
│   │   │           ├── session_util.go
│   │   │           ├── storage/
│   │   │           │   ├── file_storage.go
│   │   │           │   ├── file_storage_nacl.go
│   │   │           │   ├── file_storage_plan9.go
│   │   │           │   ├── file_storage_solaris.go
│   │   │           │   ├── file_storage_unix.go
│   │   │           │   ├── file_storage_windows.go
│   │   │           │   ├── mem_storage.go
│   │   │           │   └── storage.go
│   │   │           ├── storage.go
│   │   │           ├── table/
│   │   │           │   ├── reader.go
│   │   │           │   ├── table.go
│   │   │           │   └── writer.go
│   │   │           ├── table.go
│   │   │           ├── util/
│   │   │           │   ├── buffer.go
│   │   │           │   ├── buffer_pool.go
│   │   │           │   ├── crc32.go
│   │   │           │   ├── hash.go
│   │   │           │   ├── range.go
│   │   │           │   └── util.go
│   │   │           ├── util.go
│   │   │           └── version.go
│   │   ├── tyler-smith/
│   │   │   └── go-bip39/
│   │   │       ├── Gopkg.toml
│   │   │       ├── LICENSE
│   │   │       ├── Makefile
│   │   │       ├── README.md
│   │   │       ├── bip39.go
│   │   │       └── wordlists/
│   │   │           ├── chinese_simplified.go
│   │   │           ├── chinese_traditional.go
│   │   │           ├── english.go
│   │   │           ├── french.go
│   │   │           ├── italian.go
│   │   │           ├── japanese.go
│   │   │           ├── korean.go
│   │   │           └── spanish.go
│   │   └── uber/
│   │       ├── jaeger-client-go/
│   │       │   ├── CHANGELOG.md
│   │       │   ├── CONTRIBUTING.md
│   │       │   ├── DCO
│   │       │   ├── Gopkg.toml
│   │       │   ├── LICENSE
│   │       │   ├── Makefile
│   │       │   ├── README.md
│   │       │   ├── RELEASE.md
│   │       │   ├── baggage_setter.go
│   │       │   ├── config/
│   │       │   │   ├── config.go
│   │       │   │   ├── config_env.go
│   │       │   │   └── options.go
│   │       │   ├── constants.go
│   │       │   ├── context.go
│   │       │   ├── contrib_observer.go
│   │       │   ├── doc.go
│   │       │   ├── glide.yaml
│   │       │   ├── header.go
│   │       │   ├── internal/
│   │       │   │   ├── baggage/
│   │       │   │   │   ├── remote/
│   │       │   │   │   │   ├── options.go
│   │       │   │   │   │   └── restriction_manager.go
│   │       │   │   │   └── restriction_manager.go
│   │       │   │   ├── spanlog/
│   │       │   │   │   └── json.go
│   │       │   │   └── throttler/
│   │       │   │       ├── remote/
│   │       │   │       │   ├── options.go
│   │       │   │       │   └── throttler.go
│   │       │   │       └── throttler.go
│   │       │   ├── interop.go
│   │       │   ├── jaeger_tag.go
│   │       │   ├── jaeger_thrift_span.go
│   │       │   ├── log/
│   │       │   │   └── logger.go
│   │       │   ├── logger.go
│   │       │   ├── metrics.go
│   │       │   ├── observer.go
│   │       │   ├── process.go
│   │       │   ├── propagation.go
│   │       │   ├── reference.go
│   │       │   ├── reporter.go
│   │       │   ├── reporter_options.go
│   │       │   ├── rpcmetrics/
│   │       │   │   ├── README.md
│   │       │   │   ├── doc.go
│   │       │   │   ├── endpoints.go
│   │       │   │   ├── metrics.go
│   │       │   │   ├── normalizer.go
│   │       │   │   └── observer.go
│   │       │   ├── sampler.go
│   │       │   ├── sampler_options.go
│   │       │   ├── span.go
│   │       │   ├── thrift/
│   │       │   │   ├── README.md
│   │       │   │   ├── application_exception.go
│   │       │   │   ├── binary_protocol.go
│   │       │   │   ├── compact_protocol.go
│   │       │   │   ├── exception.go
│   │       │   │   ├── memory_buffer.go
│   │       │   │   ├── messagetype.go
│   │       │   │   ├── numeric.go
│   │       │   │   ├── processor.go
│   │       │   │   ├── protocol.go
│   │       │   │   ├── protocol_exception.go
│   │       │   │   ├── protocol_factory.go
│   │       │   │   ├── rich_transport.go
│   │       │   │   ├── serializer.go
│   │       │   │   ├── simple_json_protocol.go
│   │       │   │   ├── transport.go
│   │       │   │   ├── transport_exception.go
│   │       │   │   ├── transport_factory.go
│   │       │   │   └── type.go
│   │       │   ├── thrift-gen/
│   │       │   │   ├── agent/
│   │       │   │   │   ├── agent.go
│   │       │   │   │   ├── constants.go
│   │       │   │   │   └── ttypes.go
│   │       │   │   ├── baggage/
│   │       │   │   │   ├── baggagerestrictionmanager.go
│   │       │   │   │   ├── constants.go
│   │       │   │   │   └── ttypes.go
│   │       │   │   ├── jaeger/
│   │       │   │   │   ├── agent.go
│   │       │   │   │   ├── constants.go
│   │       │   │   │   └── ttypes.go
│   │       │   │   ├── sampling/
│   │       │   │   │   ├── constants.go
│   │       │   │   │   ├── samplingmanager.go
│   │       │   │   │   └── ttypes.go
│   │       │   │   └── zipkincore/
│   │       │   │       ├── constants.go
│   │       │   │       ├── ttypes.go
│   │       │   │       └── zipkincollector.go
│   │       │   ├── tracer.go
│   │       │   ├── tracer_options.go
│   │       │   ├── transport.go
│   │       │   ├── transport_udp.go
│   │       │   ├── utils/
│   │       │   │   ├── http_json.go
│   │       │   │   ├── localip.go
│   │       │   │   ├── rand.go
│   │       │   │   ├── rate_limiter.go
│   │       │   │   ├── udp_client.go
│   │       │   │   └── utils.go
│   │       │   ├── zipkin.go
│   │       │   └── zipkin_thrift_span.go
│   │       └── jaeger-lib/
│   │           ├── LICENSE
│   │           └── metrics/
│   │               ├── counter.go
│   │               ├── factory.go
│   │               ├── gauge.go
│   │               ├── local.go
│   │               ├── metrics.go
│   │               ├── stopwatch.go
│   │               └── timer.go
│   ├── golang.org/
│   │   └── x/
│   │       ├── crypto/
│   │       │   ├── .gitattributes
│   │       │   ├── .gitignore
│   │       │   ├── AUTHORS
│   │       │   ├── CONTRIBUTING.md
│   │       │   ├── CONTRIBUTORS
│   │       │   ├── LICENSE
│   │       │   ├── PATENTS
│   │       │   ├── README
│   │       │   ├── cast5/
│   │       │   │   └── cast5.go
│   │       │   ├── codereview.cfg
│   │       │   ├── curve25519/
│   │       │   │   ├── const_amd64.h
│   │       │   │   ├── const_amd64.s
│   │       │   │   ├── cswap_amd64.s
│   │       │   │   ├── curve25519.go
│   │       │   │   ├── doc.go
│   │       │   │   ├── freeze_amd64.s
│   │       │   │   ├── ladderstep_amd64.s
│   │       │   │   ├── mont25519_amd64.go
│   │       │   │   ├── mul_amd64.s
│   │       │   │   └── square_amd64.s
│   │       │   ├── ed25519/
│   │       │   │   ├── ed25519.go
│   │       │   │   └── internal/
│   │       │   │       └── edwards25519/
│   │       │   │           ├── const.go
│   │       │   │           └── edwards25519.go
│   │       │   ├── openpgp/
│   │       │   │   ├── armor/
│   │       │   │   │   ├── armor.go
│   │       │   │   │   └── encode.go
│   │       │   │   ├── canonical_text.go
│   │       │   │   ├── elgamal/
│   │       │   │   │   └── elgamal.go
│   │       │   │   ├── errors/
│   │       │   │   │   └── errors.go
│   │       │   │   ├── keys.go
│   │       │   │   ├── packet/
│   │       │   │   │   ├── compressed.go
│   │       │   │   │   ├── config.go
│   │       │   │   │   ├── encrypted_key.go
│   │       │   │   │   ├── literal.go
│   │       │   │   │   ├── ocfb.go
│   │       │   │   │   ├── one_pass_signature.go
│   │       │   │   │   ├── opaque.go
│   │       │   │   │   ├── packet.go
│   │       │   │   │   ├── private_key.go
│   │       │   │   │   ├── public_key.go
│   │       │   │   │   ├── public_key_v3.go
│   │       │   │   │   ├── reader.go
│   │       │   │   │   ├── signature.go
│   │       │   │   │   ├── signature_v3.go
│   │       │   │   │   ├── symmetric_key_encrypted.go
│   │       │   │   │   ├── symmetrically_encrypted.go
│   │       │   │   │   ├── userattribute.go
│   │       │   │   │   └── userid.go
│   │       │   │   ├── read.go
│   │       │   │   ├── s2k/
│   │       │   │   │   └── s2k.go
│   │       │   │   └── write.go
│   │       │   ├── pbkdf2/
│   │       │   │   └── pbkdf2.go
│   │       │   ├── ripemd160/
│   │       │   │   ├── ripemd160.go
│   │       │   │   └── ripemd160block.go
│   │       │   ├── scrypt/
│   │       │   │   └── scrypt.go
│   │       │   └── ssh/
│   │       │       ├── buffer.go
│   │       │       ├── certs.go
│   │       │       ├── channel.go
│   │       │       ├── cipher.go
│   │       │       ├── client.go
│   │       │       ├── client_auth.go
│   │       │       ├── common.go
│   │       │       ├── connection.go
│   │       │       ├── doc.go
│   │       │       ├── handshake.go
│   │       │       ├── kex.go
│   │       │       ├── keys.go
│   │       │       ├── mac.go
│   │       │       ├── messages.go
│   │       │       ├── mux.go
│   │       │       ├── server.go
│   │       │       ├── session.go
│   │       │       ├── streamlocal.go
│   │       │       ├── tcpip.go
│   │       │       ├── terminal/
│   │       │       │   ├── terminal.go
│   │       │       │   ├── util.go
│   │       │       │   ├── util_bsd.go
│   │       │       │   ├── util_linux.go
│   │       │       │   ├── util_plan9.go
│   │       │       │   ├── util_solaris.go
│   │       │       │   └── util_windows.go
│   │       │       └── transport.go
│   │       ├── net/
│   │       │   ├── .gitattributes
│   │       │   ├── .gitignore
│   │       │   ├── AUTHORS
│   │       │   ├── CONTRIBUTING.md
│   │       │   ├── CONTRIBUTORS
│   │       │   ├── LICENSE
│   │       │   ├── PATENTS
│   │       │   ├── README
│   │       │   ├── codereview.cfg
│   │       │   ├── context/
│   │       │   │   ├── context.go
│   │       │   │   ├── go17.go
│   │       │   │   └── pre_go17.go
│   │       │   ├── html/
│   │       │   │   ├── atom/
│   │       │   │   │   ├── atom.go
│   │       │   │   │   ├── gen.go
│   │       │   │   │   └── table.go
│   │       │   │   ├── charset/
│   │       │   │   │   └── charset.go
│   │       │   │   ├── const.go
│   │       │   │   ├── doc.go
│   │       │   │   ├── doctype.go
│   │       │   │   ├── entity.go
│   │       │   │   ├── escape.go
│   │       │   │   ├── foreign.go
│   │       │   │   ├── node.go
│   │       │   │   ├── parse.go
│   │       │   │   ├── render.go
│   │       │   │   └── token.go
│   │       │   ├── idna/
│   │       │   │   ├── idna.go
│   │       │   │   ├── punycode.go
│   │       │   │   ├── tables.go
│   │       │   │   ├── trie.go
│   │       │   │   └── trieval.go
│   │       │   └── websocket/
│   │       │       ├── client.go
│   │       │       ├── dial.go
│   │       │       ├── hybi.go
│   │       │       ├── server.go
│   │       │       └── websocket.go
│   │       ├── sync/
│   │       │   ├── LICENSE
│   │       │   ├── PATENTS
│   │       │   └── syncmap/
│   │       │       └── map.go
│   │       ├── sys/
│   │       │   ├── .gitattributes
│   │       │   ├── .gitignore
│   │       │   ├── AUTHORS
│   │       │   ├── CONTRIBUTING.md
│   │       │   ├── CONTRIBUTORS
│   │       │   ├── LICENSE
│   │       │   ├── PATENTS
│   │       │   ├── README
│   │       │   ├── codereview.cfg
│   │       │   ├── unix/
│   │       │   │   ├── README.md
│   │       │   │   ├── asm_darwin_386.s
│   │       │   │   ├── asm_darwin_amd64.s
│   │       │   │   ├── asm_darwin_arm.s
│   │       │   │   ├── asm_darwin_arm64.s
│   │       │   │   ├── asm_dragonfly_amd64.s
│   │       │   │   ├── asm_freebsd_386.s
│   │       │   │   ├── asm_freebsd_amd64.s
│   │       │   │   ├── asm_freebsd_arm.s
│   │       │   │   ├── asm_linux_386.s
│   │       │   │   ├── asm_linux_amd64.s
│   │       │   │   ├── asm_linux_arm.s
│   │       │   │   ├── asm_linux_arm64.s
│   │       │   │   ├── asm_linux_mips64x.s
│   │       │   │   ├── asm_linux_mipsx.s
│   │       │   │   ├── asm_linux_ppc64x.s
│   │       │   │   ├── asm_linux_s390x.s
│   │       │   │   ├── asm_netbsd_386.s
│   │       │   │   ├── asm_netbsd_amd64.s
│   │       │   │   ├── asm_netbsd_arm.s
│   │       │   │   ├── asm_openbsd_386.s
│   │       │   │   ├── asm_openbsd_amd64.s
│   │       │   │   ├── asm_openbsd_arm.s
│   │       │   │   ├── asm_solaris_amd64.s
│   │       │   │   ├── bluetooth_linux.go
│   │       │   │   ├── cap_freebsd.go
│   │       │   │   ├── constants.go
│   │       │   │   ├── dev_darwin.go
│   │       │   │   ├── dev_dragonfly.go
│   │       │   │   ├── dev_freebsd.go
│   │       │   │   ├── dev_linux.go
│   │       │   │   ├── dev_netbsd.go
│   │       │   │   ├── dev_openbsd.go
│   │       │   │   ├── dirent.go
│   │       │   │   ├── endian_big.go
│   │       │   │   ├── endian_little.go
│   │       │   │   ├── env_unix.go
│   │       │   │   ├── env_unset.go
│   │       │   │   ├── errors_freebsd_386.go
│   │       │   │   ├── errors_freebsd_amd64.go
│   │       │   │   ├── errors_freebsd_arm.go
│   │       │   │   ├── flock.go
│   │       │   │   ├── flock_linux_32bit.go
│   │       │   │   ├── gccgo.go
│   │       │   │   ├── gccgo_c.c
│   │       │   │   ├── gccgo_linux_amd64.go
│   │       │   │   ├── mkall.sh
│   │       │   │   ├── mkerrors.sh
│   │       │   │   ├── mksyscall.pl
│   │       │   │   ├── mksyscall_solaris.pl
│   │       │   │   ├── mksysctl_openbsd.pl
│   │       │   │   ├── mksysnum_darwin.pl
│   │       │   │   ├── mksysnum_dragonfly.pl
│   │       │   │   ├── mksysnum_freebsd.pl
│   │       │   │   ├── mksysnum_netbsd.pl
│   │       │   │   ├── mksysnum_openbsd.pl
│   │       │   │   ├── openbsd_pledge.go
│   │       │   │   ├── pagesize_unix.go
│   │       │   │   ├── race.go
│   │       │   │   ├── race0.go
│   │       │   │   ├── sockcmsg_linux.go
│   │       │   │   ├── sockcmsg_unix.go
│   │       │   │   ├── str.go
│   │       │   │   ├── syscall.go
│   │       │   │   ├── syscall_bsd.go
│   │       │   │   ├── syscall_darwin.go
│   │       │   │   ├── syscall_darwin_386.go
│   │       │   │   ├── syscall_darwin_amd64.go
│   │       │   │   ├── syscall_darwin_arm.go
│   │       │   │   ├── syscall_darwin_arm64.go
│   │       │   │   ├── syscall_dragonfly.go
│   │       │   │   ├── syscall_dragonfly_amd64.go
│   │       │   │   ├── syscall_freebsd.go
│   │       │   │   ├── syscall_freebsd_386.go
│   │       │   │   ├── syscall_freebsd_amd64.go
│   │       │   │   ├── syscall_freebsd_arm.go
│   │       │   │   ├── syscall_linux.go
│   │       │   │   ├── syscall_linux_386.go
│   │       │   │   ├── syscall_linux_amd64.go
│   │       │   │   ├── syscall_linux_amd64_gc.go
│   │       │   │   ├── syscall_linux_arm.go
│   │       │   │   ├── syscall_linux_arm64.go
│   │       │   │   ├── syscall_linux_mips64x.go
│   │       │   │   ├── syscall_linux_mipsx.go
│   │       │   │   ├── syscall_linux_ppc64x.go
│   │       │   │   ├── syscall_linux_s390x.go
│   │       │   │   ├── syscall_linux_sparc64.go
│   │       │   │   ├── syscall_netbsd.go
│   │       │   │   ├── syscall_netbsd_386.go
│   │       │   │   ├── syscall_netbsd_amd64.go
│   │       │   │   ├── syscall_netbsd_arm.go
│   │       │   │   ├── syscall_no_getwd.go
│   │       │   │   ├── syscall_openbsd.go
│   │       │   │   ├── syscall_openbsd_386.go
│   │       │   │   ├── syscall_openbsd_amd64.go
│   │       │   │   ├── syscall_openbsd_arm.go
│   │       │   │   ├── syscall_solaris.go
│   │       │   │   ├── syscall_solaris_amd64.go
│   │       │   │   ├── syscall_unix.go
│   │       │   │   ├── syscall_unix_gc.go
│   │       │   │   ├── timestruct.go
│   │       │   │   ├── zerrors_darwin_386.go
│   │       │   │   ├── zerrors_darwin_amd64.go
│   │       │   │   ├── zerrors_darwin_arm.go
│   │       │   │   ├── zerrors_darwin_arm64.go
│   │       │   │   ├── zerrors_dragonfly_amd64.go
│   │       │   │   ├── zerrors_freebsd_386.go
│   │       │   │   ├── zerrors_freebsd_amd64.go
│   │       │   │   ├── zerrors_freebsd_arm.go
│   │       │   │   ├── zerrors_linux_386.go
│   │       │   │   ├── zerrors_linux_amd64.go
│   │       │   │   ├── zerrors_linux_arm.go
│   │       │   │   ├── zerrors_linux_arm64.go
│   │       │   │   ├── zerrors_linux_mips.go
│   │       │   │   ├── zerrors_linux_mips64.go
│   │       │   │   ├── zerrors_linux_mips64le.go
│   │       │   │   ├── zerrors_linux_mipsle.go
│   │       │   │   ├── zerrors_linux_ppc64.go
│   │       │   │   ├── zerrors_linux_ppc64le.go
│   │       │   │   ├── zerrors_linux_s390x.go
│   │       │   │   ├── zerrors_linux_sparc64.go
│   │       │   │   ├── zerrors_netbsd_386.go
│   │       │   │   ├── zerrors_netbsd_amd64.go
│   │       │   │   ├── zerrors_netbsd_arm.go
│   │       │   │   ├── zerrors_openbsd_386.go
│   │       │   │   ├── zerrors_openbsd_amd64.go
│   │       │   │   ├── zerrors_openbsd_arm.go
│   │       │   │   ├── zerrors_solaris_amd64.go
│   │       │   │   ├── zptrace386_linux.go
│   │       │   │   ├── zptracearm_linux.go
│   │       │   │   ├── zptracemips_linux.go
│   │       │   │   ├── zptracemipsle_linux.go
│   │       │   │   ├── zsyscall_darwin_386.go
│   │       │   │   ├── zsyscall_darwin_amd64.go
│   │       │   │   ├── zsyscall_darwin_arm.go
│   │       │   │   ├── zsyscall_darwin_arm64.go
│   │       │   │   ├── zsyscall_dragonfly_amd64.go
│   │       │   │   ├── zsyscall_freebsd_386.go
│   │       │   │   ├── zsyscall_freebsd_amd64.go
│   │       │   │   ├── zsyscall_freebsd_arm.go
│   │       │   │   ├── zsyscall_linux_386.go
│   │       │   │   ├── zsyscall_linux_amd64.go
│   │       │   │   ├── zsyscall_linux_arm.go
│   │       │   │   ├── zsyscall_linux_arm64.go
│   │       │   │   ├── zsyscall_linux_mips.go
│   │       │   │   ├── zsyscall_linux_mips64.go
│   │       │   │   ├── zsyscall_linux_mips64le.go
│   │       │   │   ├── zsyscall_linux_mipsle.go
│   │       │   │   ├── zsyscall_linux_ppc64.go
│   │       │   │   ├── zsyscall_linux_ppc64le.go
│   │       │   │   ├── zsyscall_linux_s390x.go
│   │       │   │   ├── zsyscall_linux_sparc64.go
│   │       │   │   ├── zsyscall_netbsd_386.go
│   │       │   │   ├── zsyscall_netbsd_amd64.go
│   │       │   │   ├── zsyscall_netbsd_arm.go
│   │       │   │   ├── zsyscall_openbsd_386.go
│   │       │   │   ├── zsyscall_openbsd_amd64.go
│   │       │   │   ├── zsyscall_openbsd_arm.go
│   │       │   │   ├── zsyscall_solaris_amd64.go
│   │       │   │   ├── zsysctl_openbsd_386.go
│   │       │   │   ├── zsysctl_openbsd_amd64.go
│   │       │   │   ├── zsysctl_openbsd_arm.go
│   │       │   │   ├── zsysnum_darwin_386.go
│   │       │   │   ├── zsysnum_darwin_amd64.go
│   │       │   │   ├── zsysnum_darwin_arm.go
│   │       │   │   ├── zsysnum_darwin_arm64.go
│   │       │   │   ├── zsysnum_dragonfly_amd64.go
│   │       │   │   ├── zsysnum_freebsd_386.go
│   │       │   │   ├── zsysnum_freebsd_amd64.go
│   │       │   │   ├── zsysnum_freebsd_arm.go
│   │       │   │   ├── zsysnum_linux_386.go
│   │       │   │   ├── zsysnum_linux_amd64.go
│   │       │   │   ├── zsysnum_linux_arm.go
│   │       │   │   ├── zsysnum_linux_arm64.go
│   │       │   │   ├── zsysnum_linux_mips.go
│   │       │   │   ├── zsysnum_linux_mips64.go
│   │       │   │   ├── zsysnum_linux_mips64le.go
│   │       │   │   ├── zsysnum_linux_mipsle.go
│   │       │   │   ├── zsysnum_linux_ppc64.go
│   │       │   │   ├── zsysnum_linux_ppc64le.go
│   │       │   │   ├── zsysnum_linux_s390x.go
│   │       │   │   ├── zsysnum_linux_sparc64.go
│   │       │   │   ├── zsysnum_netbsd_386.go
│   │       │   │   ├── zsysnum_netbsd_amd64.go
│   │       │   │   ├── zsysnum_netbsd_arm.go
│   │       │   │   ├── zsysnum_openbsd_386.go
│   │       │   │   ├── zsysnum_openbsd_amd64.go
│   │       │   │   ├── zsysnum_openbsd_arm.go
│   │       │   │   ├── zsysnum_solaris_amd64.go
│   │       │   │   ├── ztypes_darwin_386.go
│   │       │   │   ├── ztypes_darwin_amd64.go
│   │       │   │   ├── ztypes_darwin_arm.go
│   │       │   │   ├── ztypes_darwin_arm64.go
│   │       │   │   ├── ztypes_dragonfly_amd64.go
│   │       │   │   ├── ztypes_freebsd_386.go
│   │       │   │   ├── ztypes_freebsd_amd64.go
│   │       │   │   ├── ztypes_freebsd_arm.go
│   │       │   │   ├── ztypes_linux_386.go
│   │       │   │   ├── ztypes_linux_amd64.go
│   │       │   │   ├── ztypes_linux_arm.go
│   │       │   │   ├── ztypes_linux_arm64.go
│   │       │   │   ├── ztypes_linux_mips.go
│   │       │   │   ├── ztypes_linux_mips64.go
│   │       │   │   ├── ztypes_linux_mips64le.go
│   │       │   │   ├── ztypes_linux_mipsle.go
│   │       │   │   ├── ztypes_linux_ppc64.go
│   │       │   │   ├── ztypes_linux_ppc64le.go
│   │       │   │   ├── ztypes_linux_s390x.go
│   │       │   │   ├── ztypes_linux_sparc64.go
│   │       │   │   ├── ztypes_netbsd_386.go
│   │       │   │   ├── ztypes_netbsd_amd64.go
│   │       │   │   ├── ztypes_netbsd_arm.go
│   │       │   │   ├── ztypes_openbsd_386.go
│   │       │   │   ├── ztypes_openbsd_amd64.go
│   │       │   │   ├── ztypes_openbsd_arm.go
│   │       │   │   └── ztypes_solaris_amd64.go
│   │       │   └── windows/
│   │       │       ├── asm_windows_386.s
│   │       │       ├── asm_windows_amd64.s
│   │       │       ├── dll_windows.go
│   │       │       ├── env_unset.go
│   │       │       ├── env_windows.go
│   │       │       ├── eventlog.go
│   │       │       ├── exec_windows.go
│   │       │       ├── memory_windows.go
│   │       │       ├── mksyscall.go
│   │       │       ├── race.go
│   │       │       ├── race0.go
│   │       │       ├── security_windows.go
│   │       │       ├── service.go
│   │       │       ├── str.go
│   │       │       ├── syscall.go
│   │       │       ├── syscall_windows.go
│   │       │       ├── types_windows.go
│   │       │       ├── types_windows_386.go
│   │       │       ├── types_windows_amd64.go
│   │       │       └── zsyscall_windows.go
│   │       ├── text/
│   │       │   ├── .gitattributes
│   │       │   ├── .gitignore
│   │       │   ├── AUTHORS
│   │       │   ├── CONTRIBUTING.md
│   │       │   ├── CONTRIBUTORS
│   │       │   ├── LICENSE
│   │       │   ├── PATENTS
│   │       │   ├── README
│   │       │   ├── codereview.cfg
│   │       │   ├── encoding/
│   │       │   │   ├── charmap/
│   │       │   │   │   ├── charmap.go
│   │       │   │   │   ├── maketables.go
│   │       │   │   │   └── tables.go
│   │       │   │   ├── encoding.go
│   │       │   │   ├── htmlindex/
│   │       │   │   │   ├── gen.go
│   │       │   │   │   ├── htmlindex.go
│   │       │   │   │   ├── map.go
│   │       │   │   │   └── tables.go
│   │       │   │   ├── internal/
│   │       │   │   │   ├── identifier/
│   │       │   │   │   │   ├── gen.go
│   │       │   │   │   │   ├── identifier.go
│   │       │   │   │   │   └── mib.go
│   │       │   │   │   └── internal.go
│   │       │   │   ├── japanese/
│   │       │   │   │   ├── all.go
│   │       │   │   │   ├── eucjp.go
│   │       │   │   │   ├── iso2022jp.go
│   │       │   │   │   ├── maketables.go
│   │       │   │   │   ├── shiftjis.go
│   │       │   │   │   └── tables.go
│   │       │   │   ├── korean/
│   │       │   │   │   ├── euckr.go
│   │       │   │   │   ├── maketables.go
│   │       │   │   │   └── tables.go
│   │       │   │   ├── simplifiedchinese/
│   │       │   │   │   ├── all.go
│   │       │   │   │   ├── gbk.go
│   │       │   │   │   ├── hzgb2312.go
│   │       │   │   │   ├── maketables.go
│   │       │   │   │   └── tables.go
│   │       │   │   ├── traditionalchinese/
│   │       │   │   │   ├── big5.go
│   │       │   │   │   ├── maketables.go
│   │       │   │   │   └── tables.go
│   │       │   │   └── unicode/
│   │       │   │       ├── override.go
│   │       │   │       └── unicode.go
│   │       │   ├── internal/
│   │       │   │   ├── tag/
│   │       │   │   │   └── tag.go
│   │       │   │   └── utf8internal/
│   │       │   │       └── utf8internal.go
│   │       │   ├── language/
│   │       │   │   ├── Makefile
│   │       │   │   ├── common.go
│   │       │   │   ├── coverage.go
│   │       │   │   ├── gen_common.go
│   │       │   │   ├── gen_index.go
│   │       │   │   ├── go1_1.go
│   │       │   │   ├── go1_2.go
│   │       │   │   ├── index.go
│   │       │   │   ├── language.go
│   │       │   │   ├── lookup.go
│   │       │   │   ├── maketables.go
│   │       │   │   ├── match.go
│   │       │   │   ├── parse.go
│   │       │   │   ├── tables.go
│   │       │   │   └── tags.go
│   │       │   ├── runes/
│   │       │   │   ├── cond.go
│   │       │   │   └── runes.go
│   │       │   ├── secure/
│   │       │   │   └── bidirule/
│   │       │   │       ├── bidirule.go
│   │       │   │       ├── bidirule10.0.0.go
│   │       │   │       └── bidirule9.0.0.go
│   │       │   ├── transform/
│   │       │   │   └── transform.go
│   │       │   └── unicode/
│   │       │       ├── bidi/
│   │       │       │   ├── bidi.go
│   │       │       │   ├── bracket.go
│   │       │       │   ├── core.go
│   │       │       │   ├── prop.go
│   │       │       │   ├── tables10.0.0.go
│   │       │       │   ├── tables9.0.0.go
│   │       │       │   └── trieval.go
│   │       │       └── norm/
│   │       │           ├── composition.go
│   │       │           ├── forminfo.go
│   │       │           ├── input.go
│   │       │           ├── iter.go
│   │       │           ├── normalize.go
│   │       │           ├── readwriter.go
│   │       │           ├── tables10.0.0.go
│   │       │           ├── tables9.0.0.go
│   │       │           ├── transform.go
│   │       │           └── trie.go
│   │       └── tools/
│   │           ├── .gitattributes
│   │           ├── .gitignore
│   │           ├── AUTHORS
│   │           ├── CONTRIBUTING.md
│   │           ├── CONTRIBUTORS
│   │           ├── LICENSE
│   │           ├── PATENTS
│   │           ├── README
│   │           ├── codereview.cfg
│   │           ├── go/
│   │           │   └── ast/
│   │           │       └── astutil/
│   │           │           ├── enclosing.go
│   │           │           ├── imports.go
│   │           │           └── util.go
│   │           └── imports/
│   │               ├── fastwalk.go
│   │               ├── fastwalk_dirent_fileno.go
│   │               ├── fastwalk_dirent_ino.go
│   │               ├── fastwalk_portable.go
│   │               ├── fastwalk_unix.go
│   │               ├── fix.go
│   │               ├── imports.go
│   │               ├── mkindex.go
│   │               ├── mkstdlib.go
│   │               ├── sortimports.go
│   │               └── zstdlib.go
│   ├── gopkg.in/
│   │   ├── bsm/
│   │   │   └── ratelimit.v1/
│   │   │       ├── Makefile
│   │   │       ├── README.md
│   │   │       └── ratelimit.go
│   │   ├── check.v1/
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── TODO
│   │   │   ├── benchmark.go
│   │   │   ├── check.go
│   │   │   ├── checkers.go
│   │   │   ├── helpers.go
│   │   │   ├── printer.go
│   │   │   ├── reporter.go
│   │   │   └── run.go
│   │   ├── karalabe/
│   │   │   └── cookiejar.v2/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       └── collections/
│   │   │           └── prque/
│   │   │               ├── prque.go
│   │   │               └── sstack.go
│   │   ├── natefinch/
│   │   │   └── npipe.v2/
│   │   │       ├── LICENSE.txt
│   │   │       ├── README.md
│   │   │       ├── doc.go
│   │   │       ├── npipe_windows.go
│   │   │       ├── znpipe_windows_386.go
│   │   │       └── znpipe_windows_amd64.go
│   │   ├── olebedev/
│   │   │   └── go-duktape.v3/
│   │   │       ├── Gopkg.toml
│   │   │       ├── LICENSE.md
│   │   │       ├── README.md
│   │   │       ├── api.go
│   │   │       ├── appveyor.yml
│   │   │       ├── conts.go
│   │   │       ├── duk_alloc_pool.c
│   │   │       ├── duk_alloc_pool.h
│   │   │       ├── duk_config.h
│   │   │       ├── duk_console.c
│   │   │       ├── duk_console.h
│   │   │       ├── duk_logging.c
│   │   │       ├── duk_logging.h
│   │   │       ├── duk_minimal_printf.c
│   │   │       ├── duk_minimal_printf.h
│   │   │       ├── duk_module_duktape.c
│   │   │       ├── duk_module_duktape.h
│   │   │       ├── duk_module_node.c
│   │   │       ├── duk_module_node.h
│   │   │       ├── duk_print_alert.c
│   │   │       ├── duk_print_alert.h
│   │   │       ├── duk_v1_compat.c
│   │   │       ├── duk_v1_compat.h
│   │   │       ├── duktape.c
│   │   │       ├── duktape.go
│   │   │       ├── duktape.h
│   │   │       ├── timers.go
│   │   │       ├── utils.go
│   │   │       └── wercker.yml
│   │   ├── redis.v3/
│   │   │   ├── LICENSE
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── cluster.go
│   │   │   ├── cluster_pipeline.go
│   │   │   ├── command.go
│   │   │   ├── commands.go
│   │   │   ├── doc.go
│   │   │   ├── error.go
│   │   │   ├── internal/
│   │   │   │   ├── consistenthash/
│   │   │   │   │   └── consistenthash.go
│   │   │   │   ├── hashtag/
│   │   │   │   │   └── hashtag.go
│   │   │   │   ├── log.go
│   │   │   │   └── pool/
│   │   │   │       ├── conn.go
│   │   │   │       ├── pool.go
│   │   │   │       ├── pool_single.go
│   │   │   │       └── pool_sticky.go
│   │   │   ├── multi.go
│   │   │   ├── options.go
│   │   │   ├── parser.go
│   │   │   ├── pipeline.go
│   │   │   ├── pubsub.go
│   │   │   ├── redis.go
│   │   │   ├── ring.go
│   │   │   ├── safe.go
│   │   │   ├── script.go
│   │   │   ├── sentinel.go
│   │   │   └── unsafe.go
│   │   ├── sourcemap.v1/
│   │   │   ├── LICENSE
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── base64vlq/
│   │   │   │   └── base64_vlq.go
│   │   │   ├── consumer.go
│   │   │   └── sourcemap.go
│   │   └── urfave/
│   │       └── cli.v1/
│   │           ├── CHANGELOG.md
│   │           ├── LICENSE
│   │           ├── README.md
│   │           ├── app.go
│   │           ├── appveyor.yml
│   │           ├── category.go
│   │           ├── cli.go
│   │           ├── command.go
│   │           ├── context.go
│   │           ├── errors.go
│   │           ├── flag-types.json
│   │           ├── flag.go
│   │           ├── flag_generated.go
│   │           ├── funcs.go
│   │           ├── generate-flag-types
│   │           ├── help.go
│   │           └── runtests
│   └── vendor.json
├── voter/
│   ├── backend.go
│   ├── utils.go
│   └── voter.go
└── zero/
    ├── account/
    │   ├── address.go
    │   └── address_test.go
    ├── consensus/
    │   ├── bytes.go
    │   ├── cons.go
    │   ├── cons_test.go
    │   ├── dbobj.go
    │   ├── fakedb.go
    │   ├── iface.go
    │   ├── kvpoint.go
    │   └── objpoint.go
    ├── localdb/
    │   ├── block.go
    │   ├── out.go
    │   ├── out_commitment.go
    │   ├── out_test.go
    │   ├── out_vserial.go
    │   ├── outstat.go
    │   ├── pkg.go
    │   └── root.go
    ├── proofservice/
    │   ├── client.go
    │   └── proofservice.go
    ├── snapshot/
    │   ├── generator.go
    │   └── snapshot_test.go
    ├── stake/
    │   ├── Hash256PRNG.go
    │   ├── ITree.go
    │   ├── avltree.go
    │   ├── avltree_test.go
    │   ├── sharepool.go
    │   ├── sharepool_test.go
    │   ├── stakeConfig.go
    │   ├── tree.go
    │   └── tree_test.go
    ├── txs/
    │   ├── assets/
    │   │   ├── assets.go
    │   │   ├── ckstate.go
    │   │   ├── ckstate_test.go
    │   │   ├── flat_asset.go
    │   │   ├── ticket.go
    │   │   └── token.go
    │   ├── outs.go
    │   ├── pkg/
    │   │   ├── opkg.go
    │   │   ├── tools.go
    │   │   └── zpkg.go
    │   ├── stx/
    │   │   ├── cmd.go
    │   │   ├── cmd_test.go
    │   │   ├── gen_contractCmd_json.go
    │   │   ├── hash_v1.go
    │   │   ├── pkg.go
    │   │   ├── stx_v0/
    │   │   │   ├── otx.go
    │   │   │   ├── tx.go
    │   │   │   └── ztx.go
    │   │   ├── stx_v1/
    │   │   │   ├── ctx.go
    │   │   │   ├── ptx.go
    │   │   │   └── zktx.go
    │   │   ├── typeserial.go
    │   │   ├── ztx.go
    │   │   └── ztx_test.go
    │   ├── test/
    │   │   ├── txs.go
    │   │   └── txs_test.go
    │   ├── tx/
    │   │   ├── tx.go
    │   │   └── tx_test.go
    │   └── zstate/
    │       ├── merkle/
    │       │   ├── merkle.go
    │       │   ├── merkle_test.go
    │       │   └── utils.go
    │       ├── pkgstate/
    │       │   ├── data/
    │       │   │   ├── data.go
    │       │   │   └── data_state.go
    │       │   └── state.go
    │       ├── tri/
    │       │   └── tri.go
    │       ├── txstate/
    │       │   ├── data/
    │       │   │   ├── data.go
    │       │   │   ├── data_state.go
    │       │   │   ├── iface.go
    │       │   │   └── meta.go
    │       │   ├── data_v1/
    │       │   │   ├── data.go
    │       │   │   └── data_state.go
    │       │   ├── debug.go
    │       │   ├── merkle.go
    │       │   └── state.go
    │       └── zstate.go
    ├── txtool/
    │   ├── flight/
    │   │   ├── sli.go
    │   │   ├── sli_test.go
    │   │   ├── sri.go
    │   │   ├── tx.go
    │   │   └── types.go
    │   ├── generate/
    │   │   ├── generate.go
    │   │   └── generate_1/
    │   │       ├── prove.go
    │   │       ├── prove_proc.go
    │   │       ├── sign.go
    │   │       ├── sign_test.go
    │   │       └── utils.go
    │   ├── gtx_test.go
    │   ├── iface.go
    │   ├── main.go
    │   ├── prepare/
    │   │   ├── prepare.go
    │   │   ├── preparetx.go
    │   │   └── types.go
    │   ├── type.go
    │   └── verify/
    │       ├── verify.go
    │       ├── verify_1/
    │       │   ├── input_c_pool.go
    │       │   ├── output_c_pool.go
    │       │   ├── pkg_pool.go
    │       │   ├── verify_proof.go
    │       │   ├── verify_state.go
    │       │   └── verify_static.go
    │       └── verify_utils/
    │           └── utils.go
    ├── utils/
    │   ├── base58.go
    │   ├── deep_copy.go
    │   ├── dirtys.go
    │   ├── h2hash.go
    │   ├── hset.go
    │   ├── i256.go
    │   ├── pkrs_check.go
    │   ├── process.go
    │   ├── progress.go
    │   ├── snapshot.go
    │   ├── time_record.go
    │   ├── u256.go
    │   ├── u256_test.go
    │   ├── utils.go
    │   ├── utils_test.go
    │   └── work_chain.go
    ├── wallet/
    │   ├── exchange/
    │   │   ├── exchange.go
    │   │   ├── generate.go
    │   │   ├── pkg.go
    │   │   ├── utxo.go
    │   │   └── utxo_version.go
    │   ├── light/
    │   │   ├── api.go
    │   │   ├── api_test.go
    │   │   └── light.go
    │   ├── ssi/
    │   │   ├── ssi.go
    │   │   ├── type.go
    │   │   └── utils.go
    │   └── stakeservice/
    │       └── stakeservice.go
    └── zconfig/
        ├── backup.go
        ├── balance.go
        ├── checkpoint.go
        ├── checkpoint_test.go
        ├── exchange.go
        ├── light.go
        ├── main.go
        ├── main_test.go
        ├── runtime.go
        ├── snapshot.go
        └── stake.go

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
git# See http://help.github.com/ignore-files/ for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
#   git config --global core.excludesfile ~/.gitignore_global

/tmp
*/**/*un~
*/**/*.test
*un~
.DS_Store
*/**/.DS_Store
.ethtest
*/**/*tx_database*
*/**/*dapps*
build/_vendor/pkg

#*
.#*
*#
*~
.project
.settings

# used by the Makefile
/build/_workspace/
/build/bin/
/geth*.zip

# travis
profile.tmp
profile.cov

# IdeaIDE
.idea

# VS Code
.vscode

# dashboard
/dashboard/assets/flow-typed
/dashboard/assets/node_modules
/dashboard/assets/stats.json
/dashboard/assets/bundle.js
/dashboard/assets/package-lock.json

**/yarn-error.log

cgu
config.ini
build/package
build/geropkg/bin
build/geropkg/czero
build/geropkg_*.tar.gz
build/geropkg-*.tar.gz
build/geropkg-*.zip
build/gero-*.tar.gz
build/gero-*.zip
build/gerotx-*.tar.gz
build/gerotx-*.zip
build/*posGero*
build/posGero-*.*
makePos.sh
/pkg
build/deploy.sh
containers/docker/gero-ubuntu/gero-*.tar

pullup


================================================
FILE: AUTHORS
================================================
# This is the official list of go-ethereum authors for copyright purposes.

Afri Schoedon <5chdn@users.noreply.github.com>
Agustin Armellini Fischer <armellini13@gmail.com>
Airead <fgh1987168@gmail.com>
Alan Chen <alanchchen@users.noreply.github.com>
Alejandro Isaza <alejandro.isaza@gmail.com>
Ales Katona <ales@coinbase.com>
Alex Leverington <alex@ethdev.com>
Alex Wu <wuyiding@gmail.com>
Alexandre Van de Sande <alex.vandesande@ethdev.com>
Ali Hajimirza <Ali92hm@users.noreply.github.com>
Anton Evangelatov <anton.evangelatov@gmail.com>
Arba Sasmoyo <arba.sasmoyo@gmail.com>
Armani Ferrante <armaniferrante@berkeley.edu>
Armin Braun <me@obrown.io>
Aron Fischer <github@aron.guru>
Bas van Kervel <bas@ethdev.com>
Benjamin Brent <benjamin@benjaminbrent.com>
Benoit Verkindt <benoit.verkindt@gmail.com>
Bo <bohende@gmail.com>
Bo Ye <boy.e.computer.1982@outlook.com>
Bob Glickstein <bobg@users.noreply.github.com>
Brian Schroeder <bts@gmail.com>
Casey Detrio <cdetrio@gmail.com>
Chase Wright <mysticryuujin@gmail.com>
Christoph Jentzsch <jentzsch.software@gmail.com>
Daniel A. Nagy <nagy.da@gmail.com>
Daniel Sloof <goapsychadelic@gmail.com>
Darrel Herbst <dherbst@gmail.com>
Dave Appleton <calistralabs@gmail.com>
Diego Siqueira <DiSiqueira@users.noreply.github.com>
Dmitry Shulyak <yashulyak@gmail.com>
Egon Elbre <egonelbre@gmail.com>
Elias Naur <elias.naur@gmail.com>
Elliot Shepherd <elliot@identitii.com>
Enrique Fynn <enriquefynn@gmail.com>
Ernesto del Toro <ernesto.deltoro@gmail.com>
Ethan Buchman <ethan@coinculture.info>
Eugene Valeyev <evgen.povt@gmail.com>
Evangelos Pappas <epappas@evalonlabs.com>
Evgeny Danilenko <6655321@bk.ru>
Fabian Vogelsteller <fabian@frozeman.de>
Fabio Barone <fabio.barone.co@gmail.com>
Fabio Berger <fabioberger1991@gmail.com>
FaceHo <facehoshi@gmail.com>
Felix Lange <fjl@twurst.com>
Fiisio <liangcszzu@163.com>
Frank Wang <eternnoir@gmail.com>
Furkan KAMACI <furkankamaci@gmail.com>
Gary Rong <garyrong0905@gmail.com>
George Ornbo <george@shapeshed.com>
Gregg Dourgarian <greggd@tempworks.com>
Guillaume Ballet <gballet@gmail.com>
Guillaume Nicolas <guin56@gmail.com>
Gustav Simonsson <gustav.simonsson@gmail.com>
Hao Bryan Cheng <haobcheng@gmail.com>
Henning Diedrich <hd@eonblast.com>
Isidoro Ghezzi <isidoro.ghezzi@icloud.com>
Ivan Daniluk <ivan.daniluk@gmail.com>
Jae Kwon <jkwon.work@gmail.com>
Jamie Pitts <james.pitts@gmail.com>
Janoš Guljaš <janos@users.noreply.github.com>
Jason Carver <jacarver@linkedin.com>
Jay Guo <guojiannan1101@gmail.com>
Jeff R. Allen <jra@nella.org>
Jeffrey Wilcke <jeffrey@ethereum.org>
Jens Agerberg <github@agerberg.me>
Jia Chenhui <jiachenhui1989@gmail.com>
Jim McDonald <Jim@mcdee.net>
Joel Burget <joelburget@gmail.com>
Jonathan Brown <jbrown@bluedroplet.com>
Joseph Chow <ethereum@outlook.com>
Justin Clark-Casey <justincc@justincc.org>
Justin Drake <drakefjustin@gmail.com>
Kenji Siu <kenji@isuntv.com>
Kobi Gurkan <kobigurk@gmail.com>
Konrad Feldmeier <konrad@brainbot.com>
Kurkó Mihály <kurkomisi@users.noreply.github.com>
Kyuntae Ethan Kim <ethan.kyuntae.kim@gmail.com>
Lefteris Karapetsas <lefteris@refu.co>
Leif Jurvetson <leijurv@gmail.com>
Leo Shklovskii <leo@thermopylae.net>
Lewis Marshall <lewis@lmars.net>
Lio李欧 <lionello@users.noreply.github.com>
Louis Holbrook <dev@holbrook.no>
Luca Zeug <luclu@users.noreply.github.com>
Magicking <s@6120.eu>
Maran Hidskes <maran.hidskes@gmail.com>
Marek Kotewicz <marek.kotewicz@gmail.com>
Mark <markya0616@gmail.com>
Martin Holst Swende <martin@swende.se>
Matthew Di Ferrante <mattdf@users.noreply.github.com>
Matthew Wampler-Doty <matthew.wampler.doty@gmail.com>
Maximilian Meister <mmeister@suse.de>
Micah Zoltu <micah@zoltu.net>
Michael Ruminer <michael.ruminer+github@gmail.com>
Miguel Mota <miguelmota2@gmail.com>
Miya Chen <miyatlchen@gmail.com>
Nchinda Nchinda <nchinda2@gmail.com>
Nick Dodson <silentcicero@outlook.com>
Nick Johnson <arachnid@notdot.net>
Nicolas Guillaume <gunicolas@sqli.com>
Noman <noman@noman.land>
Oli Bye <olibye@users.noreply.github.com>
Paul Litvak <litvakpol@012.net.il>
Paulo L F Casaretto <pcasaretto@gmail.com>
Paweł Bylica <chfast@gmail.com>
Peter Pratscher <pratscher@gmail.com>
Petr Mikusek <petr@mikusek.info>
Péter Szilágyi <peterke@gmail.com>
RJ Catalano <catalanor0220@gmail.com>
Ramesh Nair <ram@hiddentao.com>
Ricardo Catalinas Jiménez <r@untroubled.be>
Ricardo Domingos <ricardohsd@gmail.com>
Richard Hart <richardhart92@gmail.com>
Rob <robert@rojotek.com>
Robert Zaremba <robert.zaremba@scale-it.pl>
Russ Cox <rsc@golang.org>
Rémy Roy <remyroy@remyroy.com>
S. Matthew English <s-matthew-english@users.noreply.github.com>
Shintaro Kaneko <kaneshin0120@gmail.com>
Sorin Neacsu <sorin.neacsu@gmail.com>
Stein Dekker <dekker.stein@gmail.com>
Steve Waldman <swaldman@mchange.com>
Steven Roose <stevenroose@gmail.com>
Taylor Gerring <taylor.gerring@gmail.com>
Thomas Bocek <tom@tomp2p.net>
Ti Zhou <tizhou1986@gmail.com>
Tosh Camille <tochecamille@gmail.com>
Valentin Wüstholz <wuestholz@gmail.com>
Victor Farazdagi <simple.square@gmail.com>
Victor Tran <vu.tran54@gmail.com>
Viktor Trón <viktor.tron@gmail.com>
Ville Sundell <github@solarius.fi>
Vincent G <caktux@gmail.com>
Vitalik Buterin <v@buterin.com>
Vitaly V <vvelikodny@gmail.com>
Vivek Anand <vivekanand1101@users.noreply.github.com>
Vlad Gluhovsky <gluk256@users.noreply.github.com>
Yohann Léon <sybiload@gmail.com>
Yoichi Hirai <i@yoichihirai.com>
Yondon Fu <yondon.fu@gmail.com>
Zach <zach.ramsay@gmail.com>
Zahoor Mohamed <zahoor@zahoor.in>
Zoe Nolan <github@zoenolan.org>
Zsolt Felföldi <zsfelfoldi@gmail.com>
am2rican5 <am2rican5@gmail.com>
ayeowch <ayeowch@gmail.com>
b00ris <b00ris@mail.ru>
bailantaotao <Edwin@maicoin.com>
baizhenxuan <nkbai@163.com>
bloonfield <bloonfield@163.com>
changhong <changhong.yu@shanbay.com>
evgk <evgeniy.kamyshev@gmail.com>
ferhat elmas <elmas.ferhat@gmail.com>
holisticode <holistic.computing@gmail.com>
jtakalai <juuso.takalainen@streamr.com>
ken10100147 <sunhongping@kanjian.com>
ligi <ligi@ligi.de>
mark.lin <mark@maicoin.com>
necaremus <necaremus@gmail.com>
njupt-moon <1015041018@njupt.edu.cn>
nkbai <nkbai@163.com>
rhaps107 <dod-source@yandex.ru>
slumber1122 <slumber1122@gmail.com>
sunxiaojun2014 <sunxiaojun-xy@360.cn>
terasum <terasum@163.com>
tsarpaul <Litvakpol@012.net.il>
xiekeyang <xiekeyang@users.noreply.github.com>
yoza <yoza.is12s@gmail.com>
ΞTHΞЯSPHΞЯΞ <{viktor.tron,nagydani,zsfelfoldi}@gmail.com>
Максим Чусовлянов <mchusovlianov@gmail.com>
Ralph Caraveo <deckarep@gmail.com>


================================================
FILE: AUTHORS.SERO
================================================
# This is the official list of go-sero authors for copyright purposes.

Gordon.T <gordon-sero@sero.vip>



================================================
FILE: COPYING
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2014 The go-ethereum Authors.
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

================================================
FILE: COPYING.LESSER
================================================
                   GNU LESSER GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.


  This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.

  0. Additional Definitions.

  As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.

  "The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.

  An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.

  A "Combined Work" is a work produced by combining or linking an
Application with the Library.  The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".

  The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.

  The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.

  1. Exception to Section 3 of the GNU GPL.

  You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.

  2. Conveying Modified Versions.

  If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:

   a) under this License, provided that you make a good faith effort to
   ensure that, in the event an Application does not supply the
   function or data, the facility still operates, and performs
   whatever part of its purpose remains meaningful, or

   b) under the GNU GPL, with none of the additional permissions of
   this License applicable to that copy.

  3. Object Code Incorporating Material from Library Header Files.

  The object code form of an Application may incorporate material from
a header file that is part of the Library.  You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:

   a) Give prominent notice with each copy of the object code that the
   Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the object code with a copy of the GNU GPL and this license
   document.

  4. Combined Works.

  You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:

   a) Give prominent notice with each copy of the Combined Work that
   the Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the Combined Work with a copy of the GNU GPL and this license
   document.

   c) For a Combined Work that displays copyright notices during
   execution, include the copyright notice for the Library among
   these notices, as well as a reference directing the user to the
   copies of the GNU GPL and this license document.

   d) Do one of the following:

       0) Convey the Minimal Corresponding Source under the terms of this
       License, and the Corresponding Application Code in a form
       suitable for, and under terms that permit, the user to
       recombine or relink the Application with a modified version of
       the Linked Version to produce a modified Combined Work, in the
       manner specified by section 6 of the GNU GPL for conveying
       Corresponding Source.

       1) Use a suitable shared library mechanism for linking with the
       Library.  A suitable mechanism is one that (a) uses at run time
       a copy of the Library already present on the user's computer
       system, and (b) will operate properly with a modified version
       of the Library that is interface-compatible with the Linked
       Version.

   e) Provide Installation Information, but only if you would otherwise
   be required to provide such information under section 6 of the
   GNU GPL, and only to the extent that such information is
   necessary to install and execute a modified version of the
   Combined Work produced by recombining or relinking the
   Application with a modified version of the Linked Version. (If
   you use option 4d0, the Installation Information must accompany
   the Minimal Corresponding Source and Corresponding Application
   Code. If you use option 4d1, you must provide the Installation
   Information in the manner specified by section 6 of the GNU GPL
   for conveying Corresponding Source.)

  5. Combined Libraries.

  You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:

   a) Accompany the combined library with a copy of the same work based
   on the Library, uncombined with any other library facilities,
   conveyed under the terms of this License.

   b) Give prominent notice with the combined library that part of it
   is a work based on the Library, and explaining where to find the
   accompanying uncombined form of the same work.

  6. Revised Versions of the GNU Lesser General Public License.

  The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.

  Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.

  If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.


================================================
FILE: Dockerfile
================================================
# Build Geth in a stock Go builder container
FROM golang:1.10-alpine as builder

RUN apk add --no-cache make gcc musl-dev linux-headers

ADD . /go-ethereum
RUN cd /go-ethereum && make gero

# Pull Geth into a second stage deploy alpine container
FROM alpine:latest

RUN apk add --no-cache ca-certificates
COPY --from=builder /go-ethereum/build/bin/gero /usr/local/bin/

EXPOSE 8545 8546 30303 30303/udp
ENTRYPOINT ["gero"]


================================================
FILE: LICENSE.SERO
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2018 The sero.cash Authors.
 Modified based on go-ethereum, which Copyright (C) 2014 The go-ethereum Authors.
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

================================================
FILE: LICENSE.SERO.LESSER
================================================
                   GNU LESSER GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.


  This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.

  0. Additional Definitions.

  As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.

  "The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.

  An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.

  A "Combined Work" is a work produced by combining or linking an
Application with the Library.  The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".

  The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.

  The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.

  1. Exception to Section 3 of the GNU GPL.

  You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.

  2. Conveying Modified Versions.

  If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:

   a) under this License, provided that you make a good faith effort to
   ensure that, in the event an Application does not supply the
   function or data, the facility still operates, and performs
   whatever part of its purpose remains meaningful, or

   b) under the GNU GPL, with none of the additional permissions of
   this License applicable to that copy.

  3. Object Code Incorporating Material from Library Header Files.

  The object code form of an Application may incorporate material from
a header file that is part of the Library.  You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:

   a) Give prominent notice with each copy of the object code that the
   Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the object code with a copy of the GNU GPL and this license
   document.

  4. Combined Works.

  You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:

   a) Give prominent notice with each copy of the Combined Work that
   the Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the Combined Work with a copy of the GNU GPL and this license
   document.

   c) For a Combined Work that displays copyright notices during
   execution, include the copyright notice for the Library among
   these notices, as well as a reference directing the user to the
   copies of the GNU GPL and this license document.

   d) Do one of the following:

       0) Convey the Minimal Corresponding Source under the terms of this
       License, and the Corresponding Application Code in a form
       suitable for, and under terms that permit, the user to
       recombine or relink the Application with a modified version of
       the Linked Version to produce a modified Combined Work, in the
       manner specified by section 6 of the GNU GPL for conveying
       Corresponding Source.

       1) Use a suitable shared library mechanism for linking with the
       Library.  A suitable mechanism is one that (a) uses at run time
       a copy of the Library already present on the user's computer
       system, and (b) will operate properly with a modified version
       of the Library that is interface-compatible with the Linked
       Version.

   e) Provide Installation Information, but only if you would otherwise
   be required to provide such information under section 6 of the
   GNU GPL, and only to the extent that such information is
   necessary to install and execute a modified version of the
   Combined Work produced by recombining or relinking the
   Application with a modified version of the Linked Version. (If
   you use option 4d0, the Installation Information must accompany
   the Minimal Corresponding Source and Corresponding Application
   Code. If you use option 4d1, you must provide the Installation
   Information in the manner specified by section 6 of the GNU GPL
   for conveying Corresponding Source.)

  5. Combined Libraries.

  You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:

   a) Accompany the combined library with a copy of the same work based
   on the Library, uncombined with any other library facilities,
   conveyed under the terms of this License.

   b) Give prominent notice with the combined library that part of it
   is a work based on the Library, and explaining where to find the
   accompanying uncombined form of the same work.

  6. Revised Versions of the GNU Lesser General Public License.

  The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.

  Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.

  If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

================================================
FILE: Makefile
================================================
# This Makefile is meant to be used by people that do not usually work
# with Go source code. If you know what GOPATH is then you probably
# don't need to bother with make.

.PHONY: gero android ios gero-cross swarm evm all test clean
.PHONY: gero-linux gero-linux-386 gero-linux-amd64 gero-linux-mips64 gero-linux-mips64le
.PHONY: gero-linux-arm gero-linux-arm-5 gero-linux-arm-6 gero-linux-arm-7 gero-linux-arm64
.PHONY: gero-darwin gero-darwin-386 gero-darwin-amd64
.PHONY: gero-windows gero-windows-386 gero-windows-amd64

GOBIN = $(shell pwd)/build/bin
root=$(shell pwd)
GO ?= latest

PKG = ./...

gero:
	build/env.sh go run build/ci.go install ./cmd/gero
	@echo "Done building."
	@echo "Run \"$(GOBIN)/gero\" to launch gero."

swarm:
	build/env.sh go run build/ci.go install ./cmd/swarm
	@echo "Done building."
	@echo "Run \"$(GOBIN)/swarm\" to launch swarm."

all:
	build/env.sh go run build/ci.go install

test: all
	build/env.sh go run build/ci.go test

lint: ## Run linters.
	build/env.sh go run build/ci.go lint $(PKG)

clean:
	./build/clean_go_build_cache.sh
	rm -fr build/_workspace/pkg/ $(GOBIN)/*

# The devtools target installs tools required for 'go generate'.
# You need to put $GOBIN (or $GOPATH/bin) in your PATH to use 'go generate'.

devtools:
	env GOBIN= go get -u golang.org/x/tools/cmd/stringer
	env GOBIN= go get -u github.com/kevinburke/go-bindata/go-bindata
	env GOBIN= go get -u github.com/fjl/gencodec
	env GOBIN= go get -u github.com/golang/protobuf/protoc-gen-go
	env GOBIN= go install ./cmd/abigen
	@type "npm" 2> /dev/null || echo 'Please install node.js and npm'
	@type "solc" 2> /dev/null || echo 'Please install solc'
	@type "protoc" 2> /dev/null || echo 'Please install protoc'

# Cross Compilation Targets (xgo)

gero-cross: gero-linux gero-darwin gero-windows
	@echo "Full cross compilation done:"
	@ls -ld $(GOBIN)/gero-*

gero-linux: gero-linux-amd64-v3 gero-linux-amd64-v4
	@echo "Linux cross compilation done:"
	@ls -ld $(GOBIN)/gero-linux-*

gero-linux-amd64-v3:
	build/env.sh go run build/ci.go xgo -- --go=$(GO) --out=gero-v3 --targets=linux/amd64 -v ./cmd/gero
	#build/env.sh  go run build/ci.go xgo -- --go=$(GO) --out=bootnode-v3 --targets=linux/amd64 -v ./cmd/bootnode
	@echo "Linux centos amd64 cross compilation done:"
	@ls -ld $(GOBIN)/gero-v3-linux-* | grep amd64

gero-linux-amd64-v4:
	build/env.sh go run build/ci.go xgo -- --go=$(GO) --out=gero-v4 --targets=linux/amd64 -v ./cmd/gero
	#build/env.sh linux-v3 go run build/ci.go xgo -- --go=$(GO) --out=bootnode-v4 --targets=linux/amd64 -v ./cmd/bootnode
	@echo "Linux  ubuntu amd64 cross compilation done:"
	@ls -ld $(GOBIN)/gero-v4-linux-* | grep amd64

gero-darwin: gero-darwin-amd64
	@echo "Darwin cross compilation done:"
	@ls -ld $(GOBIN)/gero-darwin-*


gero-darwin-amd64:
	build/env.sh  go run build/ci.go xgo -- --go=$(GO) --targets=darwin/amd64 -v ./cmd/gero
	@echo "Darwin amd64 cross compilation done:"
	@ls -ld $(GOBIN)/gero-darwin-* | grep amd64

gero-windows: gero-windows-amd64
	@echo "Windows cross compilation done:"
	@ls -ld $(GOBIN)/gero-windows-*

gero-windows-amd64:
	build/env.sh  go run build/ci.go xgo -- --go=$(GO)  --targets=windows/amd64 -v ./cmd/gero
	@echo "Windows amd64 cross compilation done:"
	@ls -ld $(GOBIN)/gero-windows-* | grep amd64

gerotx-darwin-amd64:
	build/env.sh  go run build/ci.go xgo -- --go=$(GO) --out=gerotx  --targets=darwin/amd64 -v ./cmd/tx
	@echo "Darwin amd64 cross compilation done:"
	@ls -ld $(GOBIN)/gerotx-darwin-* | grep amd64

gerotx-linux-amd64-v3:
	build/env.sh go run build/ci.go xgo -- --go=$(GO) --out=gerotx-v3 --targets=linux/amd64 -v ./cmd/tx
	@echo "Linux centos amd64 cross compilation done:"
	@ls -ld $(GOBIN)/gerotx-v3-linux-* | grep amd64

gerotx-linux-amd64-v4:
	build/env.sh go run build/ci.go xgo -- --go=$(GO) --out=gerotx-v4 --targets=linux/amd64 -v ./cmd/tx
	@echo "Linux  ubuntu amd64 cross compilation done:"
	@ls -ld $(GOBIN)/gerotx-v4-linux-* | grep amd64

gerotx-windows-amd64:
	build/env.sh go run build/ci.go xgo -- --go=$(GO) --out=gerotx --targets=windows/amd64 -v ./cmd/tx
	@echo "Windows amd64 cross compilation done:"
	@ls -ld $(GOBIN)/gerotx-windows-* | grep amd64

================================================
FILE: README.md
================================================
# Go Sero

The SERO system is the world's first blockchain platform to support confidential transactions based on Zero-knowledge proof and supports Turing complete smart contracts.

## What's SERO

https://wiki.sero.cash/en/index.html?file=home-Home


## From source code -- base on CentOS7

https://wiki.sero.cash/en/index.html?file=Start/from-the-sourcecode-base-on-centos7


## How to mine using gero

https://wiki.sero.cash/en/index.html?file=Start/from-the-binary-package

 **Now You don't need license anymore to mine SERO.**


## How to use snapshots

https://wiki.sero.cash/en/index.html?file=Start/sero-chain-snapshot-list


## How to start SERO Staking on gero

https://wiki.sero.cash/en/index.html?file=Tutorial/how-to-staking-using-gero

## Decentralized light wallet

**PC:**
https://github.com/sero-cash/pullup

**Mobile:**
https://sero.cash/app/popup.html


## POW pool list

https://wiki.sero.cash/en/index.html?file=Start/sero-pool-list

## PoS stake node List

https://wiki.sero.cash/en/index.html?file=Start/stake-node-list

## Contribution

Thank you for considering to help out with the source code! We welcome contributions from
anyone on the internet, and are grateful for even the smallest of fixes!

If you'd like to contribute to go-sero, please fork, fix, commit and send a pull request
for the maintainers to review and merge into the main code base. 

Please make sure your contributions adhere to our coding guidelines:

 * Code must adhere to the official Go [formatting](https://golang.org/doc/effective_go.html#formatting) guidelines (i.e. uses [gofmt](https://golang.org/cmd/gofmt/)).
 * Code must be documented adhering to the official Go [commentary](https://golang.org/doc/effective_go.html#commentary) guidelines.
 * Pull requests need to be based on and opened against the `master` branch.
 * Commit messages should be prefixed with the package(s) they modify.
   * E.g. "sero, rpc: make trace configs optional"

Please see the [Developers' Guide](https://github.com/sero-cash/go-sero/wiki/Developers'-Guide)
for more details on configuring your environment, managing project dependencies and testing procedures.

## Community resources

**Wechat:**  SERO9413

**Discord:**  <https://discord.gg/n5HVxE>

**Twitter:**  <https://twitter.com/SEROdotCASH>

**Telegram:**  <https://t.me/SeroOfficial>

**Gitter:**  <https://gitter.im/sero-cash/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link>


## Other resources

**Official Website:** <https://sero.cash>

**White Paper:** <http://sero-media.s3-website-ap-southeast-1.amazonaws.com/Sero_ENG_V1.06.pdf>

**WIKI:** <https://wiki.sero.cash/zh/index.html?file=home-Home>

**Block Explorer:** <https://explorer.web.sero.cash/blocks.html>

**Introduction Video:** <https://v.qq.com/x/page/s0792e921ok.html>


## License

The go-sero library (i.e. all code outside of the `cmd` directory) is licensed under the
[GNU Lesser General Public License v3.0](https://www.gnu.org/licenses/lgpl-3.0.en.html), also
included in our repository in the `COPYING.LESSER` file.

The go-sero binaries (i.e. all code inside of the `cmd` directory) is licensed under the
[GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html), also included
in our repository in the `COPYING` file.

*Note: Go Sero inherit with licenses of ethereum.*


================================================
FILE: accounts/abi/abi.go
================================================
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

package abi

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"

	"github.com/pkg/errors"
	"github.com/sero-cash/go-czero-import/c_type"
	"github.com/sero-cash/go-sero/common"
)

// The ABI holds information about a contract's context and available
// invokable methods. It will allow you to type check function calls and
// packs data accordingly.
type ABI struct {
	Constructor Method
	Methods     map[string]Method
	Events      map[string]Event

	// Additional "special" functions introduced in solidity v0.6.0.
	// It's separated from the original default fallback. Each contract
	// can only define one fallback and receive function.
	Fallback Method // Note it's also used to represent legacy fallback before v0.6.0
	Receive  Method
}

// JSON returns a parsed ABI interface and error if it failed.
func JSON(reader io.Reader) (ABI, error) {
	dec := json.NewDecoder(reader)

	var abi ABI
	if err := dec.Decode(&abi); err != nil {
		return ABI{}, err
	}

	return abi, nil
}

// Pack the given method name to conform the ABI. Method call's data
// will consist of method_id, args0, arg1, ... argN. Method id consists
// of 4 bytes and arguments are all 32 bytes.
// Method ids are created from the first 4 bytes of the hash of the
// methods string signature. (signature = baz(uint32,string32))

func (abi ABI) PackPrefix(name string, rand c_type.Uint128, args ...interface{}) ([]byte, error) {
	var ret []byte
	ret = append(ret, rand[:]...)
	if name == "" {
		// constructor
		addressPrefix, err := abi.Constructor.Inputs.PackPrefix(args...)
		if err != nil {
			return nil, err
		}
		ret = append(ret, addressPrefix...)
		return ret, nil

	}
	method, exist := abi.Methods[name]
	if !exist {
		return nil, fmt.Errorf("method '%s' not found", name)
	}

	addressPrefix, err := method.Inputs.PackPrefix(args...)
	if err != nil {
		return nil, err
	}
	ret = append(ret, addressPrefix...)

	return ret, nil
}

func (abi ABI) Pack(name string, args ...interface{}) ([]byte, error) {
	// Fetch the ABI of the requested method
	if name == "" {
		// constructor

		arguments, err := abi.Constructor.Inputs.Pack(args...)
		if err != nil {
			return nil, err
		}
		return arguments, nil

	}
	method, exist := abi.Methods[name]
	if !exist {
		return nil, fmt.Errorf("method '%s' not found", name)
	}

	arguments, err := method.Inputs.Pack(args...)
	if err != nil {
		return nil, err
	}
	// Pack up the method ID too if not a constructor and return
	return append(method.ID, arguments...), nil
}

// Unpack output in v according to the abi specification
func (abi ABI) Unpack(v interface{}, name string, output []byte) (err error) {
	if len(output) == 0 {
		return fmt.Errorf("abi: unmarshalling empty output")
	}
	// since there can't be naming collisions with contracts and events,
	// we need to decide whether we're calling a method or an event
	if method, ok := abi.Methods[name]; ok {
		if len(output)%32 != 0 {
			return fmt.Errorf("abi: improperly formatted output")
		}
		return method.Outputs.Unpack(v, output)
	} else if event, ok := abi.Events[name]; ok {
		return event.Inputs.Unpack(v, output)
	}
	return fmt.Errorf("abi: could not locate named method or event")
}

// UnpackIntoMap unpacks a log into the provided map[string]interface{}
func (abi ABI) UnpackIntoMap(v map[string]interface{}, name string, data []byte) (err error) {
	if len(data) == 0 {
		return fmt.Errorf("abi: unmarshalling empty output")
	}
	// since there can't be naming collisions with contracts and events,
	// we need to decide whether we're calling a method or an event
	if method, ok := abi.Methods[name]; ok {
		if len(data)%32 != 0 {
			return fmt.Errorf("abi: improperly formatted output")
		}
		return method.Outputs.UnpackIntoMap(v, data)
	}
	if event, ok := abi.Events[name]; ok {
		return event.Inputs.UnpackIntoMap(v, data)
	}
	return fmt.Errorf("abi: could not locate named method or event")
}

// UnmarshalJSON implements json.Unmarshaler interface
func (abi *ABI) UnmarshalJSON(data []byte) error {
	var fields []struct {
		Type    string
		Name    string
		Inputs  []Argument
		Outputs []Argument

		// Status indicator which can be: "pure", "view",
		// "nonpayable" or "payable".
		StateMutability string

		// Deprecated Status indicators, but removed in v0.6.0.
		Constant bool // True if function is either pure or view
		Payable  bool // True if function is payable

		// Event relevant indicator represents the event is
		// declared as anonymous.
		Anonymous bool
	}
	if err := json.Unmarshal(data, &fields); err != nil {
		return err
	}
	abi.Methods = make(map[string]Method)
	abi.Events = make(map[string]Event)
	for _, field := range fields {
		switch field.Type {
		case "constructor":
			abi.Constructor = NewMethod("", "", Constructor, field.StateMutability, field.Constant, field.Payable, field.Inputs, nil)
		case "function":
			name := abi.overloadedMethodName(field.Name)
			abi.Methods[name] = NewMethod(name, field.Name, Function, field.StateMutability, field.Constant, field.Payable, field.Inputs, field.Outputs)
		case "fallback":
			// New introduced function type in v0.6.0, check more detail
			// here https://solidity.readthedocs.io/en/v0.6.0/contracts.html#fallback-function
			if abi.HasFallback() {
				return errors.New("only single fallback is allowed")
			}
			abi.Fallback = NewMethod("", "", Fallback, field.StateMutability, field.Constant, field.Payable, nil, nil)
		case "receive":
			// New introduced function type in v0.6.0, check more detail
			// here https://solidity.readthedocs.io/en/v0.6.0/contracts.html#fallback-function
			if abi.HasReceive() {
				return errors.New("only single receive is allowed")
			}
			if field.StateMutability != "payable" {
				return errors.New("the statemutability of receive can only be payable")
			}
			abi.Receive = NewMethod("", "", Receive, field.StateMutability, field.Constant, field.Payable, nil, nil)
		case "event":
			name := abi.overloadedEventName(field.Name)
			abi.Events[name] = NewEvent(name, field.Name, field.Anonymous, field.Inputs)
		default:
			return fmt.Errorf("abi: could not recognize type %v of field %v", field.Type, field.Name)
		}
	}
	return nil
}

// overloadedMethodName returns the next available name for a given function.
// Needed since solidity allows for function overload.
//
// e.g. if the abi contains Methods send, send1
// overloadedMethodName would return send2 for input send.
func (abi *ABI) overloadedMethodName(rawName string) string {
	name := rawName
	_, ok := abi.Methods[name]
	for idx := 0; ok; idx++ {
		name = fmt.Sprintf("%s%d", rawName, idx)
		_, ok = abi.Methods[name]
	}
	return name
}

// overloadedEventName returns the next available name for a given event.
// Needed since solidity allows for event overload.
//
// e.g. if the abi contains events received, received1
// overloadedEventName would return received2 for input received.
func (abi *ABI) overloadedEventName(rawName string) string {
	name := rawName
	_, ok := abi.Events[name]
	for idx := 0; ok; idx++ {
		name = fmt.Sprintf("%s%d", rawName, idx)
		_, ok = abi.Events[name]
	}
	return name
}

// MethodById looks up a method by the 4-byte id
// returns nil if none found
func (abi *ABI) MethodById(sigdata []byte) (*Method, error) {
	if len(sigdata) < 4 {
		return nil, fmt.Errorf("data too short (%d bytes) for abi method lookup", len(sigdata))
	}
	for _, method := range abi.Methods {
		if bytes.Equal(method.ID, sigdata[:4]) {
			return &method, nil
		}
	}
	return nil, fmt.Errorf("no method with id: %#x", sigdata[:4])
}

// EventByID looks an event up by its topic hash in the
// ABI and returns nil if none found.
func (abi *ABI) EventByID(topic common.Hash) (*Event, error) {
	for _, event := range abi.Events {
		if bytes.Equal(event.ID.Bytes(), topic.Bytes()) {
			return &event, nil
		}
	}
	return nil, fmt.Errorf("no event with id: %#x", topic.Hex())
}

// HasFallback returns an indicator whether a fallback function is included.
func (abi *ABI) HasFallback() bool {
	return abi.Fallback.Type == Fallback
}

// HasReceive returns an indicator whether a receive function is included.
func (abi *ABI) HasReceive() bool {
	return abi.Receive.Type == Receive
}

// revertSelector is a special function selector for revert reason unpacking.
//var revertSelector = crypto.Keccak256([]byte("Error(string)"))[:4]


================================================
FILE: accounts/abi/abi_test.go
================================================
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

package abi

//
//import (
//	"bytes"
//	"encoding/hex"
//	"encoding/json"
//	"fmt"
//	"log"
//	"math/big"
//	"reflect"
//	"strings"
//	"testing"
//
//	"github.com/sero-cash/go-sero/common"
//	"github.com/sero-cash/go-sero/crypto"
//)
//
//const jsondata = `
//[
//	{ "type" : "function", "name" : "balance", "constant" : true },
//	{ "type" : "function", "name" : "send", "constant" : false, "inputs" : [ { "name" : "amount", "type" : "uint256" } ] }
//]`
//
//const jsondata2 = `
//[
//	{ "type" : "function", "name" : "balance", "constant" : true },
//	{ "type" : "function", "name" : "send", "constant" : false, "inputs" : [ { "name" : "amount", "type" : "uint256" } ] },
//	{ "type" : "function", "name" : "test", "constant" : false, "inputs" : [ { "name" : "number", "type" : "uint32" } ] },
//	{ "type" : "function", "name" : "string", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "string" } ] },
//	{ "type" : "function", "name" : "bool", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "bool" } ] },
//	{ "type" : "function", "name" : "address", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "address" } ] },
//	{ "type" : "function", "name" : "uint64[2]", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "uint64[2]" } ] },
//	{ "type" : "function", "name" : "uint64[]", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "uint64[]" } ] },
//	{ "type" : "function", "name" : "foo", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "uint32" } ] },
//	{ "type" : "function", "name" : "bar", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "uint32" }, { "name" : "string", "type" : "uint16" } ] },
//	{ "type" : "function", "name" : "slice", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "uint32[2]" } ] },
//	{ "type" : "function", "name" : "slice256", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "uint256[2]" } ] },
//	{ "type" : "function", "name" : "sliceAddress", "constant" : false, "inputs" : [ { "name" : "inputs", "type" : "address[]" } ] },
//	{ "type" : "function", "name" : "sliceMultiAddress", "constant" : false, "inputs" : [ { "name" : "a", "type" : "address[]" }, { "name" : "b", "type" : "address[]" } ] }
//]`
//
//func newType(t string) Type {
//	typ, err := NewType(t)
//	if err != nil {
//		panic(t)
//	}
//	return typ
//}
//
//func TestALL(t *testing.T) {
//	fmt.Println(newType("bytes").T)
//
//	//fmt.Println(newType("uint8[2]").Kind)
//	//paramJson := `{"uint8[2]":[100,99]}`
//
//	//paramJson := `{"uint8[2][2]":[[100,99],[98,97]]}`
//
//	//paramJson := `{"string":"12345"}`
//
//	//paramJson := `{"bool":true}`
//
//	//paramJson := `{"address":"6gYcdwixFVFg1QLV29hURUnN2WLxoTFbDHBptvtC4GcCHfnG7ocmmTrebf3KvjNHfj6UJpp9UzkSiheYbCyDERF"}`
//
//	paramJson := `{"address[][]":[["6gYcdwixFVFg1QLV29hURUnN2WLxoTFbDHBptvtC4GcCHfnG7ocmmTrebf3KvjNHfj6UJpp9UzkSiheYbCyDERF"],["6gYcdwixFVFg1QLV29hURUnN2WLxoTFbDHBptvtC4GcCHfnG7ocmmTrebf3KvjNHfj6UJpp9UzkSiheYbCyDERF"]], "bytes":[1,2]}`
//
//	dec := json.NewDecoder(strings.NewReader(paramJson))
//	dec.UseNumber()
//
//	vs := map[string]interface{}{}
//
//	if err := dec.Decode(&vs); err != nil {
//		fmt.Print(err)
//	}
//
//	args := []Argument{}
//	inputs := []interface{}{}
//
//	//var index int
//	//for k, v := range vs {
//	//	//fmt.Printf("%t\n %t\n", k, v)
//	//	tv, _, _ := ValueTo(newType(k), v, nil, nil)
//	//	//fmt.Printf("address = %v\n",addr)
//	//	fmt.Printf("v=%v\n", tv)
//	//	args = append(args, Argument{"a" + strconv.Itoa(index), newType(k), false})
//	//	inputs = append(inputs, tv.Interface())
//	//	index += 1
//	//}
//
//	//[2]uint32{uint32(100), uint32(99)}, "1234567890", common.HexToAddress("0xbbf289d846208c16edc8474705c748aff07732db"), common.HexToAddress("0x692a70d2e424a56d2c6c27aa97d1a86395877b3a"), "test", uint32(11)
//	method := Method{"test", false, args, nil}
//
//	outputs, err := method.Inputs.Pack(inputs...)
//	if err != nil {
//		fmt.Print(err)
//	}
//
//	input := append(method.ID, outputs...)
//	fmt.Println(common.Bytes2Hex(input))
//
//	type Event struct {
//		A0 common.Address
//		//A1 common.Data
//		//A2 []byte
//		//A2 string
//	}
//	var ev Event
//	aa := Arguments{
//		{"a0", newType("address"), false},
//		//{"a1", newType("address"), false},
//		{"a2", newType("bytes"), false},
//	}
//	unpack := aa.Unpack(&ev, outputs)
//	//unpack := method.Inputs.Unpack(&ev, outputs)
//	fmt.Println(unpack)
//	fmt.Println(ev)
//
//}
//
//func TestABIPACK(t *testing.T) {
//	fmt.Println(newType("bytes").T)
//
//	//fmt.Println(newType("uint8[2]").Kind)
//	//paramJson := `{"uint8[2]":[100,99]}`
//
//	//paramJson := `{"uint8[2][2]":[[100,99],[98,97]]}`
//
//	//paramJson := `{"string":"12345"}`
//
//	//paramJson := `{"bool":true}`
//
//	//paramJson := `{"address":"0xbbf289d846208c16edc8474705c748aff07732db"}`
//
//	datas := []string{`address:6gYcdwixFVFg1QLV29hURUnN2WLxoTFbDHBptvtC4GcCHfnG7ocmmTrebf3KvjNHfj6UJpp9UzkSiheYbCyDERF`}
//
//	inputs := []interface{}{}
//	args := []Argument{}
//	//var index int
//	for _, line := range datas {
//		pairs := strings.Split(line, ":")
//		vs := map[string]interface{}{}
//		fmt.Printf("json=%v", `{"`+pairs[0]+`":"`+pairs[1]+`"}`)
//		dec := json.NewDecoder(strings.NewReader(`{"` + pairs[0] + `":"` + pairs[1] + `"}`))
//		dec.UseNumber()
//		if err := dec.Decode(&vs); err != nil {
//			fmt.Print(err)
//		}
//		//for k, v := range vs {
//		//	//fmt.Printf("%t\n %t\n", k, v)
//		//	tv, _, _ := ValueTo(newType(k), v, nil, nil)
//		//	fmt.Printf("v=%v\n", tv)
//		//	args = append(args, Argument{"a" + strconv.Itoa(index), newType(k), false})
//		//	inputs = append(inputs, tv.Interface())
//		//	index += 1
//		//}
//
//	}
//
//	//[2]uint32{uint32(100), uint32(99)}, "1234567890", common.HexToAddress("0xbbf289d846208c16edc8474705c748aff07732db"), common.HexToAddress("0x692a70d2e424a56d2c6c27aa97d1a86395877b3a"), "test", uint32(11)
//	method := Method{"test", false, args, nil}
//
//	outputs, err := method.Inputs.Pack(inputs...)
//	if err != nil {
//		fmt.Print(err)
//	}
//
//	input := append(method.Id(), outputs...)
//	fmt.Println(common.Bytes2Hex(input))
//}
//
//func TestReader(t *testing.T) {
//	Uint256, _ := NewType("uint256")
//	exp := ABI{
//		Methods: map[string]Method{
//			"balance": {
//				"balance", true, nil, nil,
//			},
//			"send": {
//				"send", false, []Argument{
//					{"amount", Uint256, false},
//				}, nil,
//			},
//		},
//	}
//
//	abi, err := JSON(strings.NewReader(jsondata))
//	if err != nil {
//		t.Error(err)
//	}
//
//	// deep equal fails for some reason
//	for name, expM := range exp.Methods {
//		gotM, exist := abi.Methods[name]
//		if !exist {
//			t.Errorf("Missing expected method %v", name)
//		}
//		if !reflect.DeepEqual(gotM, expM) {
//			t.Errorf("\nGot abi method: \n%v\ndoes not match expected method\n%v", gotM, expM)
//		}
//	}
//
//	for name, gotM := range abi.Methods {
//		expM, exist := exp.Methods[name]
//		if !exist {
//			t.Errorf("Found extra method %v", name)
//		}
//		if !reflect.DeepEqual(gotM, expM) {
//			t.Errorf("\nGot abi method: \n%v\ndoes not match expected method\n%v", gotM, expM)
//		}
//	}
//}
//
//func TestTestNumbers(t *testing.T) {
//	abi, err := JSON(strings.NewReader(jsondata2))
//	if err != nil {
//		t.Error(err)
//		t.FailNow()
//	}
//
//	if _, err := abi.Pack("balance"); err != nil {
//		t.Error(err)
//	}
//
//	if _, err := abi.Pack("balance", 1); err == nil {
//		t.Error("expected error for balance(1)")
//	}
//
//	if _, err := abi.Pack("doesntexist", nil); err == nil {
//		t.Errorf("doesntexist shouldn't exist")
//	}
//
//	if _, err := abi.Pack("doesntexist", 1); err == nil {
//		t.Errorf("doesntexist(1) shouldn't exist")
//	}
//
//	if _, err := abi.Pack("send", big.NewInt(1000)); err != nil {
//		t.Error(err)
//	}
//
//	i := new(int)
//	*i = 1000
//	if _, err := abi.Pack("send", i); err == nil {
//		t.Errorf("expected send( ptr ) to throw, requires *big.Int instead of *int")
//	}
//
//	if _, err := abi.Pack("test", uint32(1000)); err != nil {
//		t.Error(err)
//	}
//}
//
//func TestTestString(t *testing.T) {
//	abi, err := JSON(strings.NewReader(jsondata2))
//	if err != nil {
//		t.Error(err)
//		t.FailNow()
//	}
//
//	if _, err := abi.Pack("string", "hello world"); err != nil {
//		t.Error(err)
//	}
//}
//
//func TestTestBool(t *testing.T) {
//	abi, err := JSON(strings.NewReader(jsondata2))
//	if err != nil {
//		t.Error(err)
//		t.FailNow()
//	}
//
//	if _, err := abi.Pack("bool", true); err != nil {
//		t.Error(err)
//	}
//}
//
//func TestTestSlice(t *testing.T) {
//	abi, err := JSON(strings.NewReader(jsondata2))
//	if err != nil {
//		t.Error(err)
//		t.FailNow()
//	}
//
//	slice := make([]uint64, 2)
//	if _, err := abi.Pack("uint64[2]", slice); err != nil {
//		t.Error(err)
//	}
//
//	if _, err := abi.Pack("uint64[]", slice); err != nil {
//		t.Error(err)
//	}
//}
//
//func TestMethodSignature(t *testing.T) {
//	String, _ := NewType("string")
//	m := Method{"foo", false, []Argument{{"bar", String, false}, {"baz", String, false}}, nil}
//	exp := "foo(string,string)"
//	if m.Sig() != exp {
//		t.Error("signature mismatch", exp, "!=", m.Sig())
//	}
//
//	idexp := crypto.Keccak256([]byte(exp))[:4]
//	if !bytes.Equal(m.Id(), idexp) {
//		t.Errorf("expected ids to match %x != %x", m.Id(), idexp)
//	}
//
//	uintt, _ := NewType("uint256")
//	m = Method{"foo", false, []Argument{{"bar", uintt, false}}, nil}
//	exp = "foo(uint256)"
//	if m.Sig() != exp {
//		t.Error("signature mismatch", exp, "!=", m.Sig())
//	}
//}
//
//func TestMultiPack(t *testing.T) {
//	abi, err := JSON(strings.NewReader(jsondata2))
//	if err != nil {
//		t.Error(err)
//		t.FailNow()
//	}
//
//	sig := crypto.Keccak256([]byte("bar(uint32,uint16)"))[:4]
//	sig = append(sig, make([]byte, 64)...)
//	sig[35] = 10
//	sig[67] = 11
//
//	packed, err := abi.Pack("bar", uint32(10), uint16(11))
//	if err != nil {
//		t.Error(err)
//		t.FailNow()
//	}
//
//	if !bytes.Equal(packed, sig) {
//		t.Errorf("expected %x got %x", sig, packed)
//	}
//}
//
//func TestGetDeciamlByName_Pack(t *testing.T) {
//	const definition = `[{
//	"constant": false,
//	"inputs": [{
//		"name": "name",
//		"type": "string"
//	}],
//	"name": "getDecimal",
//	"outputs": [{
//		"name": "",
//		"type": "uint8"
//	}],
//	"payable": false,
//	"type": "function"
//	}]`
//	abi, err := JSON(strings.NewReader(definition))
//	if err != nil {
//		log.Fatalln(err)
//	}
//	out, err := abi.Pack("getDecimal", "")
//	if err != nil {
//		log.Fatalln(err)
//	}
//
//	fmt.Printf("%x\n", out)
//}
//
//func TestGetDeciaml_Pack(t *testing.T) {
//	const definition = `[{
//	"constant": true,
//	"inputs": [],
//	"name": "getDecimal",
//	"outputs": [{
//		"name": "",
//		"type": "uint8"
//	}],
//	"payable": false,
//	"type": "function"
//    }]`
//	abi, err := JSON(strings.NewReader(definition))
//	if err != nil {
//		log.Fatalln(err)
//	}
//	out, err := abi.Pack("getDecimal", "")
//	if err != nil {
//		log.Fatalln(err)
//	}
//
//	fmt.Printf("%x\n", out)
//}
//
//func TestDeciaml_Pack(t *testing.T) {
//	const definition = `[{
//	"constant": true,
//	"inputs": [],
//	"name": "decimals",
//	"outputs": [{
//		"name": "",
//		"type": "uint8"
//	}],
//	"payable": false,
//	"type": "function"
//    }]`
//	abi, err := JSON(strings.NewReader(definition))
//	if err != nil {
//		log.Fatalln(err)
//	}
//	out, err := abi.Pack("getDecimal", "")
//	if err != nil {
//		log.Fatalln(err)
//	}
//
//	fmt.Printf("%x\n", out)
//}
//
//func TestABI_Pack(t *testing.T) {
//	const definition = `[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"}],"name":"getDecimal","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getDecimal","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"name","type":"string"},{"name":"symbol","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]`
//	abi, err := JSON(strings.NewReader(definition))
//	if err != nil {
//		log.Fatalln(err)
//	}
//	out, err := abi.Pack("getDecimal")
//	if err != nil {
//		log.Fatalln(err)
//	}
//
//	fmt.Printf("%x\n", out)
//}
//
//func ExampleJSON() {
//	const definition = `[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isBar","outputs":[{"name":"","type":"bool"}],"type":"function"}]`
//
//	abi, err := JSON(strings.NewReader(definition))
//	if err != nil {
//		log.Fatalln(err)
//	}
//	out, err := abi.Pack("isBar", common.Base58ToAddress("01"))
//	if err != nil {
//		log.Fatalln(err)
//	}
//
//	fmt.Printf("%x\n", out)
//	// Output:
//	// 1f2c40920000000000000000000000000000000000000000000000000000000000000001
//}
//
//func TestInputVariableInputLength(t *testing.T) {
//	const definition = `[
//	{ "type" : "function", "name" : "strOne", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" } ] },
//	{ "type" : "function", "name" : "bytesOne", "constant" : true, "inputs" : [ { "name" : "str", "type" : "bytes" } ] },
//	{ "type" : "function", "name" : "strTwo", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" }, { "name" : "str1", "type" : "string" } ] }
//	]`
//
//	abi, err := JSON(strings.NewReader(definition))
//	if err != nil {
//		t.Fatal(err)
//	}
//
//	// test one string
//	strin := "hello world"
//	strpack, err := abi.Pack("strOne", strin)
//	if err != nil {
//		t.Error(err)
//	}
//
//	offset := make([]byte, 32)
//	offset[31] = 32
//	length := make([]byte, 32)
//	length[31] = byte(len(strin))
//	value := common.RightPadBytes([]byte(strin), 32)
//	exp := append(offset, append(length, value...)...)
//
//	// ignore first 4 bytes of the output. This is the function identifier
//	strpack = strpack[4:]
//	if !bytes.Equal(strpack, exp) {
//		t.Errorf("expected %x, got %x\n", exp, strpack)
//	}
//
//	// test one bytes
//	btspack, err := abi.Pack("bytesOne", []byte(strin))
//	if err != nil {
//		t.Error(err)
//	}
//	// ignore first 4 bytes of the output. This is the function identifier
//	btspack = btspack[4:]
//	if !bytes.Equal(btspack, exp) {
//		t.Errorf("expected %x, got %x\n", exp, btspack)
//	}
//
//	//  test two strings
//	str1 := "hello"
//	str2 := "world"
//	str2pack, err := abi.Pack("strTwo", str1, str2)
//	if err != nil {
//		t.Error(err)
//	}
//
//	offset1 := make([]byte, 32)
//	offset1[31] = 64
//	length1 := make([]byte, 32)
//	length1[31] = byte(len(str1))
//	value1 := common.RightPadBytes([]byte(str1), 32)
//
//	offset2 := make([]byte, 32)
//	offset2[31] = 128
//	length2 := make([]byte, 32)
//	length2[31] = byte(len(str2))
//	value2 := common.RightPadBytes([]byte(str2), 32)
//
//	exp2 := append(offset1, offset2...)
//	exp2 = append(exp2, append(length1, value1...)...)
//	exp2 = append(exp2, append(length2, value2...)...)
//
//	// ignore first 4 bytes of the output. This is the function identifier
//	str2pack = str2pack[4:]
//	if !bytes.Equal(str2pack, exp2) {
//		t.Errorf("expected %x, got %x\n", exp, str2pack)
//	}
//
//	// test two strings, first > 32, second < 32
//	str1 = strings.Repeat("a", 33)
//	str2pack, err = abi.Pack("strTwo", str1, str2)
//	if err != nil {
//		t.Error(err)
//	}
//
//	offset1 = make([]byte, 32)
//	offset1[31] = 64
//	length1 = make([]byte, 32)
//	length1[31] = byte(len(str1))
//	value1 = common.RightPadBytes([]byte(str1), 64)
//	offset2[31] = 160
//
//	exp2 = append(offset1, offset2...)
//	exp2 = append(exp2, append(length1, value1...)...)
//	exp2 = append(exp2, append(length2, value2...)...)
//
//	// ignore first 4 bytes of the output. This is the function identifier
//	str2pack = str2pack[4:]
//	if !bytes.Equal(str2pack, exp2) {
//		t.Errorf("expected %x, got %x\n", exp, str2pack)
//	}
//
//	// test two strings, first > 32, second >32
//	str1 = strings.Repeat("a", 33)
//	str2 = strings.Repeat("a", 33)
//	str2pack, err = abi.Pack("strTwo", str1, str2)
//	if err != nil {
//		t.Error(err)
//	}
//
//	offset1 = make([]byte, 32)
//	offset1[31] = 64
//	length1 = make([]byte, 32)
//	length1[31] = byte(len(str1))
//	value1 = common.RightPadBytes([]byte(str1), 64)
//
//	offset2 = make([]byte, 32)
//	offset2[31] = 160
//	length2 = make([]byte, 32)
//	length2[31] = byte(len(str2))
//	value2 = common.RightPadBytes([]byte(str2), 64)
//
//	exp2 = append(offset1, offset2...)
//	exp2 = append(exp2, append(length1, value1...)...)
//	exp2 = append(exp2, append(length2, value2...)...)
//
//	// ignore first 4 bytes of the output. This is the function identifier
//	str2pack = str2pack[4:]
//	if !bytes.Equal(str2pack, exp2) {
//		t.Errorf("expected %x, got %x\n", exp, str2pack)
//	}
//}
//
//func TestInputFixedArrayAndVariableInputLength(t *testing.T) {
//	const definition = `[
//	{ "type" : "function", "name" : "fixedArrStr", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" }, { "name" : "fixedArr", "type" : "uint256[2]" } ] },
//	{ "type" : "function", "name" : "fixedArrBytes", "constant" : true, "inputs" : [ { "name" : "str", "type" : "bytes" }, { "name" : "fixedArr", "type" : "uint256[2]" } ] },
//    { "type" : "function", "name" : "mixedArrStr", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" }, { "name" : "fixedArr", "type": "uint256[2]" }, { "name" : "dynArr", "type": "uint256[]" } ] },
//    { "type" : "function", "name" : "doubleFixedArrStr", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" }, { "name" : "fixedArr1", "type": "uint256[2]" }, { "name" : "fixedArr2", "type": "uint256[3]" } ] },
//    { "type" : "function", "name" : "multipleMixedArrStr", "constant" : true, "inputs" : [ { "name" : "str", "type" : "string" }, { "name" : "fixedArr1", "type": "uint256[2]" }, { "name" : "dynArr", "type" : "uint256[]" }, { "name" : "fixedArr2", "type" : "uint256[3]" } ] }
//	]`
//
//	abi, err := JSON(strings.NewReader(definition))
//	if err != nil {
//		t.Error(err)
//	}
//
//	// test string, fixed array uint256[2]
//	strin := "hello world"
//	arrin := [2]*big.Int{big.NewInt(1), big.NewInt(2)}
//	fixedArrStrPack, err := abi.Pack("fixedArrStr", strin, arrin)
//	if err != nil {
//		t.Error(err)
//	}
//
//	// generate expected output
//	offset := make([]byte, 32)
//	offset[31] = 96
//	length := make([]byte, 32)
//	length[31] = byte(len(strin))
//	strvalue := common.RightPadBytes([]byte(strin), 32)
//	arrinvalue1 := common.LeftPadBytes(arrin[0].Bytes(), 32)
//	arrinvalue2 := common.LeftPadBytes(arrin[1].Bytes(), 32)
//	exp := append(offset, arrinvalue1...)
//	exp = append(exp, arrinvalue2...)
//	exp = append(exp, append(length, strvalue...)...)
//
//	// ignore first 4 bytes of the output. This is the function identifier
//	fixedArrStrPack = fixedArrStrPack[4:]
//	if !bytes.Equal(fixedArrStrPack, exp) {
//		t.Errorf("expected %x, got %x\n", exp, fixedArrStrPack)
//	}
//
//	// test byte array, fixed array uint256[2]
//	bytesin := []byte(strin)
//	arrin = [2]*big.Int{big.NewInt(1), big.NewInt(2)}
//	fixedArrBytesPack, err := abi.Pack("fixedArrBytes", bytesin, arrin)
//	if err != nil {
//		t.Error(err)
//	}
//
//	// generate expected output
//	offset = make([]byte, 32)
//	offset[31] = 96
//	length = make([]byte, 32)
//	length[31] = byte(len(strin))
//	strvalue = common.RightPadBytes([]byte(strin), 32)
//	arrinvalue1 = common.LeftPadBytes(arrin[0].Bytes(), 32)
//	arrinvalue2 = common.LeftPadBytes(arrin[1].Bytes(), 32)
//	exp = append(offset, arrinvalue1...)
//	exp = append(exp, arrinvalue2...)
//	exp = append(exp, append(length, strvalue...)...)
//
//	// ignore first 4 bytes of the output. This is the function identifier
//	fixedArrBytesPack = fixedArrBytesPack[4:]
//	if !bytes.Equal(fixedArrBytesPack, exp) {
//		t.Errorf("expected %x, got %x\n", exp, fixedArrBytesPack)
//	}
//
//	// test string, fixed array uint256[2], dynamic array uint256[]
//	strin = "hello world"
//	fixedarrin := [2]*big.Int{big.NewInt(1), big.NewInt(2)}
//	dynarrin := []*big.Int{big.NewInt(1), big.NewInt(2), big.NewInt(3)}
//	mixedArrStrPack, err := abi.Pack("mixedArrStr", strin, fixedarrin, dynarrin)
//	if err != nil {
//		t.Error(err)
//	}
//
//	// generate expected output
//	stroffset := make([]byte, 32)
//	stroffset[31] = 128
//	strlength := make([]byte, 32)
//	strlength[31] = byte(len(strin))
//	strvalue = common.RightPadBytes([]byte(strin), 32)
//	fixedarrinvalue1 := common.LeftPadBytes(fixedarrin[0].Bytes(), 32)
//	fixedarrinvalue2 := common.LeftPadBytes(fixedarrin[1].Bytes(), 32)
//	dynarroffset := make([]byte, 32)
//	dynarroffset[31] = byte(160 + ((len(strin)/32)+1)*32)
//	dynarrlength := make([]byte, 32)
//	dynarrlength[31] = byte(len(dynarrin))
//	dynarrinvalue1 := common.LeftPadBytes(dynarrin[0].Bytes(), 32)
//	dynarrinvalue2 := common.LeftPadBytes(dynarrin[1].Bytes(), 32)
//	dynarrinvalue3 := common.LeftPadBytes(dynarrin[2].Bytes(), 32)
//	exp = append(stroffset, fixedarrinvalue1...)
//	exp = append(exp, fixedarrinvalue2...)
//	exp = append(exp, dynarroffset...)
//	exp = append(exp, append(strlength, strvalue...)...)
//	dynarrarg := append(dynarrlength, dynarrinvalue1...)
//	dynarrarg = append(dynarrarg, dynarrinvalue2...)
//	dynarrarg = append(dynarrarg, dynarrinvalue3...)
//	exp = append(exp, dynarrarg...)
//
//	// ignore first 4 bytes of the output. This is the function identifier
//	mixedArrStrPack = mixedArrStrPack[4:]
//	if !bytes.Equal(mixedArrStrPack, exp) {
//		t.Errorf("expected %x, got %x\n", exp, mixedArrStrPack)
//	}
//
//	// test string, fixed array uint256[2], fixed array uint256[3]
//	strin = "hello world"
//	fixedarrin1 := [2]*big.Int{big.NewInt(1), big.NewInt(2)}
//	fixedarrin2 := [3]*big.Int{big.NewInt(1), big.NewInt(2), big.NewInt(3)}
//	doubleFixedArrStrPack, err := abi.Pack("doubleFixedArrStr", strin, fixedarrin1, fixedarrin2)
//	if err != nil {
//		t.Error(err)
//	}
//
//	// generate expected output
//	stroffset = make([]byte, 32)
//	stroffset[31] = 192
//	strlength = make([]byte, 32)
//	strlength[31] = byte(len(strin))
//	strvalue = common.RightPadBytes([]byte(strin), 32)
//	fixedarrin1value1 := common.LeftPadBytes(fixedarrin1[0].Bytes(), 32)
//	fixedarrin1value2 := common.LeftPadBytes(fixedarrin1[1].Bytes(), 32)
//	fixedarrin2value1 := common.LeftPadBytes(fixedarrin2[0].Bytes(), 32)
//	fixedarrin2value2 := common.LeftPadBytes(fixedarrin2[1].Bytes(), 32)
//	fixedarrin2value3 := common.LeftPadBytes(fixedarrin2[2].Bytes(), 32)
//	exp = append(stroffset, fixedarrin1value1...)
//	exp = append(exp, fixedarrin1value2...)
//	exp = append(exp, fixedarrin2value1...)
//	exp = append(exp, fixedarrin2value2...)
//	exp = append(exp, fixedarrin2value3...)
//	exp = append(exp, append(strlength, strvalue...)...)
//
//	// ignore first 4 bytes of the output. This is the function identifier
//	doubleFixedArrStrPack = doubleFixedArrStrPack[4:]
//	if !bytes.Equal(doubleFixedArrStrPack, exp) {
//		t.Errorf("expected %x, got %x\n", exp, doubleFixedArrStrPack)
//	}
//
//	// test string, fixed array uint256[2], dynamic array uint256[], fixed array uint256[3]
//	strin = "hello world"
//	fixedarrin1 = [2]*big.Int{big.NewInt(1), big.NewInt(2)}
//	dynarrin = []*big.Int{big.NewInt(1), big.NewInt(2)}
//	fixedarrin2 = [3]*big.Int{big.NewInt(1), big.NewInt(2), big.NewInt(3)}
//	multipleMixedArrStrPack, err := abi.Pack("multipleMixedArrStr", strin, fixedarrin1, dynarrin, fixedarrin2)
//	if err != nil {
//		t.Error(err)
//	}
//
//	// generate expected output
//	stroffset = make([]byte, 32)
//	stroffset[31] = 224
//	strlength = make([]byte, 32)
//	strlength[31] = byte(len(strin))
//	strvalue = common.RightPadBytes([]byte(strin), 32)
//	fixedarrin1value1 = common.LeftPadBytes(fixedarrin1[0].Bytes(), 32)
//	fixedarrin1value2 = common.LeftPadBytes(fixedarrin1[1].Bytes(), 32)
//	dynarroffset = U256(big.NewInt(int64(256 + ((len(strin)/32)+1)*32)))
//	dynarrlength = make([]byte, 32)
//	dynarrlength[31] = byte(len(dynarrin))
//	dynarrinvalue1 = common.LeftPadBytes(dynarrin[0].Bytes(), 32)
//	dynarrinvalue2 = common.LeftPadBytes(dynarrin[1].Bytes(), 32)
//	fixedarrin2value1 = common.LeftPadBytes(fixedarrin2[0].Bytes(), 32)
//	fixedarrin2value2 = common.LeftPadBytes(fixedarrin2[1].Bytes(), 32)
//	fixedarrin2value3 = common.LeftPadBytes(fixedarrin2[2].Bytes(), 32)
//	exp = append(stroffset, fixedarrin1value1...)
//	exp = append(exp, fixedarrin1value2...)
//	exp = append(exp, dynarroffset...)
//	exp = append(exp, fixedarrin2value1...)
//	exp = append(exp, fixedarrin2value2...)
//	exp = append(exp, fixedarrin2value3...)
//	exp = append(exp, append(strlength, strvalue...)...)
//	dynarrarg = append(dynarrlength, dynarrinvalue1...)
//	dynarrarg = append(dynarrarg, dynarrinvalue2...)
//	exp = append(exp, dynarrarg...)
//
//	// ignore first 4 bytes of the output. This is the function identifier
//	multipleMixedArrStrPack = multipleMixedArrStrPack[4:]
//	if !bytes.Equal(multipleMixedArrStrPack, exp) {
//		t.Errorf("expected %x, got %x\n", exp, multipleMixedArrStrPack)
//	}
//}
//
//func TestDefaultFunctionParsing(t *testing.T) {
//	const definition = `[{ "name" : "balance" }]`
//
//	abi, err := JSON(strings.NewReader(definition))
//	if err != nil {
//		t.Fatal(err)
//	}
//
//	if _, ok := abi.Methods["balance"]; !ok {
//		t.Error("expected 'balance' to be present")
//	}
//}
//
//func TestBareEvents(t *testing.T) {
//	const definition = `[
//	{ "type" : "event", "name" : "balance" },
//	{ "type" : "event", "name" : "anon", "anonymous" : true},
//	{ "type" : "event", "name" : "args", "inputs" : [{ "indexed":false, "name":"arg0", "type":"uint256" }, { "indexed":true, "name":"arg1", "type":"address" }] }
//	]`
//
//	arg0, _ := NewType("uint256")
//	arg1, _ := NewType("address")
//
//	expectedEvents := map[string]struct {
//		Anonymous bool
//		Args      []Argument
//	}{
//		"balance": {false, nil},
//		"anon":    {true, nil},
//		"args": {false, []Argument{
//			{Name: "arg0", Type: arg0, Indexed: false},
//			{Name: "arg1", Type: arg1, Indexed: true},
//		}},
//	}
//
//	abi, err := JSON(strings.NewReader(definition))
//	if err != nil {
//		t.Fatal(err)
//	}
//
//	if len(abi.Events) != len(expectedEvents) {
//		t.Fatalf("invalid number of events after parsing, want %d, got %d", len(expectedEvents), len(abi.Events))
//	}
//
//	for name, exp := range expectedEvents {
//		got, ok := abi.Events[name]
//		if !ok {
//			t.Errorf("could not found event %s", name)
//			continue
//		}
//		if got.Anonymous != exp.Anonymous {
//			t.Errorf("invalid anonymous indication for event %s, want %v, got %v", name, exp.Anonymous, got.Anonymous)
//		}
//		if len(got.Inputs) != len(exp.Args) {
//			t.Errorf("invalid number of args, want %d, got %d", len(exp.Args), len(got.Inputs))
//			continue
//		}
//		for i, arg := range exp.Args {
//			if arg.Name != got.Inputs[i].Name {
//				t.Errorf("events[%s].Input[%d] has an invalid name, want %s, got %s", name, i, arg.Name, got.Inputs[i].Name)
//			}
//			if arg.Indexed != got.Inputs[i].Indexed {
//				t.Errorf("events[%s].Input[%d] has an invalid indexed indication, want %v, got %v", name, i, arg.Indexed, got.Inputs[i].Indexed)
//			}
//			if arg.Type.T != got.Inputs[i].Type.T {
//				t.Errorf("events[%s].Input[%d] has an invalid type, want %x, got %x", name, i, arg.Type.T, got.Inputs[i].Type.T)
//			}
//		}
//	}
//}
//
//// TestUnpackEvent is based on this contract:
////    contract T {
////      event received(address sender, uint amount, bytes memo);
////      event receivedAddr(address sender);
////      function receive(bytes memo) external payable {
////        received(msg.sender, msg.value, memo);
////        receivedAddr(msg.sender);
////      }
////    }
//// When receive("X") is called with sender 0x00... and value 1, it produces this tx receipt:
////   receipt{status=1 cgas=23949 bloom=00000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000040200000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 logs=[log: b6818c8064f645cd82d99b59a1a267d6d61117ef [75fd880d39c1daf53b6547ab6cb59451fc6452d27caa90e5b6649dd8293b9eed] 000000000000000000000000376c47978271565f56deb45495afa69e59c16ab200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000158 9ae378b6d4409eada347a5dc0c180f186cb62dc68fcc0f043425eb917335aa28 0 95d429d309bb9d753954195fe2d69bd140b4ae731b9b5b605c34323de162cf00 0]}
//func TestUnpackEvent(t *testing.T) {
//	const abiJSON = `[{"constant":false,"inputs":[{"name":"memo","type":"bytes"}],"name":"receive","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"memo","type":"bytes"}],"name":"received","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"}],"name":"receivedAddr","type":"event"}]`
//	abi, err := JSON(strings.NewReader(abiJSON))
//	if err != nil {
//		t.Fatal(err)
//	}
//
//	const hexdata = `000000000000000000000000376c47978271565f56deb45495afa69e59c16ab200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000158`
//	data, err := hex.DecodeString(hexdata)
//	if err != nil {
//		t.Fatal(err)
//	}
//	if len(data)%32 == 0 {
//		t.Errorf("len(data) is %d, want a non-multiple of 32", len(data))
//	}
//
//	type ReceivedEvent struct {
//		Address common.Address
//		Amount  *big.Int
//		Memo    []byte
//	}
//	var ev ReceivedEvent
//
//	err = abi.Unpack(&ev, "received", data)
//	if err != nil {
//		t.Error(err)
//	} else {
//		t.Logf("len(data): %d; received event: %+v", len(data), ev)
//	}
//
//	ev2 := make([]interface{}, 3)
//	err = abi.Unpack(&ev2, "received", data)
//	if err != nil {
//		t.Error(err)
//	} else {
//		t.Logf("len(data): %d; received event: %+v", len(data), ev2)
//	}
//
//	type ReceivedAddrEvent struct {
//		Address common.Address
//	}
//	var receivedAddrEv ReceivedAddrEvent
//	err = abi.Unpack(&receivedAddrEv, "receivedAddr", data)
//	if err != nil {
//		t.Error(err)
//	} else {
//		t.Logf("len(data): %d; received event: %+v", len(data), receivedAddrEv)
//	}
//}
//
//func TestABI_MethodById(t *testing.T) {
//	const abiJSON = `[
//		{"type":"function","name":"receive","constant":false,"inputs":[{"name":"memo","type":"bytes"}],"outputs":[],"payable":true,"stateMutability":"payable"},
//		{"type":"event","name":"received","anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"memo","type":"bytes"}]},
//		{"type":"function","name":"fixedArrStr","constant":true,"inputs":[{"name":"str","type":"string"},{"name":"fixedArr","type":"uint256[2]"}]},
//		{"type":"function","name":"fixedArrBytes","constant":true,"inputs":[{"name":"str","type":"bytes"},{"name":"fixedArr","type":"uint256[2]"}]},
//		{"type":"function","name":"mixedArrStr","constant":true,"inputs":[{"name":"str","type":"string"},{"name":"fixedArr","type":"uint256[2]"},{"name":"dynArr","type":"uint256[]"}]},
//		{"type":"function","name":"doubleFixedArrStr","constant":true,"inputs":[{"name":"str","type":"string"},{"name":"fixedArr1","type":"uint256[2]"},{"name":"fixedArr2","type":"uint256[3]"}]},
//		{"type":"function","name":"multipleMixedArrStr","constant":true,"inputs":[{"name":"str","type":"string"},{"name":"fixedArr1","type":"uint256[2]"},{"name":"dynArr","type":"uint256[]"},{"name":"fixedArr2","type":"uint256[3]"}]},
//		{"type":"function","name":"balance","constant":true},
//		{"type":"function","name":"send","constant":false,"inputs":[{"name":"amount","type":"uint256"}]},
//		{"type":"function","name":"test","constant":false,"inputs":[{"name":"number","type":"uint32"}]},
//		{"type":"function","name":"string","constant":false,"inputs":[{"name":"inputs","type":"string"}]},
//		{"type":"function","name":"bool","constant":false,"inputs":[{"name":"inputs","type":"bool"}]},
//		{"type":"function","name":"address","constant":false,"inputs":[{"name":"inputs","type":"address"}]},
//		{"type":"function","name":"uint64[2]","constant":false,"inputs":[{"name":"inputs","type":"uint64[2]"}]},
//		{"type":"function","name":"uint64[]","constant":false,"inputs":[{"name":"inputs","type":"uint64[]"}]},
//		{"type":"function","name":"foo","constant":false,"inputs":[{"name":"inputs","type":"uint32"}]},
//		{"type":"function","name":"bar","constant":false,"inputs":[{"name":"inputs","type":"uint32"},{"name":"string","type":"uint16"}]},
//		{"type":"function","name":"_slice","constant":false,"inputs":[{"name":"inputs","type":"uint32[2]"}]},
//		{"type":"function","name":"__slice256","constant":false,"inputs":[{"name":"inputs","type":"uint256[2]"}]},
//		{"type":"function","name":"sliceAddress","constant":false,"inputs":[{"name":"inputs","type":"address[]"}]},
//		{"type":"function","name":"sliceMultiAddress","constant":false,"inputs":[{"name":"a","type":"address[]"},{"name":"b","type":"address[]"}]}
//	]
//`
//	abi, err := JSON(strings.NewReader(abiJSON))
//	if err != nil {
//		t.Fatal(err)
//	}
//	for name, m := range abi.Methods {
//		a := fmt.Sprintf("%v", m)
//		m2, err := abi.MethodById(m.Id())
//		if err != nil {
//			t.Fatalf("Failed to look up ABI method: %v", err)
//		}
//		b := fmt.Sprintf("%v", m2)
//		if a != b {
//			t.Errorf("Method %v (id %v) not 'findable' by id in ABI", name, common.ToHex(m.Id()))
//		}
//	}
//
//}


================================================
FILE: accounts/abi/argument.go
================================================
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

package abi

import (
	"encoding/json"
	"fmt"
	"math/big"
	"reflect"
	"strings"

	"github.com/sero-cash/go-sero/common/math"

	"github.com/sero-cash/go-czero-import/c_type"
)

// Argument holds the name of the argument and the corresponding type.
// Types are used when packing and testing arguments.
type Argument struct {
	Name    string
	Type    Type
	Indexed bool // indexed is only used by events
}

type Arguments []Argument

type ArgumentMarshaling struct {
	Name         string
	Type         string
	InternalType string
	Components   []ArgumentMarshaling
	Indexed      bool
}

// UnmarshalJSON implements json.Unmarshaler interface
func (argument *Argument) UnmarshalJSON(data []byte) error {
	var arg ArgumentMarshaling
	err := json.Unmarshal(data, &arg)
	if err != nil {
		return fmt.Errorf("argument json err: %v", err)
	}

	argument.Type, err = NewType(arg.Type, arg.InternalType, arg.Components)
	if err != nil {
		return err
	}
	argument.Name = arg.Name
	argument.Indexed = arg.Indexed

	return nil
}

// LengthNonIndexed returns the number of arguments when not counting 'indexed' ones. Only events
// can ever have 'indexed' arguments, it should always be false on arguments for method input/output
func (arguments Arguments) LengthNonIndexed() int {
	out := 0
	for _, arg := range arguments {
		if !arg.Indexed {
			out++
		}
	}
	return out
}

// NonIndexed returns the arguments with indexed arguments filtered out
func (arguments Arguments) NonIndexed() Arguments {
	var ret []Argument
	for _, arg := range arguments {
		if !arg.Indexed {
			ret = append(ret, arg)
		}
	}
	return ret
}

// isTuple returns true for non-atomic constructs, like (uint,uint) or uint[]
func (arguments Arguments) isTuple() bool {
	return len(arguments) > 1
}

// Unpack performs the operation hexdata -> Go format
func (arguments Arguments) Unpack(v interface{}, data []byte) error {

	// make sure the passed value is arguments pointer
	if reflect.Ptr != reflect.ValueOf(v).Kind() {
		return fmt.Errorf("abi: Unpack(non-pointer %T)", v)
	}
	marshalledValues, err := arguments.UnpackValues(data)
	if err != nil {
		return err
	}

	if len(marshalledValues) == 0 {
		return fmt.Errorf("abi: Unpack(no-values unmarshalled %T)", v)
	}

	if arguments.isTuple() {
		return arguments.unpackTuple(v, marshalledValues)
	}
	return arguments.unpackAtomic(v, marshalledValues[0])
}

// UnpackIntoMap performs the operation hexdata -> mapping of argument name to argument value
func (arguments Arguments) UnpackIntoMap(v map[string]interface{}, data []byte) error {
	marshalledValues, err := arguments.UnpackValues(data)
	if err != nil {
		return err
	}

	return arguments.unpackIntoMap(v, marshalledValues)
}

// unpackIntoMap unpacks marshalledValues into the provided map[string]interface{}
func (arguments Arguments) unpackIntoMap(v map[string]interface{}, marshalledValues []interface{}) error {
	// Make sure map is not nil
	if v == nil {
		return fmt.Errorf("abi: cannot unpack into a nil map")
	}

	for i, arg := range arguments.NonIndexed() {
		v[arg.Name] = marshalledValues[i]
	}
	return nil
}

// unpackTuple unpacks ( hexdata -> go ) a batch of values.
func (arguments Arguments) unpackTuple(v interface{}, marshalledValues []interface{}) error {
	value := reflect.ValueOf(v).Elem()
	nonIndexedArgs := arguments.NonIndexed()

	switch value.Kind() {
	case reflect.Struct:
		argNames := make([]string, len(nonIndexedArgs))
		for i, arg := range nonIndexedArgs {
			argNames[i] = arg.Name
		}
		var err error
		abi2struct, err := mapArgNamesToStructFields(argNames, value)
		if err != nil {
			return err
		}
		for i, arg := range nonIndexedArgs {
			field := value.FieldByName(abi2struct[arg.Name])
			if !field.IsValid() {
				return fmt.Errorf("abi: field %s can't be found in the given value", arg.Name)
			}
			if err := set(field, reflect.ValueOf(marshalledValues[i])); err != nil {
				return err
			}
		}
	case reflect.Slice, reflect.Array:
		if value.Len() < len(marshalledValues) {
			return fmt.Errorf("abi: insufficient number of arguments for unpack, want %d, got %d", len(arguments), value.Len())
		}
		for i := range nonIndexedArgs {
			if err := set(value.Index(i), reflect.ValueOf(marshalledValues[i])); err != nil {
				return err
			}
		}
	default:
		return fmt.Errorf("abi:[2] cannot unmarshal tuple in to %v", value.Type())
	}
	return nil
}

// unpackAtomic unpacks ( hexdata -> go ) a single value
func (arguments Arguments) unpackAtomic(v interface{}, marshalledValues interface{}) error {
	dst := reflect.ValueOf(v).Elem()
	src := reflect.ValueOf(marshalledValues)

	if dst.Kind() == reflect.Struct && src.Kind() != reflect.Struct {
		return set(dst.Field(0), src)
	}
	return set(dst, src)
}

// Computes the full size of an array;
// i.e. counting nested arrays, which count towards size for unpacking.
func getArraySize(arr *Type) int {
	size := arr.Size
	// Arrays can be nested, with each element being the same size
	arr = arr.Elem
	for arr.T == ArrayTy {
		// Keep multiplying by elem.Size while the elem is an array.
		size *= arr.Size
		arr = arr.Elem
	}
	// Now we have the full array size, including its children.
	return size
}

// UnpackValues can be used to unpack ABI-encoded hexdata according to the ABI-specification,
// without supplying a struct to unpack into. Instead, this method returns a list containing the
// values. An atomic argument will be a list with one element.
func (arguments Arguments) UnpackValues(data []byte) ([]interface{}, error) {
	retval := make([]interface{}, 0, arguments.LengthNonIndexed())
	virtualArgs := 0
	for index, arg := range arguments.NonIndexed() {
		marshalledValue, err := toGoType((index+virtualArgs)*32, arg.Type, data)
		if arg.Type.T == ArrayTy {
			// If we have a static array, like [3]uint256, these are coded as
			// just like uint256,uint256,uint256.
			// This means that we need to add two 'virtual' arguments when
			// we count the index from now on.
			//
			// Array values nested multiple levels deep are also encoded inline:
			// [2][3]uint256: uint256,uint256,uint256,uint256,uint256,uint256
			//
			// Calculate the full array size to get the correct offset for the next argument.
			// Decrement it by 1, as the normal index increment is still applied.
			virtualArgs += getArraySize(&arg.Type) - 1
		}
		if err != nil {
			return nil, err
		}
		retval = append(retval, marshalledValue)
	}
	return retval, nil
}

// PackValues performs the operation Go format -> Hexdata
// It is the semantic opposite of UnpackValues
func (arguments Arguments) PackValues(args []interface{}) ([]byte, error) {
	return arguments.Pack(args...)
}

func (arguments Arguments) PackPrefix(args ...interface{}) ([]byte, error) {
	abiArgs := arguments
	if len(args) != len(abiArgs) {
		return nil, fmt.Errorf("argument count mismatch: %d for %d", len(args), len(abiArgs))
	}
	var result []c_type.PKr
	for i, a := range args {
		input := abiArgs[i]
		// pack the input
		pkrs, err := input.Type.getAllAddress(reflect.ValueOf(a))
		if err != nil {
			return nil, err
		}
		result = append(result, pkrs...)
	}
	var ret []byte
	lenBytes := math.PaddedBigBytes(big.NewInt(int64(len(result))), 2)
	ret = append(ret, lenBytes...)
	for _, pkr := range result {
		ret = append(ret, pkr[:]...)
	}
	return ret, nil

}

// Pack performs the operation Go format -> Hexdata
func (arguments Arguments) Pack(args ...interface{}) ([]byte, error) {
	// Make sure arguments match up and pack them
	abiArgs := arguments
	if len(args) != len(abiArgs) {
		return nil, fmt.Errorf("argument count mismatch: %d for %d", len(args), len(abiArgs))
	}
	// variable input is the output appended at the end of packed
	// output. This is used for strings and bytes types input.
	var variableInput []byte

	// input offset is the bytes offset for packed output
	inputOffset := 0
	for _, abiArg := range abiArgs {
		if abiArg.Type.T == ArrayTy {
			inputOffset += 32 * abiArg.Type.Size
		} else {
			inputOffset += 32
		}
	}
	var ret []byte
	for i, a := range args {
		input := abiArgs[i]
		// pack the input
		packed, err := input.Type.pack(reflect.ValueOf(a))
		if err != nil {
			return nil, err
		}
		// check for a slice type (string, bytes, slice)
		if input.Type.requiresLengthPrefix() {
			// calculate the offset
			offset := inputOffset + len(variableInput)
			// set the offset
			ret = append(ret, packNum(reflect.ValueOf(offset))...)
			// Append the packed output to the variable input. The variable input
			// will be appended at the end of the input.
			variableInput = append(variableInput, packed...)
		} else {
			// append the packed value to the input
			ret = append(ret, packed...)
		}
	}
	// append the variable input at the end of the packed input
	ret = append(ret, variableInput...)

	return ret, nil
}

// capitalise makes the first character of a string upper case, also removing any
// prefixing underscores from the variable names.
func capitalise(input string) string {
	for len(input) > 0 && input[0] == '_' {
		input = input[1:]
	}
	if len(input) == 0 {
		return ""
	}
	return strings.ToUpper(input[:1]) + input[1:]
}

// ToCamelCase converts an under-score string to a camel-case string
func ToCamelCase(input string) string {
	parts := strings.Split(input, "_")
	for i, s := range parts {
		if len(s) > 0 {
			parts[i] = strings.ToUpper(s[:1]) + s[1:]
		}
	}
	return strings.Join(parts, "")
}


================================================
FILE: accounts/abi/bind/auth.go
================================================
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

package bind

import (
	"encoding/binary"
	"io"
	"io/ioutil"
	"math/big"

	"github.com/sero-cash/go-sero/zero/txtool"
	"github.com/sero-cash/go-sero/zero/txtool/flight"

	"github.com/sero-cash/go-czero-import/superzk"

	"github.com/sero-cash/go-czero-import/c_type"

	"github.com/sero-cash/go-sero/accounts/keystore"
	"github.com/sero-cash/go-sero/crypto"
)

// NewTransactor is a utility method to easily create a transaction signer from
// an encrypted json key stream and the associated passphrase.
func NewTransactor(keyin io.Reader, passphrase string, value *big.Int) (*TransactOpts, error) {
	superzk.ZeroInit_NoCircuit()
	json, err := ioutil.ReadAll(keyin)
	if err != nil {
		return nil, err
	}
	key, err := keystore.DecryptKey(json, passphrase)
	if err != nil {
		return nil, err
	}
	fromPkr := GetMainPkr(key)

	return NewKeyedTransactor(key, fromPkr, value), nil
}

func encodeNumber(number uint64) []byte {
	enc := make([]byte, 8)
	binary.BigEndian.PutUint64(enc, number)
	return enc
}

func GetMainPkr(key *keystore.Key) c_type.PKr {

	salt := encodeNumber(1)
	//log.Info("GenIndexPKr", "salt", hexutil.Encode(salt))
	random := append(key.Tk[:], salt...)
	r := crypto.Keccak256Hash(random).HashToUint256()
	pk := key.Address.ToUint512()
	return superzk.Pk2PKr(&pk, r)
}

// NewKeyedTransactor is a utility method to easily create a transaction signer
// from a single private key.
func NewKeyedTransactor(key *keystore.Key, refundTo c_type.PKr, value *big.Int) *TransactOpts {
	tk := crypto.PrivkeyToTk(key.PrivateKey, key.Version)
	return &TransactOpts{
		From:    tk.ToPk(),
		FromPKr: refundTo,
		Value:   value,
		Encrypter: func(txParam *txtool.GTxParam) (*txtool.GTx, error) {
			priKey := crypto.FromECDSA(key.PrivateKey)
			var seed c_type.Uint256
			copy(seed[:], priKey[:])
			sk := superzk.Seed2Sk(&seed, key.Version)
			gtx, err := flight.SignTx(&sk, txParam)
			if err != nil {
				return nil, err
			}
			return &gtx, nil
		},
	}
}


================================================
FILE: accounts/abi/bind/backend.go
================================================
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

package bind

import (
	"context"
	"errors"
	"math/big"

	sero "github.com/sero-cash/go-sero"
	"github.com/sero-cash/go-sero/zero/txtool"

	"github.com/sero-cash/go-sero/common"
	"github.com/sero-cash/go-sero/core/types"
)

var (
	// ErrNoCode is returned by call and transact operations for which the requested
	// recipient contract to operate on does not exist in the state db or does not
	// have any code associated with it (i.e. suicided).
	ErrNoCode = errors.New("no contract code at given address")

	// This error is raised when attempting to perform a pending state action
	// on a backend that doesn't implement PendingContractCaller.
	ErrNoPendingState = errors.New("backend does not support pending state")

	// This error is returned by WaitDeployed if contract creation leaves an
	// empty contract behind.
	ErrNoCodeAfterDeploy = errors.New("no contract code after deployment")
)

// ContractCaller defines the methods needed to allow operating with contract on a read
// only basis.
type ContractCaller interface {
	// CodeAt returns the code of the given account. This is needed to differentiate
	// between contract internal errors and the local chain being out of sync.
	CodeAt(ctx context.Context, contract common.Address, blockNumber *big.Int) ([]byte, error)
	// ContractCall executes an Ethereum contract call with the specified data as the
	// input.
	CallContract(ctx context.Context, call sero.CallMsg, blockNumber *big.Int) ([]byte, error)
}

// PendingContractCaller defines methods to perform contract calls on the pending state.
// Call will try to discover this interface when access to the pending state is requested.
// If the backend does not support the pending state, Call returns ErrNoPendingState.
type PendingContractCaller interface {
	// PendingCodeAt returns the code of the given account in the pending state.
	PendingCodeAt(ctx context.Context, contract common.Address) ([]byte, error)
	// PendingCallContract executes an Ethereum contract call against the pending state.
	PendingCallContract(ctx context.Context, call sero.CallMsg) ([]byte, error)
}

// ContractTransactor defines the methods needed to allow operating with contract
// on a write only basis. Beside the transacting method, the remainder are helpers
// used when the user does not provide some needed values, but rather leaves it up
// to the transactor to decide.
type ContractTransactor interface {
	// PendingCodeAt returns the code of the given account in the pending state.
	PendingCodeAt(ctx context.Context, account common.Address) ([]byte, error)
	// PendingNonceAt retrieves the current pending nonce associated with an account.
	//PendingNonceAt(ctx context.Context, account common.Data) (uint64, error)
	// SuggestGasPrice retrieves the currently suggested gas price to allow a timely
	// execution of a transaction.
	SuggestGasPrice(ctx context.Context) (*big.Int, error)
	// EstimateGas tries to estimate the gas needed to execute a specific
	// transaction based on the current pending state of the backend blockchain.
	// There is no guarantee that this is the true gas limit requirement as other
	// transactions may be added or removed by miners, but it should provide a basis
	// for setting a reasonable default.
	EstimateGas(ctx context.Context, call sero.CallMsg) (gas uint64, err error)

	GenContractTx(ctx context.Context, msg sero.CallMsg) (*txtool.GTxParam, error)

	CommitTx(ctx context.Context, arg *txtool.GTx) error
}

// ContractFilterer defines the methods needed to access log events using one-off
// queries or continuous event subscriptions.
type ContractFilterer interface {
	// FilterLogs executes a log filter operation, blocking during execution and
	// returning all the results in one batch.
	//
	// TODO(karalabe): Deprecate when the subscription one can return past data too.
	FilterLogs(ctx context.Context, query sero.FilterQuery) ([]types.Log, error)

	// SubscribeFilterLogs creates a background log filtering operation, returning
	// a subscription immediately, which can be used to stream the found events.
	SubscribeFilterLogs(ctx context.Context, query sero.FilterQuery, ch chan<- types.Log) (sero.Subscription, error)
}

// DeployBackend wraps the operations needed by WaitMined and WaitDeployed.
type DeployBackend interface {
	TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error)
	CodeAt(ctx context.Context, account common.Address, blockNumber *big.Int) ([]byte, error)
}

// ContractBackend defines the methods needed to work with contracts on a read-write basis.
type ContractBackend interface {
	ContractCaller
	ContractTransactor
	ContractFilterer
}


================================================
FILE: accounts/abi/bind/base.go
================================================
// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

package bind

import (
	"context"
	"fmt"
	"math/big"

	"github.com/sero-cash/go-sero/common/address"

	"github.com/sero-cash/go-sero/common/hexutil"

	"github.com/sero-cash/go-sero"

	"github.com/sero-cash/go-czero-import/c_type"
	"github.com/sero-cash/go-sero/accounts/abi"
	"github.com/sero-cash/go-sero/common"
	"github.com/sero-cash/go-sero/core/types"
	"github.com/sero-cash/go-sero/event"
	"github.com/sero-cash/go-sero/zero/txtool"
)

// SignerFn is a signer function callback when a contract requires a method to
// sign the transaction before submission.
type EncrypterFn func(txParam *txtool.GTxParam) (tx *txtool.GTx, e error)

// CallOpts is the collection of options to fine tune a contract call request.
type CallOpts struct {
	Pending     bool            // Whether to operate on the pending state or the last known one
	FromPKr     *c_type.PKr     // Optional the sender address, otherwise the first account is used
	BlockNumber *big.Int        // Optional the block number on which the call should be performed
	Context     context.Context // Network context to support cancellation and timeouts (nil = no timeout)
}

// TransactOpts is the collection of authorization data required to create a
// valid Ethereum transaction.
type TransactOpts struct {
	From      address.PKAddress
	FromPKr   c_type.PKr  // the pkr of form account
	Encrypter EncrypterFn // Method to use for signing the transaction (mandatory)

	Value    *big.Int // Funds to transfer along along the transaction (nil = 0 = no funds)
	GasPrice *big.Int // Gas price to use for the transaction execution (nil = gas price oracle)
	GasLimit uint64   // Gas limit to set for the transaction execution (0 = estimate)

	Context context.Context // Network context to support cancellation and timeouts (nil = no timeout)
}

// FilterOpts is the collection of options to fine tune filtering for events
// within a bound contract.
type FilterOpts struct {
	Start uint64  // Start of the queried range
	End   *uint64 // End of the range (nil = latest)

	Context context.Context // Network context to support cancellation and timeouts (nil = no timeout)
}

// WatchOpts is the collection of options to fine tune subscribing for events
// within a bound contract.
type WatchOpts struct {
	Start   *uint64         // Start of the queried range (nil = latest)
	Context context.Context // Network context to support cancellation and timeouts (nil = no timeout)
}

// BoundContract is the base wrapper object that reflects a contract on the
// Ethereum network. It contains a collection of methods that are used by the
// higher level contract bindings to operate.
type BoundContract struct {
	address    common.Address     // Deployment address of the contract on the Ethereum blockchain
	abi        abi.ABI            // Reflect based ABI to access the correct Ethereum methods
	caller     ContractCaller     // Read interface to interact with the blockchain
	transactor ContractTransactor // Write interface to interact with the blockchain
	filterer   ContractFilterer   // Event filtering to interact with the blockchain
}

// NewBoundContract creates a low level contract interface through which calls
// and transactions may be made through.
func NewBoundContract(address common.Address, abi abi.ABI, caller ContractCaller, transactor ContractTransactor, filterer ContractFilterer) *BoundContract {
	return &BoundContract{
		address:    address,
		abi:        abi,
		caller:     caller,
		transactor: transactor,
		filterer:   filterer,
	}
}

// DeployContract deploys a contract onto the Ethereum blockchain and binds the
// deployment address with a Go wrapper.
func DeployContract(opts *TransactOpts, abi abi.ABI, bytecode []byte, backend ContractBackend, params ...interface{}) (common.Address, *types.Transaction, *BoundContract, error) {
	// Otherwise try to deploy the contract
	c := NewBoundContract(common.Address{}, abi, backend, backend, backend)

	prefix, err := c.abi.PackPrefix("", c_type.RandUint128(), params...)
	if err != nil {
		return common.Address{}, nil, nil, err
	}
	input, err := c.abi.Pack("", params...)
	if err != nil {
		return common.Address{}, nil, nil, err
	}
	data := append(prefix, bytecode...)
	input = append(data, input...)
	fmt.Println("DeployContract prefix", hexutil.Encode(prefix[:]))
	fmt.Println("DeployContract byteCode", hexutil.Encode(bytecode[:]))
	fmt.Println("DeployContract data", hexutil.Encode(input))

	tx, err := c.transact(opts, nil, input)
	if err != nil {
		return common.Address{}, nil, nil, err
	}
	return common.Address{}, tx, c, nil
}

// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (c *BoundContract) Call(opts *CallOpts, result interface{}, method string, params ...interface{}) error {
	// Don't crash on a lazy user
	if opts == nil {
		opts = new(CallOpts)
	}
	var rand c_type.Uint128
	copy(rand[:], c.address[:16])
	prefix, err := c.abi.PackPrefix(method, rand, params...)
	if err != nil {
		return err
	}
	// Pack the input, call and unpack the results
	input, err := c.abi.Pack(method, params...)
	if err != nil {
		return err
	}
	input = append(prefix, input...)
	var (
		msg    = sero.CallMsg{FromPKr: opts.FromPKr, To: &c.address, Data: input}
		ctx    = ensureContext(opts.Context)
		code   []byte
		output []byte
	)
	if opts.Pending {
		pb, ok := c.caller.(PendingContractCaller)
		if !ok {
			return ErrNoPendingState
		}
		output, err = pb.PendingCallContract(ctx, msg)
		if err == nil && len(output) == 0 {
			// Make sure we have a contract to operate on, and bail out otherwise.
			if code, err = pb.PendingCodeAt(ctx, c.address); err != nil {
				return err
			} else if len(code) == 0 {
				return ErrNoCode
			}
		}
	} else {
		output, err = c.caller.CallContract(ctx, msg, opts.BlockNumber)
		if err == nil && len(output) == 0 {
			// Make sure we have a contract to operate on, and bail out otherwise.
			if code, err = c.caller.CodeAt(ctx, c.address, opts.BlockNumber); err != nil {
				return err
			} else if len(code) == 0 {
				return ErrNoCode
			}
		}
	}
	if err != nil {
		return err
	}
	return c.abi.Unpack(result, method, output)
}

// Transact invokes the (paid) contract method with params as input values.
func (c *BoundContract) Transact(opts *TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	// Otherwise pack up the parameters and invoke the contract
	var rand c_type.Uint128
	copy(rand[:], c.address[:16])
	prefix, err := c.abi.PackPrefix(method, rand, params...)
	if err != nil {
		return nil, err
	}
	input, err := c.abi.Pack(method, params...)
	if err != nil {
		return nil, err
	}
	input = append(prefix, input...)
	return c.transact(opts, &c.address, input)
}

// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (c *BoundContract) Transfer(opts *TransactOpts) (*types.Transaction, error) {
	return c.transact(opts, &c.address, nil)
}

// transact executes an actual transaction invocation, first deriving any missing
// authorization fields, and then scheduling the transaction for execution.
func (c *BoundContract) transact(opts *TransactOpts, contract *common.Address, input []byte) (*types.Transaction, error) {
	var err error

	// Ensure a valid value field and resolve the account nonce
	value := opts.Value
	if value == nil {
		value = new(big.Int)
	}

	// Figure out the gas allowance and gas price values
	gasPrice := opts.GasPrice
	if gasPrice == nil {
		gasPrice, err = c.transactor.SuggestGasPrice(ensureContext(opts.Context))
		if err != nil {
			return nil, fmt.Errorf("failed to suggest gas price: %v", err)
		}
	}
	gasLimit := opts.GasLimit
	if gasLimit == 0 {
		// Gas estimation cannot succeed without code for method invocations
		if contract != nil {
			if code, err := c.transactor.PendingCodeAt(ensureContext(opts.Context), c.address); err != nil {
				return nil, err
			} else if len(code) == 0 {
				return nil, ErrNoCode
			}
		}
		// If the contract surely has code (or code is not needed), estimate the transaction
		msg := sero.CallMsg{FromPKr: &opts.FromPKr, To: contract, Value: value, Data: input}
		gasLimit, err = c.transactor.EstimateGas(ensureContext(opts.Context), msg)
		if err != nil {
			return nil, fmt.Errorf("failed to estimate gas needed: %v", err)
		}
	}

	msg := sero.CallMsg{From: opts.From, FromPKr: &opts.FromPKr, To: contract, GasPrice: gasPrice, Gas: gasLimit, Value: value, Data: input}
	preTx, err := c.transactor.GenContractTx(ensureContext(opts.Context), msg)
	if err != nil {
		return nil, err
	}
	gtx, err := opts.Encrypter(preTx)

	err = c.transactor.CommitTx(ensureContext(opts.Context), gtx)
	if err != nil {
		return nil, err
	}

	signedTx := types.NewTxWithGTx(opts.GasLimit, gasPrice, &gtx.Tx)
	return signedTx, nil
}

// FilterLogs filters contract logs for past blocks, returning the necessary
// channels to construct a strongly typed bound iterator on top of them.
func (c *BoundContract) FilterLogs(opts *FilterOpts, name string, query ...[]interface{}) (chan types.Log, event.Subscription, error) {
	// Don't crash on a lazy user
	if opts == nil {
		opts = new(FilterOpts)
	}
	// Append the event selector to the query parameters and construct the topic set
	query = append([][]interface{}{{c.abi.Events[name].ID}}, query...)

	topics, err := makeTopics(query...)
	if err != nil {
		return nil, nil, err
	}
	// Start the background filtering
	logs := make(chan types.Log, 128)

	config := sero.FilterQuery{
		Addresses: []common.Address{c.address},
		Topics:    topics,
		FromBlock: new(big.Int).SetUint64(opts.Start),
	}
	if opts.End != nil {
		config.ToBlock = new(big.Int).SetUint64(*opts.End)
	}
	/* TODO(karalabe): Replace the rest of the method below with this when supported
	sub, err := c.filterer.SubscribeFilterLogs(ensureContext(opts.Context), config, logs)
	*/
	buff, err := c.filterer.FilterLogs(ensureContext(opts.Context), config)
	if err != nil {
		return nil, nil, err
	}
	sub, err := event.NewSubscription(func(quit <-chan struct{}) error {
		for _, log := range buff {
			select {
			case logs <- log:
			case <-quit:
				return nil
			}
		}
		return nil
	}), nil

	if err != nil {
		return nil, nil, err
	}
	return logs, sub, nil
}

// WatchLogs filters subscribes to contract logs for future blocks, returning a
// subscription object that can be used to tear down the watcher.
func (c *BoundContract) WatchLogs(opts *WatchOpts, name string, query ...[]interface{}) (chan types.Log, event.Subscription, error) {
	// Don't crash on a lazy user
	if opts == nil {
		opts = new(WatchOpts)
	}
	// Append the event selector to the query parameters and construct the topic set
	query = append([][]interface{}{{c.abi.Events[name].ID}}, query...)

	topics, err := makeTopics(query...)
	if err != nil {
		return nil, nil, err
	}
	// Start the background filtering
	logs := make(chan types.Log, 128)

	config := sero.FilterQuery{
		Addresses: []common.Address{c.address},
		Topics:    topics,
	}
	if opts.Start != nil {
		config.FromBlock = new(big.Int).SetUint64(*opts.Start)
	}
	sub, err := c.filterer.SubscribeFilterLogs(ensureContext(opts.Context), config, logs)
	if err != nil {
		return nil, nil, err
	}
	return logs, sub, nil
}

// UnpackLog unpacks a retrieved log into the provided output structure.
func (c *BoundContract) UnpackLog(out interface{}, event string, log types.Log) error {
	if len(log.Data) > 0 {
		if err := c.abi.Unpack(out, event, log.Data); err != nil {
			return err
		}
	}
	var indexed abi.Arguments
	for _, arg := range c.abi.Events[event].Inputs {
		if arg.Indexed {
			indexed = append(indexed, arg)
		}
	}
	return parseTopics(out, indexed, log.Topics[1:])
}

// UnpackLogIntoMap unpacks a retrieved log into the provided map.
func (c *BoundContract) UnpackLogIntoMap(out map[string]interface{}, event string, log types.Log) error {
	if len(log.Data) > 0 {
		if err := c.abi.UnpackIntoMap(out, event, log.Data); err != nil {
			return err
		}
	}
	var indexed abi.Arguments
	for _, arg := range c.abi.Events[event].Inputs {
		if arg.Indexed {
			indexed = append(indexed, arg)
		}
	}
	return parseTopicsIntoMap(out, indexed, log.Topics[1:])
}

// ensureContext is a helper method to ensure a context is not nil, even if the
// user specified it as such.
func ensureContext(ctx context.Context) context.Context {
	if ctx == nil {
		return context.TODO()
	}
	return ctx
}


================================================
FILE: accounts/abi/bind/bind.go
================================================
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

// Package bind generates Ethereum contract Go bindings.
//
// Detailed usage document and tutorial available on the go-ethereum Wiki page:
// https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts
package bind

import (
	"bytes"
	"fmt"
	"go/format"
	"regexp"
	"strings"
	"text/template"
	"unicode"

	"github.com/sero-cash/go-sero/accounts/abi"
	"github.com/sero-cash/go-sero/log"
)

// Lang is a target programming language selector to generate bindings for.
type Lang int

const (
	LangGo Lang = iota
	//LangJava
	//LangObjC
)

// Bind generates a Go wrapper around a contract ABI. This wrapper isn't meant
// to be used as is in client code, but rather as an intermediate struct which
// enforces compile time type safety and naming convention opposed to having to
// manually maintain hard coded strings that break on runtime.
func Bind(types []string, abis []string, bytecodes []string, fsigs []map[string]string, pkg string, lang Lang, libs map[string]string, aliases map[string]string) (string, error) {
	var (
		// contracts is the map of each individual contract requested binding
		contracts = make(map[string]*tmplContract)

		// structs is the map of all reclared structs shared by passed contracts.
		structs = make(map[string]*tmplStruct)

		// isLib is the map used to flag each encountered library as such
		isLib = make(map[string]struct{})
	)
	for i := 0; i < len(types); i++ {
		// Parse the actual ABI to generate the binding for
		evmABI, err := abi.JSON(strings.NewReader(abis[i]))
		if err != nil {
			return "", err
		}
		// Strip any whitespace from the JSON ABI
		strippedABI := strings.Map(func(r rune) rune {
			if unicode.IsSpace(r) {
				return -1
			}
			return r
		}, abis[i])

		// Extract the call and transact methods; events, struct definitions; and sort them alphabetically
		var (
			calls     = make(map[string]*tmplMethod)
			transacts = make(map[string]*tmplMethod)
			events    = make(map[string]*tmplEvent)
			fallback  *tmplMethod
			receive   *tmplMethod

			// identifiers are used to detect duplicated identifier of function
			// and event. For all calls, transacts and events, abigen will generate
			// corresponding bindings. However we have to ensure there is no
			// identifier coliision in the bindings of these categories.
			callIdentifiers     = make(map[string]bool)
			transactIdentifiers = make(map[string]bool)
			eventIdentifiers    = make(map[string]bool)
		)
		for _, original := range evmABI.Methods {
			// Normalize the method for capital cases and non-anonymous inputs/outputs
			normalized := original
			normalizedName := methodNormalizer[lang](alias(aliases, original.Name))
			// Ensure there is no duplicated identifier
			var identifiers = callIdentifiers
			if !original.IsConstant() {
				identifiers = transactIdentifiers
			}
			if identifiers[normalizedName] {
				return "", fmt.Errorf("duplicated identifier \"%s\"(normalized \"%s\"), use --alias for renaming", original.Name, normalizedName)
			}
			identifiers[normalizedName] = true
			normalized.Name = normalizedName
			normalized.Inputs = make([]abi.Argument, len(original.Inputs))
			copy(normalized.Inputs, original.Inputs)
			for j, input := range normalized.Inputs {
				if input.Name == "" {
					normalized.Inputs[j].Name = fmt.Sprintf("arg%d", j)
				}
				if hasStruct(input.Type) {
					bindStructType[lang](input.Type, structs, true)
				}
			}
			normalized.Outputs = make([]abi.Argument, len(original.Outputs))
			copy(normalized.Outputs, original.Outputs)
			for j, output := range normalized.Outputs {
				if output.Name != "" {
					normalized.Outputs[j].Name = capitalise(output.Name)
				}
				if hasStruct(output.Type) {
					bindStructType[lang](output.Type, structs, false)
				}
			}
			// Append the methods to the call or transact lists
			if original.IsConstant() {
				calls[original.Name] = &tmplMethod{Original: original, Normalized: normalized, Structured: structured(original.Outputs)}
			} else {
				transacts[original.Name] = &tmplMethod{Original: original, Normalized: normalized, Structured: structured(original.Outputs)}
			}
		}
		for _, original := range evmABI.Events {
			// Skip anonymous events as they don't support explicit filtering
			if original.Anonymous {
				continue
			}
			// Normalize the event for capital cases and non-anonymous outputs
			normalized := original

			// Ensure there is no duplicated identifier
			normalizedName := methodNormalizer[lang](alias(aliases, original.Name))
			if eventIdentifiers[normalizedName] {
				return "", fmt.Errorf("duplicated identifier \"%s\"(normalized \"%s\"), use --alias for renaming", original.Name, normalizedName)
			}
			eventIdentifiers[normalizedName] = true
			normalized.Name = normalizedName

			normalized.Inputs = make([]abi.Argument, len(original.Inputs))
			copy(normalized.Inputs, original.Inputs)
			for j, input := range normalized.Inputs {
				if input.Name == "" {
					normalized.Inputs[j].Name = fmt.Sprintf("arg%d", j)
				}
				if hasStruct(input.Type) {
					bindStructType[lang](input.Type, structs, true)
				}
			}
			// Append the event to the accumulator list
			events[original.Name] = &tmplEvent{Original: original, Normalized: normalized}
		}
		// Add two special fallback functions if they exist
		if evmABI.HasFallback() {
			fallback = &tmplMethod{Original: evmABI.Fallback}
		}
		if evmABI.HasReceive() {
			receive = &tmplMethod{Original: evmABI.Receive}
		}
		// There is no easy way to pass arbitrary java objects to the Go side.
		//if len(structs) > 0 && lang == LangJava {
		//	return "", errors.New("java binding for tuple arguments is not supported yet")
		//}

		contracts[types[i]] = &tmplContract{
			Type:        capitalise(types[i]),
			InputABI:    strings.Replace(strippedABI, "\"", "\\\"", -1),
			InputBin:    strings.TrimPrefix(strings.TrimSpace(bytecodes[i]), "0x"),
			Constructor: evmABI.Constructor,
			Calls:       calls,
			Transacts:   transacts,
			Fallback:    fallback,
			Receive:     receive,
			Events:      events,
			Libraries:   make(map[string]string),
		}
		// Function 4-byte signatures are stored in the same sequence
		// as types, if available.
		if len(fsigs) > i {
			contracts[types[i]].FuncSigs = fsigs[i]
		}
		// Parse library references.
		for pattern, name := range libs {
			matched, err := regexp.Match("__\\$"+pattern+"\\$__", []byte(contracts[types[i]].InputBin))
			if err != nil {
				log.Error("Could not search for pattern", "pattern", pattern, "contract", contracts[types[i]], "err", err)
			}
			if matched {
				contracts[types[i]].Libraries[pattern] = name
				// keep track that this type is a library
				if _, ok := isLib[name]; !ok {
					isLib[name] = struct{}{}
				}
			}
		}
	}
	// Check if that type has already been identified as a library
	for i := 0; i < len(types); i++ {
		_, ok := isLib[types[i]]
		contracts[types[i]].Library = ok
	}
	// Generate the contract template data content and render it
	data := &tmplData{
		Package:   pkg,
		Contracts: contracts,
		Libraries: libs,
		Structs:   structs,
	}
	buffer := new(bytes.Buffer)

	funcs := map[string]interface{}{
		"bindtype":      bindType[lang],
		"bindtopictype": bindTopicType[lang],
		"namedtype":     namedType[lang],
		"capitalise":    capitalise,
		"decapitalise":  decapitalise,
	}
	tmpl := template.Must(template.New("").Funcs(funcs).Parse(tmplSource[lang]))
	if err := tmpl.Execute(buffer, data); err != nil {
		return "", err
	}
	// For Go bindings pass the code through gofmt to clean it up
	if lang == LangGo {
		code, err := format.Source(buffer.Bytes())
		if err != nil {
			return "", fmt.Errorf("%v\n%s", err, buffer)
		}
		return string(code), nil
	}
	// For all others just return as is for now
	return buffer.String(), nil
}

// bindType is a set of type binders that convert Solidity types to some supported
// programming language types.
var bindType = map[Lang]func(kind abi.Type, structs map[string]*tmplStruct, input bool) string{
	LangGo: bindTypeGo,
	//LangJava: bindTypeJava,
}

// bindBasicTypeGo converts basic solidity types(except array, slice and tuple) to Go one.
func bindBasicTypeGo(kind abi.Type, input bool) string {
	switch kind.T {
	case abi.AddressTy:
		if input {
			return "common.Address"
		} else {
			return "common.ContractAddress"
		}

	case abi.IntTy, abi.UintTy:
		parts := regexp.MustCompile(`(u)?int([0-9]*)`).FindStringSubmatch(kind.String())
		switch parts[2] {
		case "8", "16", "32", "64":
			return fmt.Sprintf("%sint%s", parts[1], parts[2])
		}
		return "*big.Int"
	case abi.FixedBytesTy:
		return fmt.Sprintf("[%d]byte", kind.Size)
	case abi.BytesTy:
		return "[]byte"
	case abi.FunctionTy:
		return "[24]byte"
	default:
		// string, bool types
		return kind.String()
	}
}

// bindTypeGo converts solidity types to Go ones. Since there is no clear mapping
// from all Solidity types to Go ones (e.g. uint17), those that cannot be exactly
// mapped will use an upscaled type (e.g. BigDecimal).
func bindTypeGo(kind abi.Type, structs map[string]*tmplStruct, input bool) string {
	switch kind.T {
	case abi.TupleTy:
		return structs[kind.TupleRawName+kind.String()].Name
	case abi.ArrayTy:
		return fmt.Sprintf("[%d]", kind.Size) + bindTypeGo(*kind.Elem, structs, input)
	case abi.SliceTy:
		return "[]" + bindTypeGo(*kind.Elem, structs, input)
	default:
		return bindBasicTypeGo(kind, input)
	}
}

// bindBasicTypeJava converts basic solidity types(except array, slice and tuple) to Java one.
func bindBasicTypeJava(kind abi.Type) string {
	switch kind.T {
	case abi.AddressTy:
		return "ContractAddress"
	case abi.IntTy, abi.UintTy:
		// Note that uint and int (without digits) are also matched,
		// these are size 256, and will translate to BigInt (the default).
		parts := regexp.MustCompile(`(u)?int([0-9]*)`).FindStringSubmatch(kind.String())
		if len(parts) != 3 {
			return kind.String()
		}
		// All unsigned integers should be translated to BigInt since gomobile doesn't
		// support them.
		if parts[1] == "u" {
			return "BigInt"
		}

		namedSize := map[string]string{
			"8":  "byte",
			"16": "short",
			"32": "int",
			"64": "long",
		}[parts[2]]

		// default to BigInt
		if namedSize == "" {
			namedSize = "BigInt"
		}
		return namedSize
	case abi.FixedBytesTy, abi.BytesTy:
		return "byte[]"
	case abi.BoolTy:
		return "boolean"
	case abi.StringTy:
		return "String"
	case abi.FunctionTy:
		return "byte[24]"
	default:
		return kind.String()
	}
}

// pluralizeJavaType explicitly converts multidimensional types to predefined
// type in go side.
func pluralizeJavaType(typ string) string {
	switch typ {
	case "boolean":
		return "Bools"
	case "String":
		return "Strings"
	case "Address":
		return "Addresses"
	case "byte[]":
		return "Binaries"
	case "BigInt":
		return "BigInts"
	}
	return typ + "[]"
}

// bindTypeJava converts a Solidity type to a Java one. Since there is no clear mapping
// from all Solidity types to Java ones (e.g. uint17), those that cannot be exactly
// mapped will use an upscaled type (e.g. BigDecimal).
/*func bindTypeJava(kind abi.Type, structs map[string]*tmplStruct) string {
	switch kind.T {
	case abi.TupleTy:
		return structs[kind.TupleRawName+kind.String()].Name
	case abi.ArrayTy, abi.SliceTy:
		return pluralizeJavaType(bindTypeJava(*kind.Elem, structs))
	default:
		return bindBasicTypeJava(kind)
	}
}
*/
// bindTopicType is a set of type binders that convert Solidity types to some
// supported programming language topic types.
var bindTopicType = map[Lang]func(kind abi.Type, structs map[string]*tmplStruct, input bool) string{
	LangGo: bindTopicTypeGo,
	//LangJava: bindTopicTypeJava,
}

// bindTopicTypeGo converts a Solidity topic type to a Go one. It is almost the same
// funcionality as for simple types, but dynamic types get converted to hashes.
func bindTopicTypeGo(kind abi.Type, structs map[string]*tmplStruct, input bool) string {
	bound := bindTypeGo(kind, structs, input)

	// todo(rjl493456442) according solidity documentation, indexed event
	// parameters that are not value types i.e. arrays and structs are not
	// stored directly but instead a keccak256-hash of an encoding is stored.
	//
	// We only convert stringS and bytes to hash, still need to deal with
	// array(both fixed-size and dynamic-size) and struct.
	if bound == "string" || bound == "[]byte" {
		bound = "common.Hash"
	}
	return bound
}

// bindTopicTypeJava converts a Solidity topic type to a Java one. It is almost the same
// funcionality as for simple types, but dynamic types get converted to hashes.
/*func bindTopicTypeJava(kind abi.Type, structs map[string]*tmplStruct) string {
	bound := bindTypeJava(kind, structs)

	// todo(rjl493456442) according solidity documentation, indexed event
	// parameters that are not value types i.e. arrays and structs are not
	// stored directly but instead a keccak256-hash of an encoding is stored.
	//
	// We only convert stringS and bytes to hash, still need to deal with
	// array(both fixed-size and dynamic-size) and struct.
	if bound == "String" || bound == "byte[]" {
		bound = "Hash"
	}
	return bound
}
*/
// bindStructType is a set of type binders that convert Solidity tuple types to some supported
// programming language struct definition.
var bindStructType = map[Lang]func(kind abi.Type, structs map[string]*tmplStruct, input bool) string{
	LangGo: bindStructTypeGo,
	//LangJava: bindStructTypeJava,
}

// bindStructTypeGo converts a Solidity tuple type to a Go one and records the mapping
// in the given map.
// Notably, this function will resolve and record nested struct recursively.
func bindStructTypeGo(kind abi.Type, structs map[string]*tmplStruct, input bool) string {
	switch kind.T {
	case abi.TupleTy:
		// We compose raw struct name and canonical parameter expression
		// together here. The reason is before solidity v0.5.11, kind.TupleRawName
		// is empty, so we use canonical parameter expression to distinguish
		// different struct definition. From the consideration of backward
		// compatibility, we concat these two together so that if kind.TupleRawName
		// is not empty, it can have unique id.
		id := kind.TupleRawName + kind.String()
		if s, exist := structs[id]; exist {
			return s.Name
		}
		var fields []*tmplField
		for i, elem := range kind.TupleElems {
			field := bindStructTypeGo(*elem, structs, input)
			fields = append(fields, &tmplField{Type: field, Name: capitalise(kind.TupleRawNames[i]), SolKind: *elem})
		}
		name := kind.TupleRawName
		if name == "" {
			name = fmt.Sprintf("Struct%d", len(structs))
		}
		structs[id] = &tmplStruct{
			Name:   name,
			Fields: fields,
		}
		return name
	case abi.ArrayTy:
		return fmt.Sprintf("[%d]", kind.Size) + bindStructTypeGo(*kind.Elem, structs, input)
	case abi.SliceTy:
		return "[]" + bindStructTypeGo(*kind.Elem, structs, input)
	default:
		return bindBasicTypeGo(kind, input)
	}
}

// bindStructTypeJava converts a Solidity tuple type to a Java one and records the mapping
// in the given map.
// Notably, this function will resolve and record nested struct recursively.
/*func bindStructTypeJava(kind abi.Type, structs map[string]*tmplStruct) string {
	switch kind.T {
	case abi.TupleTy:
		// We compose raw struct name and canonical parameter expression
		// together here. The reason is before solidity v0.5.11, kind.TupleRawName
		// is empty, so we use canonical parameter expression to distinguish
		// different struct definition. From the consideration of backward
		// compatibility, we concat these two together so that if kind.TupleRawName
		// is not empty, it can have unique id.
		id := kind.TupleRawName + kind.String()
		if s, exist := structs[id]; exist {
			return s.Name
		}
		var fields []*tmplField
		for i, elem := range kind.TupleElems {
			field := bindStructTypeJava(*elem, structs)
			fields = append(fields, &tmplField{Type: field, Name: decapitalise(kind.TupleRawNames[i]), SolKind: *elem})
		}
		name := kind.TupleRawName
		if name == "" {
			name = fmt.Sprintf("Class%d", len(structs))
		}
		structs[id] = &tmplStruct{
			Name:   name,
			Fields: fields,
		}
		return name
	case abi.ArrayTy, abi.SliceTy:
		return pluralizeJavaType(bindStructTypeJava(*kind.Elem, structs))
	default:
		return bindBasicTypeJava(kind)
	}
}
*/
// namedType is a set of functions that transform language specific types to
// named versions that my be used inside method names.
var namedType = map[Lang]func(string, abi.Type) string{
	LangGo: func(string, abi.Type) string { panic("this shouldn't be needed") },
	//LangJava: namedTypeJava,
}

// namedTypeJava converts some primitive data types to named variants that can
// be used as parts of method names.
/*func namedTypeJava(javaKind string, solKind abi.Type) string {
	switch javaKind {
	case "byte[]":
		return "Binary"
	case "boolean":
		return "Bool"
	default:
		parts := regexp.MustCompile(`(u)?int([0-9]*)(\[[0-9]*\])?`).FindStringSubmatch(solKind.String())
		if len(parts) != 4 {
			return javaKind
		}
		switch parts[2] {
		case "8", "16", "32", "64":
			if parts[3] == "" {
				return capitalise(fmt.Sprintf("%sint%s", parts[1], parts[2]))
			}
			return capitalise(fmt.Sprintf("%sint%ss", parts[1], parts[2]))

		default:
			return javaKind
		}
	}
}
*/
// alias returns an alias of the given string based on the aliasing rules
// or returns itself if no rule is matched.
func alias(aliases map[string]string, n string) string {
	if alias, exist := aliases[n]; exist {
		return alias
	}
	return n
}

// methodNormalizer is a name transformer that modifies Solidity method names to
// conform to target language naming concentions.
var methodNormalizer = map[Lang]func(string) string{
	LangGo: abi.ToCamelCase,
	//LangJava: decapitalise,
}

// capitalise makes a camel-case string which starts with an upper case character.
var capitalise = abi.ToCamelCase

// decapitalise makes a camel-case string which starts with a lower case character.
func decapitalise(input string) string {
	if len(input) == 0 {
		return input
	}

	goForm := abi.ToCamelCase(input)
	return strings.ToLower(goForm[:1]) + goForm[1:]
}

// structured checks whether a list of ABI data types has enough information to
// operate through a proper Go struct or if flat returns are needed.
func structured(args abi.Arguments) bool {
	if len(args) < 2 {
		return false
	}
	exists := make(map[string]bool)
	for _, out := range args {
		// If the name is anonymous, we can't organize into a struct
		if out.Name == "" {
			return false
		}
		// If the field name is empty when normalized or collides (var, Var, _var, _Var),
		// we can't organize into a struct
		field := capitalise(out.Name)
		if field == "" || exists[field] {
			return false
		}
		exists[field] = true
	}
	return true
}

// hasStruct returns an indicator whether the given type is struct, struct slice
// or struct array.
func hasStruct(t abi.Type) bool {
	switch t.T {
	case abi.SliceTy:
		return hasStruct(*t.Elem)
	case abi.ArrayTy:
		return hasStruct(*t.Elem)
	case abi.TupleTy:
		return true
	default:
		return false
	}
}


================================================
FILE: accounts/abi/bind/template.go
================================================
// Copyright 2016 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

package bind

import "github.com/sero-cash/go-sero/accounts/abi"

// tmplData is the data structure required to fill the binding template.
type tmplData struct {
	Package   string                   // Name of the package to place the generated file in
	Contracts map[string]*tmplContract // List of contracts to generate into this file
	Libraries map[string]string        // Map the bytecode's link pattern to the library name
	Structs   map[string]*tmplStruct   // Contract struct type definitions
}

// tmplContract contains the data needed to generate an individual contract binding.
type tmplContract struct {
	Type        string                 // Type name of the main contract binding
	InputABI    string                 // JSON ABI used as the input to generate the binding from
	InputBin    string                 // Optional EVM bytecode used to denetare deploy code from
	FuncSigs    map[string]string      // Optional map: string signature -> 4-byte signature
	Constructor abi.Method             // Contract constructor for deploy parametrization
	Calls       map[string]*tmplMethod // Contract calls that only read state data
	Transacts   map[string]*tmplMethod // Contract calls that write state data
	Fallback    *tmplMethod            // Additional special fallback function
	Receive     *tmplMethod            // Additional special receive function
	Events      map[string]*tmplEvent  // Contract events accessors
	Libraries   map[string]string      // Same as tmplData, but filtered to only keep what the contract needs
	Library     bool                   // Indicator whether the contract is a library
}

// tmplMethod is a wrapper around an abi.Method that contains a few preprocessed
// and cached data fields.
type tmplMethod struct {
	Original   abi.Method // Original method as parsed by the abi package
	Normalized abi.Method // Normalized version of the parsed method (capitalized names, non-anonymous args/returns)
	Structured bool       // Whether the returns should be accumulated into a struct
}

// tmplEvent is a wrapper around an a
type tmplEvent struct {
	Original   abi.Event // Original event as parsed by the abi package
	Normalized abi.Event // Normalized version of the parsed fields
}

// tmplField is a wrapper around a struct field with binding language
// struct type definition and relative filed name.
type tmplField struct {
	Type    string   // Field type representation depends on target binding language
	Name    string   // Field name converted from the raw user-defined field name
	SolKind abi.Type // Raw abi type information
}

// tmplStruct is a wrapper around an abi.tuple contains an auto-generated
// struct name.
type tmplStruct struct {
	Name   string       // Auto-generated struct name(before solidity v0.5.11) or raw name.
	Fields []*tmplField // Struct fields definition depends on the binding language.
}

// tmplSource is language to template mapping containing all the supported
// programming languages the package can generate to.
var tmplSource = map[Lang]string{
	LangGo: tmplSourceGo,
}

// tmplSourceGo is the Go source template use to generate the contract binding
// based on.
const tmplSourceGo = `
// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.

package {{.Package}}

import (
	"math/big"
	"strings"

	sero "github.com/sero-cash/go-sero"
	"github.com/sero-cash/go-sero/accounts/abi"
	"github.com/sero-cash/go-sero/accounts/abi/bind"
	"github.com/sero-cash/go-sero/common"
	"github.com/sero-cash/go-sero/core/types"
	"github.com/sero-cash/go-sero/event"
)

// Reference imports to suppress errors if they are not otherwise used.
var (
	_ = big.NewInt
	_ = strings.NewReader
	_ = sero.NotFound
	_ = bind.Bind
	_ = common.Big1
	_ = types.BloomLookup
	_ = event.NewSubscription
)
{{$TRUE := true}}
{{$FALSE := false}}
{{$structs := .Structs}}
{{range $structs}}
	// {{.Name}} is an auto generated low-level Go binding around an user-defined struct.
	type {{.Name}} struct {
	{{range $field := .Fields}}
	{{$field.Name}} {{$field.Type}}{{end}}
	}
{{end}}

{{range $contract := .Contracts}}
	// {{.Type}}ABI is the input ABI used to generate the binding from.
	const {{.Type}}ABI = "{{.InputABI}}"

	{{if $contract.FuncSigs}}
		// {{.Type}}FuncSigs maps the 4-byte function signature to its string representation.
		var {{.Type}}FuncSigs = map[string]string{
			{{range $strsig, $binsig := .FuncSigs}}"{{$binsig}}": "{{$strsig}}",
			{{end}}
		}
	{{end}}

	{{if .InputBin}}
		// {{.Type}}Bin is the compiled bytecode used for deploying new contracts.
		var {{.Type}}Bin = "0x{{.InputBin}}"

		// Deploy{{.Type}} deploys a new Ethereum contract, binding an instance of {{.Type}} to it.
		func Deploy{{.Type}}(auth *bind.TransactOpts, backend bind.ContractBackend {{range .Constructor.Inputs}}, {{.Name}} {{bindtype .Type $structs $TRUE}}{{end}}) (common.Address, *types.Transaction, *{{.Type}}, error) {
		  parsed, err := abi.JSON(strings.NewReader({{.Type}}ABI))
		  if err != nil {
		    return common.Address{}, nil, nil, err
		  }
		  {{range $pattern, $name := .Libraries}}
			{{decapitalise $name}}Addr, _, _, _ := Deploy{{capitalise $name}}(auth, backend)
			{{$contract.Type}}Bin = strings.Replace({{$contract.Type}}Bin, "__${{$pattern}}$__", {{decapitalise $name}}Addr.String()[2:], -1)
		  {{end}}
		  address, tx, contract, err := bind.DeployContract(auth, parsed, common.F
Download .txt
gitextract_id4_y5p3/

├── .gitignore
├── AUTHORS
├── AUTHORS.SERO
├── COPYING
├── COPYING.LESSER
├── Dockerfile
├── LICENSE.SERO
├── LICENSE.SERO.LESSER
├── Makefile
├── README.md
├── accounts/
│   ├── abi/
│   │   ├── abi.go
│   │   ├── abi_test.go
│   │   ├── argument.go
│   │   ├── bind/
│   │   │   ├── auth.go
│   │   │   ├── backend.go
│   │   │   ├── base.go
│   │   │   ├── bind.go
│   │   │   ├── template.go
│   │   │   ├── topics.go
│   │   │   └── util.go
│   │   ├── doc.go
│   │   ├── error.go
│   │   ├── event.go
│   │   ├── method.go
│   │   ├── numbers.go
│   │   ├── pack.go
│   │   ├── reflect.go
│   │   ├── type.go
│   │   └── unpack.go
│   ├── accounts.go
│   ├── errors.go
│   ├── hd.go
│   ├── keystore/
│   │   ├── account_cache.go
│   │   ├── account_cache_test.go
│   │   ├── file_cache.go
│   │   ├── key.go
│   │   ├── keystore.go
│   │   ├── keystore_passphrase.go
│   │   ├── keystore_passphrase_test.go
│   │   ├── keystore_test.go
│   │   ├── keystore_wallet.go
│   │   ├── presale.go
│   │   ├── testdata/
│   │   │   ├── dupes/
│   │   │   │   ├── 1
│   │   │   │   ├── 2
│   │   │   │   └── foo
│   │   │   ├── keystore/
│   │   │   │   ├── .hiddenfile
│   │   │   │   ├── README
│   │   │   │   ├── UTC--2018-08-11T10-19-38.165083119Z--64t1MPxFp4yzxNJ64zp1NmrTXWsrLuw9DMiMZeujbD2HVAKhjR3zpKnuFVjjAXAp86G2PzSVSsdiMdwp5JPoqxtP
│   │   │   │   ├── aaa
│   │   │   │   ├── empty
│   │   │   │   ├── foo/
│   │   │   │   │   └── fd9bd350f08ee3c0c19b85a8e16114a11a60aa4e
│   │   │   │   ├── garbage
│   │   │   │   ├── no-address
│   │   │   │   ├── zero
│   │   │   │   └── zzz
│   │   │   ├── v1/
│   │   │   │   └── cb61d5a9c4896fb9658090b597ef0e7be6f7b67e/
│   │   │   │       └── cb61d5a9c4896fb9658090b597ef0e7be6f7b67e
│   │   │   ├── v1_test_vector.json
│   │   │   ├── v3_test_vector.json
│   │   │   └── very-light-scrypt.json
│   │   ├── watch.go
│   │   └── watch_fallback.go
│   ├── manager.go
│   ├── url.go
│   └── url_test.go
├── appveyor.yml
├── build/
│   ├── RPMINSTALL.md
│   ├── ci-notes.md
│   ├── ci.go
│   ├── clean_go_build_cache.sh
│   ├── env.sh
│   ├── gero.conf
│   ├── gero.spec
│   ├── geropkg/
│   │   ├── attach.bat
│   │   ├── attach.sh
│   │   ├── clean.sh
│   │   ├── geroConfig.toml
│   │   ├── startup.bat
│   │   ├── startup.sh
│   │   ├── startupEx.sh
│   │   ├── startupVoter.bat
│   │   ├── startupVoter.sh
│   │   └── stop.sh
│   ├── goimports.sh
│   ├── install.sh
│   ├── pod.podspec
│   └── update-license.go
├── circle.yml
├── cmd/
│   ├── abigen/
│   │   └── main.go
│   ├── bootnode/
│   │   └── main.go
│   ├── gero/
│   │   ├── accountcmd.go
│   │   ├── bugcmd.go
│   │   ├── chaincmd.go
│   │   ├── config.go
│   │   ├── consolecmd.go
│   │   ├── main.go
│   │   ├── misccmd.go
│   │   ├── monitorcmd.go
│   │   ├── snapshotcmd.go
│   │   ├── testdata/
│   │   │   ├── empty.js
│   │   │   ├── guswallet.json
│   │   │   ├── passwords.txt
│   │   │   └── wrong-passwords.txt
│   │   └── usage.go
│   ├── internal/
│   │   └── browser/
│   │       └── browser.go
│   ├── proofnode/
│   │   └── main.go
│   ├── tx/
│   │   ├── confirm.go
│   │   ├── dec.go
│   │   ├── main.go
│   │   └── sign.go
│   └── utils/
│       ├── cmd.go
│       ├── customflags.go
│       └── flags.go
├── common/
│   ├── address/
│   │   └── account_types.go
│   ├── big.go
│   ├── bitutil/
│   │   ├── bitutil.go
│   │   ├── bitutil_test.go
│   │   ├── compress.go
│   │   ├── compress_fuzz.go
│   │   └── compress_test.go
│   ├── bytes.go
│   ├── bytes_test.go
│   ├── compiler/
│   │   ├── helpers.go
│   │   ├── solidity.go
│   │   └── solidity_test.go
│   ├── debug.go
│   ├── fdlimit/
│   │   ├── fdlimit_freebsd.go
│   │   ├── fdlimit_unix.go
│   │   └── fdlimit_windows.go
│   ├── format.go
│   ├── hexutil/
│   │   ├── abi_string.go
│   │   ├── hexutil.go
│   │   ├── hexutil_test.go
│   │   ├── json.go
│   │   └── json_test.go
│   ├── math/
│   │   ├── big.go
│   │   ├── big_test.go
│   │   ├── integer.go
│   │   └── integer_test.go
│   ├── mclock/
│   │   └── mclock.go
│   ├── path.go
│   ├── size.go
│   ├── size_test.go
│   ├── test_utils.go
│   └── types.go
├── consensus/
│   ├── consensus.go
│   ├── errors.go
│   ├── ethash/
│   │   ├── algorithm.go
│   │   ├── algorithm_test.go
│   │   ├── consensus.go
│   │   ├── consensus_test.go
│   │   ├── ethash.go
│   │   ├── ethash_test.go
│   │   ├── progpow.go
│   │   ├── progpow_test.go
│   │   └── sealer.go
│   └── ethash_hash/
│       ├── blake2b.c
│       ├── hash_c.go
│       ├── hash_c_test.go
│       └── xxenc.c
├── console/
│   ├── bridge.go
│   ├── console.go
│   ├── console_test.go
│   ├── prompter.go
│   └── testdata/
│       ├── exec.js
│       └── preload.js
├── containers/
│   └── docker/
│       └── gero-ubuntu/
│           ├── Dockerfile
│           ├── Makefile
│           ├── geroConfig.toml
│           └── rungero.docker
├── core/
│   ├── .gitignore
│   ├── asm/
│   │   ├── asm.go
│   │   ├── compiler.go
│   │   └── lexer.go
│   ├── block_validator.go
│   ├── block_validator_test.go
│   ├── blockchain.go
│   ├── bloombits/
│   │   ├── doc.go
│   │   ├── generator.go
│   │   ├── generator_test.go
│   │   ├── matcher.go
│   │   ├── scheduler.go
│   │   └── scheduler_test.go
│   ├── chain_indexer.go
│   ├── chain_indexer_test.go
│   ├── chain_makers.go
│   ├── error.go
│   ├── events.go
│   ├── evm.go
│   ├── gaspool.go
│   ├── gen_genesis.go
│   ├── gen_genesis_account.go
│   ├── genesis.go
│   ├── genesis_alloc.go
│   ├── headerchain.go
│   ├── mkalloc.go
│   ├── rawdb/
│   │   ├── accessors_chain.go
│   │   ├── accessors_chain_test.go
│   │   ├── accessors_indexes.go
│   │   ├── accessors_metadata.go
│   │   ├── interfaces.go
│   │   └── schema.go
│   ├── state/
│   │   ├── database.go
│   │   ├── dump.go
│   │   ├── iterator.go
│   │   ├── iterator_test.go
│   │   ├── journal.go
│   │   ├── managed_state.go
│   │   ├── state_object.go
│   │   ├── state_test.go
│   │   ├── statedb.go
│   │   ├── statedb4zero.go
│   │   ├── statedb_test.go
│   │   ├── sync.go
│   │   └── sync_test.go
│   ├── state_processor.go
│   ├── state_transition.go
│   ├── tx_checker.go
│   ├── tx_journal.go
│   ├── tx_list.go
│   ├── tx_pool.go
│   ├── types/
│   │   ├── block.go
│   │   ├── block_rlp.go
│   │   ├── block_test.go
│   │   ├── bloom9.go
│   │   ├── derive_sha.go
│   │   ├── gen_header_json.go
│   │   ├── gen_log_json.go
│   │   ├── gen_receipt_json.go
│   │   ├── gen_tx_json.go
│   │   ├── header.go
│   │   ├── header_test.go
│   │   ├── log.go
│   │   ├── receipt.go
│   │   ├── receipt_rlp.go
│   │   ├── share.go
│   │   ├── transaction.go
│   │   ├── transaction_test.go
│   │   └── vserial/
│   │       └── rlp.go
│   ├── types.go
│   ├── vm/
│   │   ├── analysis.go
│   │   ├── analysis_test.go
│   │   ├── common.go
│   │   ├── contract.go
│   │   ├── contracts.go
│   │   ├── doc.go
│   │   ├── errors.go
│   │   ├── evm.go
│   │   ├── gas.go
│   │   ├── gas_table.go
│   │   ├── gas_table_test.go
│   │   ├── gen_structlog.go
│   │   ├── instructions.go
│   │   ├── instructions_test.go
│   │   ├── int_pool_verifier.go
│   │   ├── int_pool_verifier_empty.go
│   │   ├── interface.go
│   │   ├── interpreter.go
│   │   ├── intpool.go
│   │   ├── intpool_test.go
│   │   ├── jump_table.go
│   │   ├── logger.go
│   │   ├── logger_test.go
│   │   ├── memory.go
│   │   ├── memory_table.go
│   │   ├── noop.go
│   │   ├── opcodes.go
│   │   ├── runtime/
│   │   │   ├── doc.go
│   │   │   ├── env.go
│   │   │   ├── fuzz.go
│   │   │   ├── runtime.go
│   │   │   └── runtime_test.go
│   │   ├── stack.go
│   │   └── stack_table.go
│   └── vote.go
├── crypto/
│   ├── crypto.go
│   ├── ecies/
│   │   ├── .gitignore
│   │   ├── LICENSE
│   │   ├── README
│   │   ├── ecies.go
│   │   ├── ecies_test.go
│   │   └── params.go
│   ├── secp256k1/
│   │   ├── .gitignore
│   │   ├── LICENSE
│   │   ├── curve.go
│   │   ├── ext.h
│   │   ├── libsecp256k1/
│   │   │   ├── .gitignore
│   │   │   ├── .travis.yml
│   │   │   ├── COPYING
│   │   │   ├── Makefile.am
│   │   │   ├── README.md
│   │   │   ├── TODO
│   │   │   ├── autogen.sh
│   │   │   ├── build-aux/
│   │   │   │   └── m4/
│   │   │   │       ├── ax_jni_include_dir.m4
│   │   │   │       ├── ax_prog_cc_for_build.m4
│   │   │   │       └── bitcoin_secp.m4
│   │   │   ├── configure.ac
│   │   │   ├── contrib/
│   │   │   │   ├── lax_der_parsing.c
│   │   │   │   ├── lax_der_parsing.h
│   │   │   │   ├── lax_der_privatekey_parsing.c
│   │   │   │   └── lax_der_privatekey_parsing.h
│   │   │   ├── include/
│   │   │   │   ├── secp256k1.h
│   │   │   │   ├── secp256k1_ecdh.h
│   │   │   │   └── secp256k1_recovery.h
│   │   │   ├── libsecp256k1.pc.in
│   │   │   ├── obj/
│   │   │   │   └── .gitignore
│   │   │   ├── sage/
│   │   │   │   ├── group_prover.sage
│   │   │   │   ├── secp256k1.sage
│   │   │   │   └── weierstrass_prover.sage
│   │   │   └── src/
│   │   │       ├── asm/
│   │   │       │   └── field_10x26_arm.s
│   │   │       ├── basic-config.h
│   │   │       ├── bench.h
│   │   │       ├── bench_ecdh.c
│   │   │       ├── bench_internal.c
│   │   │       ├── bench_recover.c
│   │   │       ├── bench_schnorr_verify.c
│   │   │       ├── bench_sign.c
│   │   │       ├── bench_verify.c
│   │   │       ├── ecdsa.h
│   │   │       ├── ecdsa_impl.h
│   │   │       ├── eckey.h
│   │   │       ├── eckey_impl.h
│   │   │       ├── ecmult.h
│   │   │       ├── ecmult_const.h
│   │   │       ├── ecmult_const_impl.h
│   │   │       ├── ecmult_gen.h
│   │   │       ├── ecmult_gen_impl.h
│   │   │       ├── ecmult_impl.h
│   │   │       ├── field.h
│   │   │       ├── field_10x26.h
│   │   │       ├── field_10x26_impl.h
│   │   │       ├── field_5x52.h
│   │   │       ├── field_5x52_asm_impl.h
│   │   │       ├── field_5x52_impl.h
│   │   │       ├── field_5x52_int128_impl.h
│   │   │       ├── field_impl.h
│   │   │       ├── gen_context.c
│   │   │       ├── group.h
│   │   │       ├── group_impl.h
│   │   │       ├── hash.h
│   │   │       ├── hash_impl.h
│   │   │       ├── java/
│   │   │       │   ├── org/
│   │   │       │   │   └── bitcoin/
│   │   │       │   │       ├── NativeSecp256k1.java
│   │   │       │   │       ├── NativeSecp256k1Test.java
│   │   │       │   │       ├── NativeSecp256k1Util.java
│   │   │       │   │       └── Secp256k1Context.java
│   │   │       │   ├── org_bitcoin_NativeSecp256k1.c
│   │   │       │   ├── org_bitcoin_NativeSecp256k1.h
│   │   │       │   ├── org_bitcoin_Secp256k1Context.c
│   │   │       │   └── org_bitcoin_Secp256k1Context.h
│   │   │       ├── modules/
│   │   │       │   ├── ecdh/
│   │   │       │   │   ├── Makefile.am.include
│   │   │       │   │   ├── main_impl.h
│   │   │       │   │   └── tests_impl.h
│   │   │       │   └── recovery/
│   │   │       │       ├── Makefile.am.include
│   │   │       │       ├── main_impl.h
│   │   │       │       └── tests_impl.h
│   │   │       ├── num.h
│   │   │       ├── num_gmp.h
│   │   │       ├── num_gmp_impl.h
│   │   │       ├── num_impl.h
│   │   │       ├── scalar.h
│   │   │       ├── scalar_4x64.h
│   │   │       ├── scalar_4x64_impl.h
│   │   │       ├── scalar_8x32.h
│   │   │       ├── scalar_8x32_impl.h
│   │   │       ├── scalar_impl.h
│   │   │       ├── scalar_low.h
│   │   │       ├── scalar_low_impl.h
│   │   │       ├── secp256k1.c
│   │   │       ├── testrand.h
│   │   │       ├── testrand_impl.h
│   │   │       ├── tests.c
│   │   │       ├── tests_exhaustive.c
│   │   │       └── util.h
│   │   ├── panic_cb.go
│   │   └── secp256.go
│   ├── sha3/
│   │   ├── LICENSE
│   │   ├── PATENTS
│   │   ├── doc.go
│   │   ├── hashes.go
│   │   ├── keccakf.go
│   │   ├── keccakf_amd64.go
│   │   ├── keccakf_amd64.s
│   │   ├── register.go
│   │   ├── sha3.go
│   │   ├── shake.go
│   │   ├── testdata/
│   │   │   └── keccakKats.json.deflate
│   │   ├── xor.go
│   │   ├── xor_generic.go
│   │   └── xor_unaligned.go
│   ├── signature_cgo.go
│   └── signature_nocgo.go
├── dashboard/
│   ├── README.md
│   ├── assets/
│   │   ├── .eslintrc
│   │   ├── .flowconfig
│   │   ├── common.jsx
│   │   ├── components/
│   │   │   ├── Body.jsx
│   │   │   ├── ChartRow.jsx
│   │   │   ├── CustomTooltip.jsx
│   │   │   ├── Dashboard.jsx
│   │   │   ├── Footer.jsx
│   │   │   ├── Header.jsx
│   │   │   ├── Logs.jsx
│   │   │   ├── Main.jsx
│   │   │   └── SideBar.jsx
│   │   ├── fa-only-woff-loader.js
│   │   ├── index.html
│   │   ├── index.jsx
│   │   ├── package.json
│   │   ├── types/
│   │   │   └── content.jsx
│   │   └── webpack.config.js
│   ├── assets.go
│   ├── config.go
│   ├── cpu.go
│   ├── cpu_windows.go
│   ├── dashboard.go
│   ├── log.go
│   └── message.go
├── event/
│   ├── event.go
│   ├── feed.go
│   ├── filter/
│   │   ├── filter.go
│   │   └── generic_filter.go
│   └── subscription.go
├── interfaces.go
├── internal/
│   ├── build/
│   │   ├── archive.go
│   │   ├── azure.go
│   │   ├── env.go
│   │   ├── pgp.go
│   │   └── util.go
│   ├── cmdtest/
│   │   └── test_cmd.go
│   ├── debug/
│   │   ├── api.go
│   │   ├── flags.go
│   │   ├── loudpanic.go
│   │   ├── loudpanic_fallback.go
│   │   ├── trace.go
│   │   └── trace_fallback.go
│   ├── ethapi/
│   │   ├── SRC20Api.go
│   │   ├── addrlock.go
│   │   ├── api.go
│   │   ├── api_abi.go
│   │   ├── api_exchange.go
│   │   ├── api_flight.go
│   │   ├── api_light_node.go
│   │   ├── api_local.go
│   │   ├── api_proof.go
│   │   ├── api_ssi.go
│   │   ├── api_stake.go
│   │   ├── backend.go
│   │   ├── blockReward.go
│   │   ├── gentx.go
│   │   ├── instance.go
│   │   ├── json.go
│   │   └── util_test.go
│   ├── guide/
│   │   └── guide.go
│   ├── jsre/
│   │   ├── completion.go
│   │   ├── deps/
│   │   │   ├── bignumber.js
│   │   │   ├── bindata.go
│   │   │   ├── deps.go
│   │   │   └── web3.js
│   │   ├── jsre.go
│   │   └── pretty.go
│   └── web3ext/
│       └── web3ext.go
├── log/
│   ├── CONTRIBUTORS
│   ├── LICENSE
│   ├── README.md
│   ├── README_ETHEREUM.md
│   ├── doc.go
│   ├── format.go
│   ├── handler.go
│   ├── handler_glog.go
│   ├── handler_go13.go
│   ├── handler_go14.go
│   ├── logger.go
│   ├── root.go
│   ├── syslog.go
│   └── term/
│       ├── LICENSE
│       ├── terminal_appengine.go
│       ├── terminal_darwin.go
│       ├── terminal_freebsd.go
│       ├── terminal_linux.go
│       ├── terminal_netbsd.go
│       ├── terminal_notwindows.go
│       ├── terminal_openbsd.go
│       ├── terminal_solaris.go
│       └── terminal_windows.go
├── makepkg.sh
├── maketxpkg.sh
├── metrics/
│   ├── FORK.md
│   ├── LICENSE
│   ├── README.md
│   ├── counter.go
│   ├── debug.go
│   ├── disk.go
│   ├── disk_linux.go
│   ├── disk_nop.go
│   ├── ewma.go
│   ├── exp/
│   │   └── exp.go
│   ├── gauge.go
│   ├── gauge_float64.go
│   ├── graphite.go
│   ├── healthcheck.go
│   ├── histogram.go
│   ├── influxdb/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   └── influxdb.go
│   ├── json.go
│   ├── librato/
│   │   ├── client.go
│   │   └── librato.go
│   ├── log.go
│   ├── memory.md
│   ├── meter.go
│   ├── metrics.go
│   ├── opentsdb.go
│   ├── registry.go
│   ├── resetting_timer.go
│   ├── runtime.go
│   ├── runtime_cgo.go
│   ├── runtime_gccpufraction.go
│   ├── runtime_no_cgo.go
│   ├── runtime_no_gccpufraction.go
│   ├── sample.go
│   ├── syslog.go
│   ├── timer.go
│   ├── validate.sh
│   └── writer.go
├── miner/
│   ├── agent.go
│   ├── lotter.go
│   ├── miner.go
│   ├── pending_vote.go
│   ├── remote_agent.go
│   ├── unconfirmed.go
│   └── worker.go
├── node/
│   ├── api.go
│   ├── config.go
│   ├── defaults.go
│   ├── doc.go
│   ├── errors.go
│   ├── node.go
│   └── service.go
├── p2p/
│   ├── dial.go
│   ├── discover/
│   │   ├── database.go
│   │   ├── node.go
│   │   ├── ntp.go
│   │   ├── table.go
│   │   └── udp.go
│   ├── discv5/
│   │   ├── database.go
│   │   ├── metrics.go
│   │   ├── net.go
│   │   ├── node.go
│   │   ├── nodeevent_string.go
│   │   ├── ntp.go
│   │   ├── table.go
│   │   ├── ticket.go
│   │   ├── topic.go
│   │   └── udp.go
│   ├── enr/
│   │   ├── enr.go
│   │   ├── entries.go
│   │   └── idscheme.go
│   ├── message.go
│   ├── metrics.go
│   ├── nat/
│   │   ├── nat.go
│   │   ├── natpmp.go
│   │   └── natupnp.go
│   ├── netutil/
│   │   ├── error.go
│   │   ├── net.go
│   │   ├── toobig_notwindows.go
│   │   └── toobig_windows.go
│   ├── peer.go
│   ├── peer_error.go
│   ├── protocol.go
│   ├── protocols/
│   │   └── protocol.go
│   ├── rlpx.go
│   ├── server.go
│   ├── simulations/
│   │   ├── README.md
│   │   ├── adapters/
│   │   │   ├── docker.go
│   │   │   ├── exec.go
│   │   │   ├── inproc.go
│   │   │   ├── types.go
│   │   │   └── ws.go
│   │   ├── events.go
│   │   ├── examples/
│   │   │   ├── README.md
│   │   │   ├── ping-pong.go
│   │   │   └── ping-pong.sh
│   │   ├── http.go
│   │   ├── mocker.go
│   │   ├── network.go
│   │   ├── pipes/
│   │   │   └── pipes.go
│   │   └── simulation.go
│   └── testing/
│       ├── peerpool.go
│       ├── protocolsession.go
│       └── protocoltester.go
├── params/
│   ├── bootnodes.go
│   ├── config.go
│   ├── denomination.go
│   ├── gas_table.go
│   ├── network_params.go
│   ├── protocol_params.go
│   └── version.go
├── rlp/
│   ├── decode.go
│   ├── doc.go
│   ├── encode.go
│   ├── raw.go
│   └── typecache.go
├── rpc/
│   ├── client.go
│   ├── doc.go
│   ├── endpoints.go
│   ├── errors.go
│   ├── http.go
│   ├── inproc.go
│   ├── ipc.go
│   ├── ipc_unix.go
│   ├── ipc_windows.go
│   ├── json.go
│   ├── server.go
│   ├── subscription.go
│   ├── types.go
│   ├── utils.go
│   └── websocket.go
├── sero/
│   ├── api.go
│   ├── api_backend.go
│   ├── api_tracer.go
│   ├── backend.go
│   ├── backup.go
│   ├── bloombits.go
│   ├── config.go
│   ├── downloader/
│   │   ├── api.go
│   │   ├── downloader.go
│   │   ├── events.go
│   │   ├── fakepeer.go
│   │   ├── metrics.go
│   │   ├── modes.go
│   │   ├── peer.go
│   │   ├── queue.go
│   │   ├── statesync.go
│   │   └── types.go
│   ├── fetcher/
│   │   ├── fetcher.go
│   │   └── metrics.go
│   ├── filters/
│   │   ├── api.go
│   │   ├── filter.go
│   │   └── filter_system.go
│   ├── gasprice/
│   │   └── gasprice.go
│   ├── gen_config.go
│   ├── handler.go
│   ├── metrics.go
│   ├── peer.go
│   ├── protocol.go
│   ├── sync.go
│   └── tracers/
│       ├── internal/
│       │   └── tracers/
│       │       ├── 4byte_tracer.js
│       │       ├── assets.go
│       │       ├── bigram_tracer.js
│       │       ├── call_tracer.js
│       │       ├── evmdis_tracer.js
│       │       ├── noop_tracer.js
│       │       ├── opcount_tracer.js
│       │       ├── prestate_tracer.js
│       │       ├── tracers.go
│       │       ├── trigram_tracer.js
│       │       └── unigram_tracer.js
│       ├── testdata/
│       │   ├── call_tracer_create.json
│       │   ├── call_tracer_deep_calls.json
│       │   ├── call_tracer_delegatecall.json
│       │   ├── call_tracer_inner_create_oog_outer_throw.json
│       │   ├── call_tracer_inner_throw_outer_revert.json
│       │   ├── call_tracer_oog.json
│       │   ├── call_tracer_revert.json
│       │   ├── call_tracer_simple.json
│       │   └── call_tracer_throw.json
│       ├── tracer.go
│       └── tracers.go
├── seroclient/
│   └── seroclient.go
├── serodb/
│   ├── .gitignore
│   ├── database.go
│   ├── interface.go
│   └── memory_database.go
├── serostats/
│   └── serostats.go
├── tests/
│   ├── abigen/
│   │   ├── testAbi.go
│   │   └── testAbi.sol
│   ├── abigen_test.go
│   ├── block_test.go
│   ├── block_test_util.go
│   ├── difficulty_test.go
│   ├── difficulty_test_util.go
│   ├── gen_btheader.go
│   ├── gen_difficultytest.go
│   ├── gen_stenv.go
│   ├── gen_sttransaction.go
│   ├── gen_tttransaction.go
│   ├── gen_vmexec.go
│   ├── init.go
│   ├── init_test.go
│   ├── rlp_test.go
│   ├── rlp_test_util.go
│   ├── state_test.go
│   ├── state_test_util.go
│   ├── transaction_test_util.go
│   ├── vm_test.go
│   └── vm_test_util.go
├── trie/
│   ├── database.go
│   ├── encoding.go
│   ├── errors.go
│   ├── hasher.go
│   ├── iterator.go
│   ├── node.go
│   ├── proof.go
│   ├── secure_trie.go
│   ├── sync.go
│   └── trie.go
├── vendor/
│   ├── bazil.org/
│   │   └── fuse/
│   │       ├── LICENSE
│   │       ├── README.md
│   │       ├── buffer.go
│   │       ├── debug.go
│   │       ├── error_darwin.go
│   │       ├── error_freebsd.go
│   │       ├── error_linux.go
│   │       ├── error_std.go
│   │       ├── fs/
│   │       │   ├── serve.go
│   │       │   └── tree.go
│   │       ├── fuse.go
│   │       ├── fuse.iml
│   │       ├── fuse_darwin.go
│   │       ├── fuse_freebsd.go
│   │       ├── fuse_kernel.go
│   │       ├── fuse_kernel_darwin.go
│   │       ├── fuse_kernel_freebsd.go
│   │       ├── fuse_kernel_linux.go
│   │       ├── fuse_kernel_std.go
│   │       ├── fuse_linux.go
│   │       ├── fuseutil/
│   │       │   └── fuseutil.go
│   │       ├── mount.go
│   │       ├── mount_darwin.go
│   │       ├── mount_freebsd.go
│   │       ├── mount_linux.go
│   │       ├── options.go
│   │       ├── options_darwin.go
│   │       ├── options_freebsd.go
│   │       ├── options_linux.go
│   │       ├── protocol.go
│   │       ├── unmount.go
│   │       ├── unmount_linux.go
│   │       └── unmount_std.go
│   ├── github.com/
│   │   ├── Azure/
│   │   │   ├── azure-pipeline-go/
│   │   │   │   ├── LICENSE
│   │   │   │   └── pipeline/
│   │   │   │       ├── core.go
│   │   │   │       ├── defaultlog_syslog.go
│   │   │   │       ├── defaultlog_windows.go
│   │   │   │       ├── doc.go
│   │   │   │       ├── error.go
│   │   │   │       ├── progress.go
│   │   │   │       ├── request.go
│   │   │   │       ├── response.go
│   │   │   │       └── version.go
│   │   │   ├── azure-sdk-for-go/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   └── glide.yaml
│   │   │   └── azure-storage-blob-go/
│   │   │       ├── 2018-03-28/
│   │   │       │   └── azblob/
│   │   │       │       ├── access_conditions.go
│   │   │       │       ├── atomicmorph.go
│   │   │       │       ├── highlevel.go
│   │   │       │       ├── parsing_urls.go
│   │   │       │       ├── sas_service.go
│   │   │       │       ├── service_codes_blob.go
│   │   │       │       ├── url_append_blob.go
│   │   │       │       ├── url_blob.go
│   │   │       │       ├── url_block_blob.go
│   │   │       │       ├── url_container.go
│   │   │       │       ├── url_page_blob.go
│   │   │       │       ├── url_service.go
│   │   │       │       ├── version.go
│   │   │       │       ├── zc_credential_anonymous.go
│   │   │       │       ├── zc_credential_shared_key.go
│   │   │       │       ├── zc_credential_token.go
│   │   │       │       ├── zc_mmf_unix.go
│   │   │       │       ├── zc_mmf_windows.go
│   │   │       │       ├── zc_pipeline.go
│   │   │       │       ├── zc_policy_request_log.go
│   │   │       │       ├── zc_policy_retry.go
│   │   │       │       ├── zc_policy_telemetry.go
│   │   │       │       ├── zc_policy_unique_request_id.go
│   │   │       │       ├── zc_retry_reader.go
│   │   │       │       ├── zc_sas_account.go
│   │   │       │       ├── zc_sas_query_params.go
│   │   │       │       ├── zc_service_codes_common.go
│   │   │       │       ├── zc_storage_error.go
│   │   │       │       ├── zc_util_validate.go
│   │   │       │       ├── zc_uuid.go
│   │   │       │       ├── zt_doc.go
│   │   │       │       ├── zz_generated_append_blob.go
│   │   │       │       ├── zz_generated_blob.go
│   │   │       │       ├── zz_generated_block_blob.go
│   │   │       │       ├── zz_generated_client.go
│   │   │       │       ├── zz_generated_container.go
│   │   │       │       ├── zz_generated_models.go
│   │   │       │       ├── zz_generated_page_blob.go
│   │   │       │       ├── zz_generated_responder_policy.go
│   │   │       │       ├── zz_generated_response_error.go
│   │   │       │       ├── zz_generated_service.go
│   │   │       │       ├── zz_generated_validation.go
│   │   │       │       ├── zz_generated_version.go
│   │   │       │       └── zz_response_helpers.go
│   │   │       └── LICENSE
│   │   ├── StackExchange/
│   │   │   └── wmi/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── swbemservices.go
│   │   │       └── wmi.go
│   │   ├── aristanetworks/
│   │   │   └── goarista/
│   │   │       ├── .travis.yml
│   │   │       ├── AUTHORS
│   │   │       ├── COPYING
│   │   │       ├── Dockerfile
│   │   │       ├── Makefile
│   │   │       ├── README.md
│   │   │       ├── check_line_len.awk
│   │   │       ├── iptables.sh
│   │   │       ├── monotime/
│   │   │       │   ├── issue15006.s
│   │   │       │   └── nanotime.go
│   │   │       └── rpmbuild.sh
│   │   ├── btcsuite/
│   │   │   └── btcutil/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── address.go
│   │   │       ├── amount.go
│   │   │       ├── appdata.go
│   │   │       ├── base58/
│   │   │       │   ├── README.md
│   │   │       │   ├── alphabet.go
│   │   │       │   ├── base58.go
│   │   │       │   ├── base58check.go
│   │   │       │   ├── cov_report.sh
│   │   │       │   ├── doc.go
│   │   │       │   └── genalphabet.go
│   │   │       ├── bech32/
│   │   │       │   ├── README.md
│   │   │       │   ├── bech32.go
│   │   │       │   └── doc.go
│   │   │       ├── block.go
│   │   │       ├── certgen.go
│   │   │       ├── const.go
│   │   │       ├── cov_report.sh
│   │   │       ├── doc.go
│   │   │       ├── goclean.sh
│   │   │       ├── hash160.go
│   │   │       ├── net.go
│   │   │       ├── net_noop.go
│   │   │       ├── test_coverage.txt
│   │   │       ├── tx.go
│   │   │       └── wif.go
│   │   ├── cespare/
│   │   │   └── cp/
│   │   │       ├── LICENSE.txt
│   │   │       ├── README.md
│   │   │       └── cp.go
│   │   ├── codahale/
│   │   │   └── hdrhistogram/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── hdr.go
│   │   │       └── window.go
│   │   ├── davecgh/
│   │   │   └── go-spew/
│   │   │       ├── .gitignore
│   │   │       ├── .travis.yml
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── cov_report.sh
│   │   │       ├── spew/
│   │   │       │   ├── bypass.go
│   │   │       │   ├── bypasssafe.go
│   │   │       │   ├── common.go
│   │   │       │   ├── config.go
│   │   │       │   ├── doc.go
│   │   │       │   ├── dump.go
│   │   │       │   ├── format.go
│   │   │       │   └── spew.go
│   │   │       └── test_coverage.txt
│   │   ├── deckarep/
│   │   │   └── golang-set/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── iterator.go
│   │   │       ├── set.go
│   │   │       ├── threadsafe.go
│   │   │       └── threadunsafe.go
│   │   ├── dgrijalva/
│   │   │   └── jwt-go/
│   │   │       ├── LICENSE
│   │   │       ├── MIGRATION_GUIDE.md
│   │   │       ├── README.md
│   │   │       ├── VERSION_HISTORY.md
│   │   │       ├── claims.go
│   │   │       ├── doc.go
│   │   │       ├── ecdsa.go
│   │   │       ├── ecdsa_utils.go
│   │   │       ├── errors.go
│   │   │       ├── hmac.go
│   │   │       ├── map_claims.go
│   │   │       ├── none.go
│   │   │       ├── parser.go
│   │   │       ├── rsa.go
│   │   │       ├── rsa_pss.go
│   │   │       ├── rsa_utils.go
│   │   │       ├── signing_method.go
│   │   │       └── token.go
│   │   ├── docker/
│   │   │   └── docker/
│   │   │       ├── LICENSE
│   │   │       ├── NOTICE
│   │   │       └── pkg/
│   │   │           └── reexec/
│   │   │               ├── README.md
│   │   │               ├── command_linux.go
│   │   │               ├── command_unix.go
│   │   │               ├── command_unsupported.go
│   │   │               ├── command_windows.go
│   │   │               └── reexec.go
│   │   ├── edsrzf/
│   │   │   └── mmap-go/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── mmap.go
│   │   │       ├── mmap_unix.go
│   │   │       ├── mmap_windows.go
│   │   │       ├── msync_netbsd.go
│   │   │       └── msync_unix.go
│   │   ├── elastic/
│   │   │   └── gosigar/
│   │   │       ├── CHANGELOG.md
│   │   │       ├── LICENSE
│   │   │       ├── NOTICE
│   │   │       ├── README.md
│   │   │       ├── Vagrantfile
│   │   │       ├── codecov.yml
│   │   │       ├── concrete_sigar.go
│   │   │       ├── sigar_darwin.go
│   │   │       ├── sigar_format.go
│   │   │       ├── sigar_freebsd.go
│   │   │       ├── sigar_interface.go
│   │   │       ├── sigar_linux.go
│   │   │       ├── sigar_linux_common.go
│   │   │       ├── sigar_openbsd.go
│   │   │       ├── sigar_stub.go
│   │   │       ├── sigar_unix.go
│   │   │       ├── sigar_util.go
│   │   │       ├── sigar_windows.go
│   │   │       └── sys/
│   │   │           └── windows/
│   │   │               ├── doc.go
│   │   │               ├── ntquery.go
│   │   │               ├── privileges.go
│   │   │               ├── syscall_windows.go
│   │   │               ├── version.go
│   │   │               └── zsyscall_windows.go
│   │   ├── fatih/
│   │   │   └── color/
│   │   │       ├── LICENSE.md
│   │   │       ├── README.md
│   │   │       ├── color.go
│   │   │       └── doc.go
│   │   ├── fjl/
│   │   │   └── memsize/
│   │   │       ├── LICENSE
│   │   │       ├── bitmap.go
│   │   │       ├── doc.go
│   │   │       ├── memsize.go
│   │   │       ├── memsizeui/
│   │   │       │   ├── template.go
│   │   │       │   └── ui.go
│   │   │       ├── runtimefunc.go
│   │   │       ├── runtimefunc.s
│   │   │       └── type.go
│   │   ├── gizak/
│   │   │   └── termui/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── barchart.go
│   │   │       ├── block.go
│   │   │       ├── block_common.go
│   │   │       ├── block_windows.go
│   │   │       ├── buffer.go
│   │   │       ├── canvas.go
│   │   │       ├── config.py
│   │   │       ├── doc.go
│   │   │       ├── events.go
│   │   │       ├── gauge.go
│   │   │       ├── glide.yaml
│   │   │       ├── grid.go
│   │   │       ├── helper.go
│   │   │       ├── linechart.go
│   │   │       ├── linechart_others.go
│   │   │       ├── linechart_windows.go
│   │   │       ├── list.go
│   │   │       ├── mbarchart.go
│   │   │       ├── mkdocs.yml
│   │   │       ├── par.go
│   │   │       ├── pos.go
│   │   │       ├── render.go
│   │   │       ├── sparkline.go
│   │   │       ├── table.go
│   │   │       ├── textbuilder.go
│   │   │       ├── theme.go
│   │   │       └── widget.go
│   │   ├── go-ole/
│   │   │   └── go-ole/
│   │   │       ├── ChangeLog.md
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── appveyor.yml
│   │   │       ├── com.go
│   │   │       ├── com_func.go
│   │   │       ├── connect.go
│   │   │       ├── constants.go
│   │   │       ├── error.go
│   │   │       ├── error_func.go
│   │   │       ├── error_windows.go
│   │   │       ├── guid.go
│   │   │       ├── iconnectionpoint.go
│   │   │       ├── iconnectionpoint_func.go
│   │   │       ├── iconnectionpoint_windows.go
│   │   │       ├── iconnectionpointcontainer.go
│   │   │       ├── iconnectionpointcontainer_func.go
│   │   │       ├── iconnectionpointcontainer_windows.go
│   │   │       ├── idispatch.go
│   │   │       ├── idispatch_func.go
│   │   │       ├── idispatch_windows.go
│   │   │       ├── ienumvariant.go
│   │   │       ├── ienumvariant_func.go
│   │   │       ├── ienumvariant_windows.go
│   │   │       ├── iinspectable.go
│   │   │       ├── iinspectable_func.go
│   │   │       ├── iinspectable_windows.go
│   │   │       ├── iprovideclassinfo.go
│   │   │       ├── iprovideclassinfo_func.go
│   │   │       ├── iprovideclassinfo_windows.go
│   │   │       ├── itypeinfo.go
│   │   │       ├── itypeinfo_func.go
│   │   │       ├── itypeinfo_windows.go
│   │   │       ├── iunknown.go
│   │   │       ├── iunknown_func.go
│   │   │       ├── iunknown_windows.go
│   │   │       ├── ole.go
│   │   │       ├── oleutil/
│   │   │       │   ├── connection.go
│   │   │       │   ├── connection_func.go
│   │   │       │   ├── connection_windows.go
│   │   │       │   ├── go-get.go
│   │   │       │   └── oleutil.go
│   │   │       ├── safearray.go
│   │   │       ├── safearray_func.go
│   │   │       ├── safearray_windows.go
│   │   │       ├── safearrayconversion.go
│   │   │       ├── safearrayslices.go
│   │   │       ├── utility.go
│   │   │       ├── variables.go
│   │   │       ├── variant.go
│   │   │       ├── variant_386.go
│   │   │       ├── variant_amd64.go
│   │   │       ├── variant_s390x.go
│   │   │       ├── vt_string.go
│   │   │       ├── winrt.go
│   │   │       └── winrt_doc.go
│   │   ├── go-stack/
│   │   │   └── stack/
│   │   │       ├── LICENSE.md
│   │   │       ├── README.md
│   │   │       └── stack.go
│   │   ├── golang/
│   │   │   ├── protobuf/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── proto/
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── clone.go
│   │   │   │   │   ├── decode.go
│   │   │   │   │   ├── encode.go
│   │   │   │   │   ├── equal.go
│   │   │   │   │   ├── extensions.go
│   │   │   │   │   ├── lib.go
│   │   │   │   │   ├── message_set.go
│   │   │   │   │   ├── pointer_reflect.go
│   │   │   │   │   ├── pointer_unsafe.go
│   │   │   │   │   ├── properties.go
│   │   │   │   │   ├── text.go
│   │   │   │   │   └── text_parser.go
│   │   │   │   └── protoc-gen-go/
│   │   │   │       └── descriptor/
│   │   │   │           ├── Makefile
│   │   │   │           └── descriptor.pb.go
│   │   │   └── snappy/
│   │   │       ├── AUTHORS
│   │   │       ├── CONTRIBUTORS
│   │   │       ├── LICENSE
│   │   │       ├── README
│   │   │       ├── decode.go
│   │   │       ├── decode_amd64.go
│   │   │       ├── decode_amd64.s
│   │   │       ├── decode_other.go
│   │   │       ├── encode.go
│   │   │       ├── encode_amd64.go
│   │   │       ├── encode_amd64.s
│   │   │       ├── encode_other.go
│   │   │       └── snappy.go
│   │   ├── gosuri/
│   │   │   ├── uilive/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── doc.go
│   │   │   │   ├── writer.go
│   │   │   │   ├── writer_posix.go
│   │   │   │   └── writer_windows.go
│   │   │   └── uiprogress/
│   │   │       ├── LICENSE
│   │   │       ├── Makefile
│   │   │       ├── README.md
│   │   │       ├── bar.go
│   │   │       ├── doc.go
│   │   │       ├── progress.go
│   │   │       └── util/
│   │   │           └── strutil/
│   │   │               └── strutil.go
│   │   ├── hashicorp/
│   │   │   └── golang-lru/
│   │   │       ├── 2q.go
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── arc.go
│   │   │       ├── lru.go
│   │   │       └── simplelru/
│   │   │           └── lru.go
│   │   ├── huin/
│   │   │   └── goupnp/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── dcps/
│   │   │       │   ├── internetgateway1/
│   │   │       │   │   └── internetgateway1.go
│   │   │       │   └── internetgateway2/
│   │   │       │       └── internetgateway2.go
│   │   │       ├── device.go
│   │   │       ├── goupnp.go
│   │   │       ├── httpu/
│   │   │       │   ├── httpu.go
│   │   │       │   └── serve.go
│   │   │       ├── scpd/
│   │   │       │   └── scpd.go
│   │   │       ├── service_client.go
│   │   │       ├── soap/
│   │   │       │   ├── soap.go
│   │   │       │   └── types.go
│   │   │       └── ssdp/
│   │   │           ├── registry.go
│   │   │           └── ssdp.go
│   │   ├── influxdata/
│   │   │   └── influxdb/
│   │   │       ├── LICENSE
│   │   │       ├── LICENSE_OF_DEPENDENCIES.md
│   │   │       ├── client/
│   │   │       │   ├── README.md
│   │   │       │   ├── influxdb.go
│   │   │       │   └── v2/
│   │   │       │       ├── client.go
│   │   │       │       └── udp.go
│   │   │       ├── models/
│   │   │       │   ├── consistency.go
│   │   │       │   ├── inline_fnv.go
│   │   │       │   ├── inline_strconv_parse.go
│   │   │       │   ├── points.go
│   │   │       │   ├── rows.go
│   │   │       │   ├── statistic.go
│   │   │       │   ├── time.go
│   │   │       │   └── uint_support.go
│   │   │       └── pkg/
│   │   │           └── escape/
│   │   │               ├── bytes.go
│   │   │               └── strings.go
│   │   ├── jackpal/
│   │   │   └── go-nat-pmp/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── natpmp.go
│   │   │       ├── network.go
│   │   │       └── recorder.go
│   │   ├── julienschmidt/
│   │   │   └── httprouter/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── path.go
│   │   │       ├── router.go
│   │   │       └── tree.go
│   │   ├── karalabe/
│   │   │   └── hid/
│   │   │       ├── LICENSE.md
│   │   │       ├── README.md
│   │   │       ├── appveyor.yml
│   │   │       ├── hid.go
│   │   │       ├── hid_disabled.go
│   │   │       ├── hid_enabled.go
│   │   │       ├── hidapi/
│   │   │       │   ├── AUTHORS.txt
│   │   │       │   ├── LICENSE-bsd.txt
│   │   │       │   ├── LICENSE-gpl3.txt
│   │   │       │   ├── LICENSE-orig.txt
│   │   │       │   ├── LICENSE.txt
│   │   │       │   ├── README.txt
│   │   │       │   ├── hidapi/
│   │   │       │   │   └── hidapi.h
│   │   │       │   ├── libusb/
│   │   │       │   │   └── hid.c
│   │   │       │   ├── mac/
│   │   │       │   │   └── hid.c
│   │   │       │   └── windows/
│   │   │       │       └── hid.c
│   │   │       ├── libusb/
│   │   │       │   ├── AUTHORS
│   │   │       │   ├── COPYING
│   │   │       │   └── libusb/
│   │   │       │       ├── config.h
│   │   │       │       ├── core.c
│   │   │       │       ├── descriptor.c
│   │   │       │       ├── hotplug.c
│   │   │       │       ├── hotplug.h
│   │   │       │       ├── io.c
│   │   │       │       ├── libusb.h
│   │   │       │       ├── libusbi.h
│   │   │       │       ├── os/
│   │   │       │       │   ├── darwin_usb.c
│   │   │       │       │   ├── darwin_usb.h
│   │   │       │       │   ├── haiku_pollfs.cpp
│   │   │       │       │   ├── haiku_usb.h
│   │   │       │       │   ├── haiku_usb_backend.cpp
│   │   │       │       │   ├── haiku_usb_raw.cpp
│   │   │       │       │   ├── haiku_usb_raw.h
│   │   │       │       │   ├── linux_netlink.c
│   │   │       │       │   ├── linux_udev.c
│   │   │       │       │   ├── linux_usbfs.c
│   │   │       │       │   ├── linux_usbfs.h
│   │   │       │       │   ├── netbsd_usb.c
│   │   │       │       │   ├── openbsd_usb.c
│   │   │       │       │   ├── poll_posix.c
│   │   │       │       │   ├── poll_posix.h
│   │   │       │       │   ├── poll_windows.c
│   │   │       │       │   ├── poll_windows.h
│   │   │       │       │   ├── sunos_usb.c
│   │   │       │       │   ├── sunos_usb.h
│   │   │       │       │   ├── threads_posix.c
│   │   │       │       │   ├── threads_posix.h
│   │   │       │       │   ├── threads_windows.c
│   │   │       │       │   ├── threads_windows.h
│   │   │       │       │   ├── wince_usb.c
│   │   │       │       │   ├── wince_usb.h
│   │   │       │       │   ├── windows_common.h
│   │   │       │       │   ├── windows_nt_common.c
│   │   │       │       │   ├── windows_nt_common.h
│   │   │       │       │   ├── windows_usbdk.c
│   │   │       │       │   ├── windows_usbdk.h
│   │   │       │       │   ├── windows_winusb.c
│   │   │       │       │   └── windows_winusb.h
│   │   │       │       ├── strerror.c
│   │   │       │       ├── sync.c
│   │   │       │       ├── version.h
│   │   │       │       └── version_nano.h
│   │   │       └── wchar.go
│   │   ├── maruel/
│   │   │   └── panicparse/
│   │   │       ├── .travis.yml
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── stack/
│   │   │       │   ├── source.go
│   │   │       │   ├── stack.go
│   │   │       │   └── ui.go
│   │   │       └── vendor.yml
│   │   ├── mattn/
│   │   │   ├── go-colorable/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── colorable_others.go
│   │   │   │   ├── colorable_windows.go
│   │   │   │   └── noncolorable.go
│   │   │   ├── go-isatty/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── doc.go
│   │   │   │   ├── isatty_appengine.go
│   │   │   │   ├── isatty_bsd.go
│   │   │   │   ├── isatty_linux.go
│   │   │   │   ├── isatty_not_windows.go
│   │   │   │   ├── isatty_solaris.go
│   │   │   │   └── isatty_windows.go
│   │   │   └── go-runewidth/
│   │   │       ├── LICENSE
│   │   │       ├── README.mkd
│   │   │       ├── runewidth.go
│   │   │       ├── runewidth_js.go
│   │   │       ├── runewidth_posix.go
│   │   │       └── runewidth_windows.go
│   │   ├── mitchellh/
│   │   │   └── go-wordwrap/
│   │   │       ├── LICENSE.md
│   │   │       ├── README.md
│   │   │       └── wordwrap.go
│   │   ├── mohae/
│   │   │   └── deepcopy/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       └── deepcopy.go
│   │   ├── naoina/
│   │   │   ├── go-stringutil/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── da.go
│   │   │   │   └── strings.go
│   │   │   └── toml/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── ast/
│   │   │       │   └── ast.go
│   │   │       ├── config.go
│   │   │       ├── decode.go
│   │   │       ├── encode.go
│   │   │       ├── error.go
│   │   │       ├── parse.go
│   │   │       ├── parse.peg
│   │   │       ├── parse.peg.go
│   │   │       └── util.go
│   │   ├── nsf/
│   │   │   └── termbox-go/
│   │   │       ├── AUTHORS
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── api.go
│   │   │       ├── api_common.go
│   │   │       ├── api_windows.go
│   │   │       ├── collect_terminfo.py
│   │   │       ├── syscalls.go
│   │   │       ├── syscalls_darwin.go
│   │   │       ├── syscalls_darwin_amd64.go
│   │   │       ├── syscalls_dragonfly.go
│   │   │       ├── syscalls_freebsd.go
│   │   │       ├── syscalls_linux.go
│   │   │       ├── syscalls_netbsd.go
│   │   │       ├── syscalls_openbsd.go
│   │   │       ├── syscalls_windows.go
│   │   │       ├── termbox.go
│   │   │       ├── termbox_common.go
│   │   │       ├── termbox_windows.go
│   │   │       ├── terminfo.go
│   │   │       └── terminfo_builtin.go
│   │   ├── olekukonko/
│   │   │   └── tablewriter/
│   │   │       ├── LICENCE.md
│   │   │       ├── README.md
│   │   │       ├── csv.go
│   │   │       ├── table.go
│   │   │       ├── test.csv
│   │   │       ├── test_info.csv
│   │   │       ├── util.go
│   │   │       └── wrap.go
│   │   ├── opentracing/
│   │   │   └── opentracing-go/
│   │   │       ├── CHANGELOG.md
│   │   │       ├── LICENSE
│   │   │       ├── Makefile
│   │   │       ├── README.md
│   │   │       ├── ext/
│   │   │       │   └── tags.go
│   │   │       ├── globaltracer.go
│   │   │       ├── gocontext.go
│   │   │       ├── log/
│   │   │       │   ├── field.go
│   │   │       │   └── util.go
│   │   │       ├── noop.go
│   │   │       ├── propagation.go
│   │   │       ├── span.go
│   │   │       └── tracer.go
│   │   ├── pborman/
│   │   │   └── uuid/
│   │   │       ├── CONTRIBUTING.md
│   │   │       ├── CONTRIBUTORS
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── dce.go
│   │   │       ├── doc.go
│   │   │       ├── hash.go
│   │   │       ├── marshal.go
│   │   │       ├── node.go
│   │   │       ├── sql.go
│   │   │       ├── time.go
│   │   │       ├── util.go
│   │   │       ├── uuid.go
│   │   │       ├── version1.go
│   │   │       └── version4.go
│   │   ├── peterh/
│   │   │   └── liner/
│   │   │       ├── COPYING
│   │   │       ├── README.md
│   │   │       ├── bsdinput.go
│   │   │       ├── common.go
│   │   │       ├── fallbackinput.go
│   │   │       ├── input.go
│   │   │       ├── input_darwin.go
│   │   │       ├── input_linux.go
│   │   │       ├── input_windows.go
│   │   │       ├── line.go
│   │   │       ├── output.go
│   │   │       ├── output_windows.go
│   │   │       ├── unixmode.go
│   │   │       └── width.go
│   │   ├── pkg/
│   │   │   └── errors/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── appveyor.yml
│   │   │       ├── errors.go
│   │   │       └── stack.go
│   │   ├── pmezard/
│   │   │   └── go-difflib/
│   │   │       ├── LICENSE
│   │   │       └── difflib/
│   │   │           └── difflib.go
│   │   ├── prometheus/
│   │   │   └── prometheus/
│   │   │       ├── LICENSE
│   │   │       ├── NOTICE
│   │   │       └── util/
│   │   │           └── flock/
│   │   │               ├── flock.go
│   │   │               ├── flock_plan9.go
│   │   │               ├── flock_solaris.go
│   │   │               ├── flock_unix.go
│   │   │               └── flock_windows.go
│   │   ├── rjeczalik/
│   │   │   └── notify/
│   │   │       ├── AUTHORS
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── appveyor.yml
│   │   │       ├── debug.go
│   │   │       ├── debug_debug.go
│   │   │       ├── debug_nodebug.go
│   │   │       ├── doc.go
│   │   │       ├── event.go
│   │   │       ├── event_fen.go
│   │   │       ├── event_fsevents.go
│   │   │       ├── event_inotify.go
│   │   │       ├── event_kqueue.go
│   │   │       ├── event_readdcw.go
│   │   │       ├── event_stub.go
│   │   │       ├── event_trigger.go
│   │   │       ├── node.go
│   │   │       ├── notify.go
│   │   │       ├── tree.go
│   │   │       ├── tree_nonrecursive.go
│   │   │       ├── tree_recursive.go
│   │   │       ├── util.go
│   │   │       ├── watcher.go
│   │   │       ├── watcher_fen.go
│   │   │       ├── watcher_fen_cgo.go
│   │   │       ├── watcher_fsevents.go
│   │   │       ├── watcher_fsevents_cgo.go
│   │   │       ├── watcher_inotify.go
│   │   │       ├── watcher_kqueue.go
│   │   │       ├── watcher_notimplemented.go
│   │   │       ├── watcher_readdcw.go
│   │   │       ├── watcher_stub.go
│   │   │       ├── watcher_trigger.go
│   │   │       ├── watchpoint.go
│   │   │       ├── watchpoint_other.go
│   │   │       └── watchpoint_readdcw.go
│   │   ├── robertkrimen/
│   │   │   └── otto/
│   │   │       ├── DESIGN.markdown
│   │   │       ├── LICENSE
│   │   │       ├── Makefile
│   │   │       ├── README.markdown
│   │   │       ├── ast/
│   │   │       │   ├── README.markdown
│   │   │       │   ├── comments.go
│   │   │       │   └── node.go
│   │   │       ├── builtin.go
│   │   │       ├── builtin_array.go
│   │   │       ├── builtin_boolean.go
│   │   │       ├── builtin_date.go
│   │   │       ├── builtin_error.go
│   │   │       ├── builtin_function.go
│   │   │       ├── builtin_json.go
│   │   │       ├── builtin_math.go
│   │   │       ├── builtin_number.go
│   │   │       ├── builtin_object.go
│   │   │       ├── builtin_regexp.go
│   │   │       ├── builtin_string.go
│   │   │       ├── clone.go
│   │   │       ├── cmpl.go
│   │   │       ├── cmpl_evaluate.go
│   │   │       ├── cmpl_evaluate_expression.go
│   │   │       ├── cmpl_evaluate_statement.go
│   │   │       ├── cmpl_parse.go
│   │   │       ├── console.go
│   │   │       ├── dbg/
│   │   │       │   └── dbg.go
│   │   │       ├── dbg.go
│   │   │       ├── error.go
│   │   │       ├── evaluate.go
│   │   │       ├── file/
│   │   │       │   ├── README.markdown
│   │   │       │   └── file.go
│   │   │       ├── global.go
│   │   │       ├── inline.go
│   │   │       ├── inline.pl
│   │   │       ├── object.go
│   │   │       ├── object_class.go
│   │   │       ├── otto.go
│   │   │       ├── otto_.go
│   │   │       ├── parser/
│   │   │       │   ├── Makefile
│   │   │       │   ├── README.markdown
│   │   │       │   ├── dbg.go
│   │   │       │   ├── error.go
│   │   │       │   ├── expression.go
│   │   │       │   ├── lexer.go
│   │   │       │   ├── parser.go
│   │   │       │   ├── regexp.go
│   │   │       │   ├── scope.go
│   │   │       │   └── statement.go
│   │   │       ├── property.go
│   │   │       ├── registry/
│   │   │       │   ├── README.markdown
│   │   │       │   └── registry.go
│   │   │       ├── result.go
│   │   │       ├── runtime.go
│   │   │       ├── scope.go
│   │   │       ├── script.go
│   │   │       ├── stash.go
│   │   │       ├── token/
│   │   │       │   ├── Makefile
│   │   │       │   ├── README.markdown
│   │   │       │   ├── token.go
│   │   │       │   ├── token_const.go
│   │   │       │   └── tokenfmt
│   │   │       ├── type_arguments.go
│   │   │       ├── type_array.go
│   │   │       ├── type_boolean.go
│   │   │       ├── type_date.go
│   │   │       ├── type_error.go
│   │   │       ├── type_function.go
│   │   │       ├── type_go_array.go
│   │   │       ├── type_go_map.go
│   │   │       ├── type_go_slice.go
│   │   │       ├── type_go_struct.go
│   │   │       ├── type_number.go
│   │   │       ├── type_reference.go
│   │   │       ├── type_regexp.go
│   │   │       ├── type_string.go
│   │   │       ├── value.go
│   │   │       ├── value_boolean.go
│   │   │       ├── value_number.go
│   │   │       ├── value_primitive.go
│   │   │       └── value_string.go
│   │   ├── robfig/
│   │   │   └── cron/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── constantdelay.go
│   │   │       ├── cron.go
│   │   │       ├── doc.go
│   │   │       ├── parser.go
│   │   │       └── spec.go
│   │   ├── rs/
│   │   │   ├── cors/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── cors.go
│   │   │   │   └── utils.go
│   │   │   └── xhandler/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── chain.go
│   │   │       ├── middleware.go
│   │   │       └── xhandler.go
│   │   ├── stretchr/
│   │   │   └── testify/
│   │   │       ├── LICENSE
│   │   │       ├── assert/
│   │   │       │   ├── assertion_format.go
│   │   │       │   ├── assertion_format.go.tmpl
│   │   │       │   ├── assertion_forward.go
│   │   │       │   ├── assertion_forward.go.tmpl
│   │   │       │   ├── assertions.go
│   │   │       │   ├── doc.go
│   │   │       │   ├── errors.go
│   │   │       │   ├── forward_assertions.go
│   │   │       │   └── http_assertions.go
│   │   │       └── require/
│   │   │           ├── doc.go
│   │   │           ├── forward_requirements.go
│   │   │           ├── require.go
│   │   │           ├── require.go.tmpl
│   │   │           ├── require_forward.go
│   │   │           ├── require_forward.go.tmpl
│   │   │           └── requirements.go
│   │   ├── syndtr/
│   │   │   └── goleveldb/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       └── leveldb/
│   │   │           ├── batch.go
│   │   │           ├── cache/
│   │   │           │   ├── cache.go
│   │   │           │   └── lru.go
│   │   │           ├── comparer/
│   │   │           │   ├── bytes_comparer.go
│   │   │           │   └── comparer.go
│   │   │           ├── comparer.go
│   │   │           ├── db.go
│   │   │           ├── db_compaction.go
│   │   │           ├── db_iter.go
│   │   │           ├── db_snapshot.go
│   │   │           ├── db_state.go
│   │   │           ├── db_transaction.go
│   │   │           ├── db_util.go
│   │   │           ├── db_write.go
│   │   │           ├── doc.go
│   │   │           ├── errors/
│   │   │           │   └── errors.go
│   │   │           ├── errors.go
│   │   │           ├── filter/
│   │   │           │   ├── bloom.go
│   │   │           │   └── filter.go
│   │   │           ├── filter.go
│   │   │           ├── iterator/
│   │   │           │   ├── array_iter.go
│   │   │           │   ├── indexed_iter.go
│   │   │           │   ├── iter.go
│   │   │           │   └── merged_iter.go
│   │   │           ├── journal/
│   │   │           │   └── journal.go
│   │   │           ├── key.go
│   │   │           ├── memdb/
│   │   │           │   └── memdb.go
│   │   │           ├── opt/
│   │   │           │   └── options.go
│   │   │           ├── options.go
│   │   │           ├── session.go
│   │   │           ├── session_compaction.go
│   │   │           ├── session_record.go
│   │   │           ├── session_util.go
│   │   │           ├── storage/
│   │   │           │   ├── file_storage.go
│   │   │           │   ├── file_storage_nacl.go
│   │   │           │   ├── file_storage_plan9.go
│   │   │           │   ├── file_storage_solaris.go
│   │   │           │   ├── file_storage_unix.go
│   │   │           │   ├── file_storage_windows.go
│   │   │           │   ├── mem_storage.go
│   │   │           │   └── storage.go
│   │   │           ├── storage.go
│   │   │           ├── table/
│   │   │           │   ├── reader.go
│   │   │           │   ├── table.go
│   │   │           │   └── writer.go
│   │   │           ├── table.go
│   │   │           ├── util/
│   │   │           │   ├── buffer.go
│   │   │           │   ├── buffer_pool.go
│   │   │           │   ├── crc32.go
│   │   │           │   ├── hash.go
│   │   │           │   ├── range.go
│   │   │           │   └── util.go
│   │   │           ├── util.go
│   │   │           └── version.go
│   │   ├── tyler-smith/
│   │   │   └── go-bip39/
│   │   │       ├── Gopkg.toml
│   │   │       ├── LICENSE
│   │   │       ├── Makefile
│   │   │       ├── README.md
│   │   │       ├── bip39.go
│   │   │       └── wordlists/
│   │   │           ├── chinese_simplified.go
│   │   │           ├── chinese_traditional.go
│   │   │           ├── english.go
│   │   │           ├── french.go
│   │   │           ├── italian.go
│   │   │           ├── japanese.go
│   │   │           ├── korean.go
│   │   │           └── spanish.go
│   │   └── uber/
│   │       ├── jaeger-client-go/
│   │       │   ├── CHANGELOG.md
│   │       │   ├── CONTRIBUTING.md
│   │       │   ├── DCO
│   │       │   ├── Gopkg.toml
│   │       │   ├── LICENSE
│   │       │   ├── Makefile
│   │       │   ├── README.md
│   │       │   ├── RELEASE.md
│   │       │   ├── baggage_setter.go
│   │       │   ├── config/
│   │       │   │   ├── config.go
│   │       │   │   ├── config_env.go
│   │       │   │   └── options.go
│   │       │   ├── constants.go
│   │       │   ├── context.go
│   │       │   ├── contrib_observer.go
│   │       │   ├── doc.go
│   │       │   ├── glide.yaml
│   │       │   ├── header.go
│   │       │   ├── internal/
│   │       │   │   ├── baggage/
│   │       │   │   │   ├── remote/
│   │       │   │   │   │   ├── options.go
│   │       │   │   │   │   └── restriction_manager.go
│   │       │   │   │   └── restriction_manager.go
│   │       │   │   ├── spanlog/
│   │       │   │   │   └── json.go
│   │       │   │   └── throttler/
│   │       │   │       ├── remote/
│   │       │   │       │   ├── options.go
│   │       │   │       │   └── throttler.go
│   │       │   │       └── throttler.go
│   │       │   ├── interop.go
│   │       │   ├── jaeger_tag.go
│   │       │   ├── jaeger_thrift_span.go
│   │       │   ├── log/
│   │       │   │   └── logger.go
│   │       │   ├── logger.go
│   │       │   ├── metrics.go
│   │       │   ├── observer.go
│   │       │   ├── process.go
│   │       │   ├── propagation.go
│   │       │   ├── reference.go
│   │       │   ├── reporter.go
│   │       │   ├── reporter_options.go
│   │       │   ├── rpcmetrics/
│   │       │   │   ├── README.md
│   │       │   │   ├── doc.go
│   │       │   │   ├── endpoints.go
│   │       │   │   ├── metrics.go
│   │       │   │   ├── normalizer.go
│   │       │   │   └── observer.go
│   │       │   ├── sampler.go
│   │       │   ├── sampler_options.go
│   │       │   ├── span.go
│   │       │   ├── thrift/
│   │       │   │   ├── README.md
│   │       │   │   ├── application_exception.go
│   │       │   │   ├── binary_protocol.go
│   │       │   │   ├── compact_protocol.go
│   │       │   │   ├── exception.go
│   │       │   │   ├── memory_buffer.go
│   │       │   │   ├── messagetype.go
│   │       │   │   ├── numeric.go
│   │       │   │   ├── processor.go
│   │       │   │   ├── protocol.go
│   │       │   │   ├── protocol_exception.go
│   │       │   │   ├── protocol_factory.go
│   │       │   │   ├── rich_transport.go
│   │       │   │   ├── serializer.go
│   │       │   │   ├── simple_json_protocol.go
│   │       │   │   ├── transport.go
│   │       │   │   ├── transport_exception.go
│   │       │   │   ├── transport_factory.go
│   │       │   │   └── type.go
│   │       │   ├── thrift-gen/
│   │       │   │   ├── agent/
│   │       │   │   │   ├── agent.go
│   │       │   │   │   ├── constants.go
│   │       │   │   │   └── ttypes.go
│   │       │   │   ├── baggage/
│   │       │   │   │   ├── baggagerestrictionmanager.go
│   │       │   │   │   ├── constants.go
│   │       │   │   │   └── ttypes.go
│   │       │   │   ├── jaeger/
│   │       │   │   │   ├── agent.go
│   │       │   │   │   ├── constants.go
│   │       │   │   │   └── ttypes.go
│   │       │   │   ├── sampling/
│   │       │   │   │   ├── constants.go
│   │       │   │   │   ├── samplingmanager.go
│   │       │   │   │   └── ttypes.go
│   │       │   │   └── zipkincore/
│   │       │   │       ├── constants.go
│   │       │   │       ├── ttypes.go
│   │       │   │       └── zipkincollector.go
│   │       │   ├── tracer.go
│   │       │   ├── tracer_options.go
│   │       │   ├── transport.go
│   │       │   ├── transport_udp.go
│   │       │   ├── utils/
│   │       │   │   ├── http_json.go
│   │       │   │   ├── localip.go
│   │       │   │   ├── rand.go
│   │       │   │   ├── rate_limiter.go
│   │       │   │   ├── udp_client.go
│   │       │   │   └── utils.go
│   │       │   ├── zipkin.go
│   │       │   └── zipkin_thrift_span.go
│   │       └── jaeger-lib/
│   │           ├── LICENSE
│   │           └── metrics/
│   │               ├── counter.go
│   │               ├── factory.go
│   │               ├── gauge.go
│   │               ├── local.go
│   │               ├── metrics.go
│   │               ├── stopwatch.go
│   │               └── timer.go
│   ├── golang.org/
│   │   └── x/
│   │       ├── crypto/
│   │       │   ├── .gitattributes
│   │       │   ├── .gitignore
│   │       │   ├── AUTHORS
│   │       │   ├── CONTRIBUTING.md
│   │       │   ├── CONTRIBUTORS
│   │       │   ├── LICENSE
│   │       │   ├── PATENTS
│   │       │   ├── README
│   │       │   ├── cast5/
│   │       │   │   └── cast5.go
│   │       │   ├── codereview.cfg
│   │       │   ├── curve25519/
│   │       │   │   ├── const_amd64.h
│   │       │   │   ├── const_amd64.s
│   │       │   │   ├── cswap_amd64.s
│   │       │   │   ├── curve25519.go
│   │       │   │   ├── doc.go
│   │       │   │   ├── freeze_amd64.s
│   │       │   │   ├── ladderstep_amd64.s
│   │       │   │   ├── mont25519_amd64.go
│   │       │   │   ├── mul_amd64.s
│   │       │   │   └── square_amd64.s
│   │       │   ├── ed25519/
│   │       │   │   ├── ed25519.go
│   │       │   │   └── internal/
│   │       │   │       └── edwards25519/
│   │       │   │           ├── const.go
│   │       │   │           └── edwards25519.go
│   │       │   ├── openpgp/
│   │       │   │   ├── armor/
│   │       │   │   │   ├── armor.go
│   │       │   │   │   └── encode.go
│   │       │   │   ├── canonical_text.go
│   │       │   │   ├── elgamal/
│   │       │   │   │   └── elgamal.go
│   │       │   │   ├── errors/
│   │       │   │   │   └── errors.go
│   │       │   │   ├── keys.go
│   │       │   │   ├── packet/
│   │       │   │   │   ├── compressed.go
│   │       │   │   │   ├── config.go
│   │       │   │   │   ├── encrypted_key.go
│   │       │   │   │   ├── literal.go
│   │       │   │   │   ├── ocfb.go
│   │       │   │   │   ├── one_pass_signature.go
│   │       │   │   │   ├── opaque.go
│   │       │   │   │   ├── packet.go
│   │       │   │   │   ├── private_key.go
│   │       │   │   │   ├── public_key.go
│   │       │   │   │   ├── public_key_v3.go
│   │       │   │   │   ├── reader.go
│   │       │   │   │   ├── signature.go
│   │       │   │   │   ├── signature_v3.go
│   │       │   │   │   ├── symmetric_key_encrypted.go
│   │       │   │   │   ├── symmetrically_encrypted.go
│   │       │   │   │   ├── userattribute.go
│   │       │   │   │   └── userid.go
│   │       │   │   ├── read.go
│   │       │   │   ├── s2k/
│   │       │   │   │   └── s2k.go
│   │       │   │   └── write.go
│   │       │   ├── pbkdf2/
│   │       │   │   └── pbkdf2.go
│   │       │   ├── ripemd160/
│   │       │   │   ├── ripemd160.go
│   │       │   │   └── ripemd160block.go
│   │       │   ├── scrypt/
│   │       │   │   └── scrypt.go
│   │       │   └── ssh/
│   │       │       ├── buffer.go
│   │       │       ├── certs.go
│   │       │       ├── channel.go
│   │       │       ├── cipher.go
│   │       │       ├── client.go
│   │       │       ├── client_auth.go
│   │       │       ├── common.go
│   │       │       ├── connection.go
│   │       │       ├── doc.go
│   │       │       ├── handshake.go
│   │       │       ├── kex.go
│   │       │       ├── keys.go
│   │       │       ├── mac.go
│   │       │       ├── messages.go
│   │       │       ├── mux.go
│   │       │       ├── server.go
│   │       │       ├── session.go
│   │       │       ├── streamlocal.go
│   │       │       ├── tcpip.go
│   │       │       ├── terminal/
│   │       │       │   ├── terminal.go
│   │       │       │   ├── util.go
│   │       │       │   ├── util_bsd.go
│   │       │       │   ├── util_linux.go
│   │       │       │   ├── util_plan9.go
│   │       │       │   ├── util_solaris.go
│   │       │       │   └── util_windows.go
│   │       │       └── transport.go
│   │       ├── net/
│   │       │   ├── .gitattributes
│   │       │   ├── .gitignore
│   │       │   ├── AUTHORS
│   │       │   ├── CONTRIBUTING.md
│   │       │   ├── CONTRIBUTORS
│   │       │   ├── LICENSE
│   │       │   ├── PATENTS
│   │       │   ├── README
│   │       │   ├── codereview.cfg
│   │       │   ├── context/
│   │       │   │   ├── context.go
│   │       │   │   ├── go17.go
│   │       │   │   └── pre_go17.go
│   │       │   ├── html/
│   │       │   │   ├── atom/
│   │       │   │   │   ├── atom.go
│   │       │   │   │   ├── gen.go
│   │       │   │   │   └── table.go
│   │       │   │   ├── charset/
│   │       │   │   │   └── charset.go
│   │       │   │   ├── const.go
│   │       │   │   ├── doc.go
│   │       │   │   ├── doctype.go
│   │       │   │   ├── entity.go
│   │       │   │   ├── escape.go
│   │       │   │   ├── foreign.go
│   │       │   │   ├── node.go
│   │       │   │   ├── parse.go
│   │       │   │   ├── render.go
│   │       │   │   └── token.go
│   │       │   ├── idna/
│   │       │   │   ├── idna.go
│   │       │   │   ├── punycode.go
│   │       │   │   ├── tables.go
│   │       │   │   ├── trie.go
│   │       │   │   └── trieval.go
│   │       │   └── websocket/
│   │       │       ├── client.go
│   │       │       ├── dial.go
│   │       │       ├── hybi.go
│   │       │       ├── server.go
│   │       │       └── websocket.go
│   │       ├── sync/
│   │       │   ├── LICENSE
│   │       │   ├── PATENTS
│   │       │   └── syncmap/
│   │       │       └── map.go
│   │       ├── sys/
│   │       │   ├── .gitattributes
│   │       │   ├── .gitignore
│   │       │   ├── AUTHORS
│   │       │   ├── CONTRIBUTING.md
│   │       │   ├── CONTRIBUTORS
│   │       │   ├── LICENSE
│   │       │   ├── PATENTS
│   │       │   ├── README
│   │       │   ├── codereview.cfg
│   │       │   ├── unix/
│   │       │   │   ├── README.md
│   │       │   │   ├── asm_darwin_386.s
│   │       │   │   ├── asm_darwin_amd64.s
│   │       │   │   ├── asm_darwin_arm.s
│   │       │   │   ├── asm_darwin_arm64.s
│   │       │   │   ├── asm_dragonfly_amd64.s
│   │       │   │   ├── asm_freebsd_386.s
│   │       │   │   ├── asm_freebsd_amd64.s
│   │       │   │   ├── asm_freebsd_arm.s
│   │       │   │   ├── asm_linux_386.s
│   │       │   │   ├── asm_linux_amd64.s
│   │       │   │   ├── asm_linux_arm.s
│   │       │   │   ├── asm_linux_arm64.s
│   │       │   │   ├── asm_linux_mips64x.s
│   │       │   │   ├── asm_linux_mipsx.s
│   │       │   │   ├── asm_linux_ppc64x.s
│   │       │   │   ├── asm_linux_s390x.s
│   │       │   │   ├── asm_netbsd_386.s
│   │       │   │   ├── asm_netbsd_amd64.s
│   │       │   │   ├── asm_netbsd_arm.s
│   │       │   │   ├── asm_openbsd_386.s
│   │       │   │   ├── asm_openbsd_amd64.s
│   │       │   │   ├── asm_openbsd_arm.s
│   │       │   │   ├── asm_solaris_amd64.s
│   │       │   │   ├── bluetooth_linux.go
│   │       │   │   ├── cap_freebsd.go
│   │       │   │   ├── constants.go
│   │       │   │   ├── dev_darwin.go
│   │       │   │   ├── dev_dragonfly.go
│   │       │   │   ├── dev_freebsd.go
│   │       │   │   ├── dev_linux.go
│   │       │   │   ├── dev_netbsd.go
│   │       │   │   ├── dev_openbsd.go
│   │       │   │   ├── dirent.go
│   │       │   │   ├── endian_big.go
│   │       │   │   ├── endian_little.go
│   │       │   │   ├── env_unix.go
│   │       │   │   ├── env_unset.go
│   │       │   │   ├── errors_freebsd_386.go
│   │       │   │   ├── errors_freebsd_amd64.go
│   │       │   │   ├── errors_freebsd_arm.go
│   │       │   │   ├── flock.go
│   │       │   │   ├── flock_linux_32bit.go
│   │       │   │   ├── gccgo.go
│   │       │   │   ├── gccgo_c.c
│   │       │   │   ├── gccgo_linux_amd64.go
│   │       │   │   ├── mkall.sh
│   │       │   │   ├── mkerrors.sh
│   │       │   │   ├── mksyscall.pl
│   │       │   │   ├── mksyscall_solaris.pl
│   │       │   │   ├── mksysctl_openbsd.pl
│   │       │   │   ├── mksysnum_darwin.pl
│   │       │   │   ├── mksysnum_dragonfly.pl
│   │       │   │   ├── mksysnum_freebsd.pl
│   │       │   │   ├── mksysnum_netbsd.pl
│   │       │   │   ├── mksysnum_openbsd.pl
│   │       │   │   ├── openbsd_pledge.go
│   │       │   │   ├── pagesize_unix.go
│   │       │   │   ├── race.go
│   │       │   │   ├── race0.go
│   │       │   │   ├── sockcmsg_linux.go
│   │       │   │   ├── sockcmsg_unix.go
│   │       │   │   ├── str.go
│   │       │   │   ├── syscall.go
│   │       │   │   ├── syscall_bsd.go
│   │       │   │   ├── syscall_darwin.go
│   │       │   │   ├── syscall_darwin_386.go
│   │       │   │   ├── syscall_darwin_amd64.go
│   │       │   │   ├── syscall_darwin_arm.go
│   │       │   │   ├── syscall_darwin_arm64.go
│   │       │   │   ├── syscall_dragonfly.go
│   │       │   │   ├── syscall_dragonfly_amd64.go
│   │       │   │   ├── syscall_freebsd.go
│   │       │   │   ├── syscall_freebsd_386.go
│   │       │   │   ├── syscall_freebsd_amd64.go
│   │       │   │   ├── syscall_freebsd_arm.go
│   │       │   │   ├── syscall_linux.go
│   │       │   │   ├── syscall_linux_386.go
│   │       │   │   ├── syscall_linux_amd64.go
│   │       │   │   ├── syscall_linux_amd64_gc.go
│   │       │   │   ├── syscall_linux_arm.go
│   │       │   │   ├── syscall_linux_arm64.go
│   │       │   │   ├── syscall_linux_mips64x.go
│   │       │   │   ├── syscall_linux_mipsx.go
│   │       │   │   ├── syscall_linux_ppc64x.go
│   │       │   │   ├── syscall_linux_s390x.go
│   │       │   │   ├── syscall_linux_sparc64.go
│   │       │   │   ├── syscall_netbsd.go
│   │       │   │   ├── syscall_netbsd_386.go
│   │       │   │   ├── syscall_netbsd_amd64.go
│   │       │   │   ├── syscall_netbsd_arm.go
│   │       │   │   ├── syscall_no_getwd.go
│   │       │   │   ├── syscall_openbsd.go
│   │       │   │   ├── syscall_openbsd_386.go
│   │       │   │   ├── syscall_openbsd_amd64.go
│   │       │   │   ├── syscall_openbsd_arm.go
│   │       │   │   ├── syscall_solaris.go
│   │       │   │   ├── syscall_solaris_amd64.go
│   │       │   │   ├── syscall_unix.go
│   │       │   │   ├── syscall_unix_gc.go
│   │       │   │   ├── timestruct.go
│   │       │   │   ├── zerrors_darwin_386.go
│   │       │   │   ├── zerrors_darwin_amd64.go
│   │       │   │   ├── zerrors_darwin_arm.go
│   │       │   │   ├── zerrors_darwin_arm64.go
│   │       │   │   ├── zerrors_dragonfly_amd64.go
│   │       │   │   ├── zerrors_freebsd_386.go
│   │       │   │   ├── zerrors_freebsd_amd64.go
│   │       │   │   ├── zerrors_freebsd_arm.go
│   │       │   │   ├── zerrors_linux_386.go
│   │       │   │   ├── zerrors_linux_amd64.go
│   │       │   │   ├── zerrors_linux_arm.go
│   │       │   │   ├── zerrors_linux_arm64.go
│   │       │   │   ├── zerrors_linux_mips.go
│   │       │   │   ├── zerrors_linux_mips64.go
│   │       │   │   ├── zerrors_linux_mips64le.go
│   │       │   │   ├── zerrors_linux_mipsle.go
│   │       │   │   ├── zerrors_linux_ppc64.go
│   │       │   │   ├── zerrors_linux_ppc64le.go
│   │       │   │   ├── zerrors_linux_s390x.go
│   │       │   │   ├── zerrors_linux_sparc64.go
│   │       │   │   ├── zerrors_netbsd_386.go
│   │       │   │   ├── zerrors_netbsd_amd64.go
│   │       │   │   ├── zerrors_netbsd_arm.go
│   │       │   │   ├── zerrors_openbsd_386.go
│   │       │   │   ├── zerrors_openbsd_amd64.go
│   │       │   │   ├── zerrors_openbsd_arm.go
│   │       │   │   ├── zerrors_solaris_amd64.go
│   │       │   │   ├── zptrace386_linux.go
│   │       │   │   ├── zptracearm_linux.go
│   │       │   │   ├── zptracemips_linux.go
│   │       │   │   ├── zptracemipsle_linux.go
│   │       │   │   ├── zsyscall_darwin_386.go
│   │       │   │   ├── zsyscall_darwin_amd64.go
│   │       │   │   ├── zsyscall_darwin_arm.go
│   │       │   │   ├── zsyscall_darwin_arm64.go
│   │       │   │   ├── zsyscall_dragonfly_amd64.go
│   │       │   │   ├── zsyscall_freebsd_386.go
│   │       │   │   ├── zsyscall_freebsd_amd64.go
│   │       │   │   ├── zsyscall_freebsd_arm.go
│   │       │   │   ├── zsyscall_linux_386.go
│   │       │   │   ├── zsyscall_linux_amd64.go
│   │       │   │   ├── zsyscall_linux_arm.go
│   │       │   │   ├── zsyscall_linux_arm64.go
│   │       │   │   ├── zsyscall_linux_mips.go
│   │       │   │   ├── zsyscall_linux_mips64.go
│   │       │   │   ├── zsyscall_linux_mips64le.go
│   │       │   │   ├── zsyscall_linux_mipsle.go
│   │       │   │   ├── zsyscall_linux_ppc64.go
│   │       │   │   ├── zsyscall_linux_ppc64le.go
│   │       │   │   ├── zsyscall_linux_s390x.go
│   │       │   │   ├── zsyscall_linux_sparc64.go
│   │       │   │   ├── zsyscall_netbsd_386.go
│   │       │   │   ├── zsyscall_netbsd_amd64.go
│   │       │   │   ├── zsyscall_netbsd_arm.go
│   │       │   │   ├── zsyscall_openbsd_386.go
│   │       │   │   ├── zsyscall_openbsd_amd64.go
│   │       │   │   ├── zsyscall_openbsd_arm.go
│   │       │   │   ├── zsyscall_solaris_amd64.go
│   │       │   │   ├── zsysctl_openbsd_386.go
│   │       │   │   ├── zsysctl_openbsd_amd64.go
│   │       │   │   ├── zsysctl_openbsd_arm.go
│   │       │   │   ├── zsysnum_darwin_386.go
│   │       │   │   ├── zsysnum_darwin_amd64.go
│   │       │   │   ├── zsysnum_darwin_arm.go
│   │       │   │   ├── zsysnum_darwin_arm64.go
│   │       │   │   ├── zsysnum_dragonfly_amd64.go
│   │       │   │   ├── zsysnum_freebsd_386.go
│   │       │   │   ├── zsysnum_freebsd_amd64.go
│   │       │   │   ├── zsysnum_freebsd_arm.go
│   │       │   │   ├── zsysnum_linux_386.go
│   │       │   │   ├── zsysnum_linux_amd64.go
│   │       │   │   ├── zsysnum_linux_arm.go
│   │       │   │   ├── zsysnum_linux_arm64.go
│   │       │   │   ├── zsysnum_linux_mips.go
│   │       │   │   ├── zsysnum_linux_mips64.go
│   │       │   │   ├── zsysnum_linux_mips64le.go
│   │       │   │   ├── zsysnum_linux_mipsle.go
│   │       │   │   ├── zsysnum_linux_ppc64.go
│   │       │   │   ├── zsysnum_linux_ppc64le.go
│   │       │   │   ├── zsysnum_linux_s390x.go
│   │       │   │   ├── zsysnum_linux_sparc64.go
│   │       │   │   ├── zsysnum_netbsd_386.go
│   │       │   │   ├── zsysnum_netbsd_amd64.go
│   │       │   │   ├── zsysnum_netbsd_arm.go
│   │       │   │   ├── zsysnum_openbsd_386.go
│   │       │   │   ├── zsysnum_openbsd_amd64.go
│   │       │   │   ├── zsysnum_openbsd_arm.go
│   │       │   │   ├── zsysnum_solaris_amd64.go
│   │       │   │   ├── ztypes_darwin_386.go
│   │       │   │   ├── ztypes_darwin_amd64.go
│   │       │   │   ├── ztypes_darwin_arm.go
│   │       │   │   ├── ztypes_darwin_arm64.go
│   │       │   │   ├── ztypes_dragonfly_amd64.go
│   │       │   │   ├── ztypes_freebsd_386.go
│   │       │   │   ├── ztypes_freebsd_amd64.go
│   │       │   │   ├── ztypes_freebsd_arm.go
│   │       │   │   ├── ztypes_linux_386.go
│   │       │   │   ├── ztypes_linux_amd64.go
│   │       │   │   ├── ztypes_linux_arm.go
│   │       │   │   ├── ztypes_linux_arm64.go
│   │       │   │   ├── ztypes_linux_mips.go
│   │       │   │   ├── ztypes_linux_mips64.go
│   │       │   │   ├── ztypes_linux_mips64le.go
│   │       │   │   ├── ztypes_linux_mipsle.go
│   │       │   │   ├── ztypes_linux_ppc64.go
│   │       │   │   ├── ztypes_linux_ppc64le.go
│   │       │   │   ├── ztypes_linux_s390x.go
│   │       │   │   ├── ztypes_linux_sparc64.go
│   │       │   │   ├── ztypes_netbsd_386.go
│   │       │   │   ├── ztypes_netbsd_amd64.go
│   │       │   │   ├── ztypes_netbsd_arm.go
│   │       │   │   ├── ztypes_openbsd_386.go
│   │       │   │   ├── ztypes_openbsd_amd64.go
│   │       │   │   ├── ztypes_openbsd_arm.go
│   │       │   │   └── ztypes_solaris_amd64.go
│   │       │   └── windows/
│   │       │       ├── asm_windows_386.s
│   │       │       ├── asm_windows_amd64.s
│   │       │       ├── dll_windows.go
│   │       │       ├── env_unset.go
│   │       │       ├── env_windows.go
│   │       │       ├── eventlog.go
│   │       │       ├── exec_windows.go
│   │       │       ├── memory_windows.go
│   │       │       ├── mksyscall.go
│   │       │       ├── race.go
│   │       │       ├── race0.go
│   │       │       ├── security_windows.go
│   │       │       ├── service.go
│   │       │       ├── str.go
│   │       │       ├── syscall.go
│   │       │       ├── syscall_windows.go
│   │       │       ├── types_windows.go
│   │       │       ├── types_windows_386.go
│   │       │       ├── types_windows_amd64.go
│   │       │       └── zsyscall_windows.go
│   │       ├── text/
│   │       │   ├── .gitattributes
│   │       │   ├── .gitignore
│   │       │   ├── AUTHORS
│   │       │   ├── CONTRIBUTING.md
│   │       │   ├── CONTRIBUTORS
│   │       │   ├── LICENSE
│   │       │   ├── PATENTS
│   │       │   ├── README
│   │       │   ├── codereview.cfg
│   │       │   ├── encoding/
│   │       │   │   ├── charmap/
│   │       │   │   │   ├── charmap.go
│   │       │   │   │   ├── maketables.go
│   │       │   │   │   └── tables.go
│   │       │   │   ├── encoding.go
│   │       │   │   ├── htmlindex/
│   │       │   │   │   ├── gen.go
│   │       │   │   │   ├── htmlindex.go
│   │       │   │   │   ├── map.go
│   │       │   │   │   └── tables.go
│   │       │   │   ├── internal/
│   │       │   │   │   ├── identifier/
│   │       │   │   │   │   ├── gen.go
│   │       │   │   │   │   ├── identifier.go
│   │       │   │   │   │   └── mib.go
│   │       │   │   │   └── internal.go
│   │       │   │   ├── japanese/
│   │       │   │   │   ├── all.go
│   │       │   │   │   ├── eucjp.go
│   │       │   │   │   ├── iso2022jp.go
│   │       │   │   │   ├── maketables.go
│   │       │   │   │   ├── shiftjis.go
│   │       │   │   │   └── tables.go
│   │       │   │   ├── korean/
│   │       │   │   │   ├── euckr.go
│   │       │   │   │   ├── maketables.go
│   │       │   │   │   └── tables.go
│   │       │   │   ├── simplifiedchinese/
│   │       │   │   │   ├── all.go
│   │       │   │   │   ├── gbk.go
│   │       │   │   │   ├── hzgb2312.go
│   │       │   │   │   ├── maketables.go
│   │       │   │   │   └── tables.go
│   │       │   │   ├── traditionalchinese/
│   │       │   │   │   ├── big5.go
│   │       │   │   │   ├── maketables.go
│   │       │   │   │   └── tables.go
│   │       │   │   └── unicode/
│   │       │   │       ├── override.go
│   │       │   │       └── unicode.go
│   │       │   ├── internal/
│   │       │   │   ├── tag/
│   │       │   │   │   └── tag.go
│   │       │   │   └── utf8internal/
│   │       │   │       └── utf8internal.go
│   │       │   ├── language/
│   │       │   │   ├── Makefile
│   │       │   │   ├── common.go
│   │       │   │   ├── coverage.go
│   │       │   │   ├── gen_common.go
│   │       │   │   ├── gen_index.go
│   │       │   │   ├── go1_1.go
│   │       │   │   ├── go1_2.go
│   │       │   │   ├── index.go
│   │       │   │   ├── language.go
│   │       │   │   ├── lookup.go
│   │       │   │   ├── maketables.go
│   │       │   │   ├── match.go
│   │       │   │   ├── parse.go
│   │       │   │   ├── tables.go
│   │       │   │   └── tags.go
│   │       │   ├── runes/
│   │       │   │   ├── cond.go
│   │       │   │   └── runes.go
│   │       │   ├── secure/
│   │       │   │   └── bidirule/
│   │       │   │       ├── bidirule.go
│   │       │   │       ├── bidirule10.0.0.go
│   │       │   │       └── bidirule9.0.0.go
│   │       │   ├── transform/
│   │       │   │   └── transform.go
│   │       │   └── unicode/
│   │       │       ├── bidi/
│   │       │       │   ├── bidi.go
│   │       │       │   ├── bracket.go
│   │       │       │   ├── core.go
│   │       │       │   ├── prop.go
│   │       │       │   ├── tables10.0.0.go
│   │       │       │   ├── tables9.0.0.go
│   │       │       │   └── trieval.go
│   │       │       └── norm/
│   │       │           ├── composition.go
│   │       │           ├── forminfo.go
│   │       │           ├── input.go
│   │       │           ├── iter.go
│   │       │           ├── normalize.go
│   │       │           ├── readwriter.go
│   │       │           ├── tables10.0.0.go
│   │       │           ├── tables9.0.0.go
│   │       │           ├── transform.go
│   │       │           └── trie.go
│   │       └── tools/
│   │           ├── .gitattributes
│   │           ├── .gitignore
│   │           ├── AUTHORS
│   │           ├── CONTRIBUTING.md
│   │           ├── CONTRIBUTORS
│   │           ├── LICENSE
│   │           ├── PATENTS
│   │           ├── README
│   │           ├── codereview.cfg
│   │           ├── go/
│   │           │   └── ast/
│   │           │       └── astutil/
│   │           │           ├── enclosing.go
│   │           │           ├── imports.go
│   │           │           └── util.go
│   │           └── imports/
│   │               ├── fastwalk.go
│   │               ├── fastwalk_dirent_fileno.go
│   │               ├── fastwalk_dirent_ino.go
│   │               ├── fastwalk_portable.go
│   │               ├── fastwalk_unix.go
│   │               ├── fix.go
│   │               ├── imports.go
│   │               ├── mkindex.go
│   │               ├── mkstdlib.go
│   │               ├── sortimports.go
│   │               └── zstdlib.go
│   ├── gopkg.in/
│   │   ├── bsm/
│   │   │   └── ratelimit.v1/
│   │   │       ├── Makefile
│   │   │       ├── README.md
│   │   │       └── ratelimit.go
│   │   ├── check.v1/
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── TODO
│   │   │   ├── benchmark.go
│   │   │   ├── check.go
│   │   │   ├── checkers.go
│   │   │   ├── helpers.go
│   │   │   ├── printer.go
│   │   │   ├── reporter.go
│   │   │   └── run.go
│   │   ├── karalabe/
│   │   │   └── cookiejar.v2/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       └── collections/
│   │   │           └── prque/
│   │   │               ├── prque.go
│   │   │               └── sstack.go
│   │   ├── natefinch/
│   │   │   └── npipe.v2/
│   │   │       ├── LICENSE.txt
│   │   │       ├── README.md
│   │   │       ├── doc.go
│   │   │       ├── npipe_windows.go
│   │   │       ├── znpipe_windows_386.go
│   │   │       └── znpipe_windows_amd64.go
│   │   ├── olebedev/
│   │   │   └── go-duktape.v3/
│   │   │       ├── Gopkg.toml
│   │   │       ├── LICENSE.md
│   │   │       ├── README.md
│   │   │       ├── api.go
│   │   │       ├── appveyor.yml
│   │   │       ├── conts.go
│   │   │       ├── duk_alloc_pool.c
│   │   │       ├── duk_alloc_pool.h
│   │   │       ├── duk_config.h
│   │   │       ├── duk_console.c
│   │   │       ├── duk_console.h
│   │   │       ├── duk_logging.c
│   │   │       ├── duk_logging.h
│   │   │       ├── duk_minimal_printf.c
│   │   │       ├── duk_minimal_printf.h
│   │   │       ├── duk_module_duktape.c
│   │   │       ├── duk_module_duktape.h
│   │   │       ├── duk_module_node.c
│   │   │       ├── duk_module_node.h
│   │   │       ├── duk_print_alert.c
│   │   │       ├── duk_print_alert.h
│   │   │       ├── duk_v1_compat.c
│   │   │       ├── duk_v1_compat.h
│   │   │       ├── duktape.c
│   │   │       ├── duktape.go
│   │   │       ├── duktape.h
│   │   │       ├── timers.go
│   │   │       ├── utils.go
│   │   │       └── wercker.yml
│   │   ├── redis.v3/
│   │   │   ├── LICENSE
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── cluster.go
│   │   │   ├── cluster_pipeline.go
│   │   │   ├── command.go
│   │   │   ├── commands.go
│   │   │   ├── doc.go
│   │   │   ├── error.go
│   │   │   ├── internal/
│   │   │   │   ├── consistenthash/
│   │   │   │   │   └── consistenthash.go
│   │   │   │   ├── hashtag/
│   │   │   │   │   └── hashtag.go
│   │   │   │   ├── log.go
│   │   │   │   └── pool/
│   │   │   │       ├── conn.go
│   │   │   │       ├── pool.go
│   │   │   │       ├── pool_single.go
│   │   │   │       └── pool_sticky.go
│   │   │   ├── multi.go
│   │   │   ├── options.go
│   │   │   ├── parser.go
│   │   │   ├── pipeline.go
│   │   │   ├── pubsub.go
│   │   │   ├── redis.go
│   │   │   ├── ring.go
│   │   │   ├── safe.go
│   │   │   ├── script.go
│   │   │   ├── sentinel.go
│   │   │   └── unsafe.go
│   │   ├── sourcemap.v1/
│   │   │   ├── LICENSE
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── base64vlq/
│   │   │   │   └── base64_vlq.go
│   │   │   ├── consumer.go
│   │   │   └── sourcemap.go
│   │   └── urfave/
│   │       └── cli.v1/
│   │           ├── CHANGELOG.md
│   │           ├── LICENSE
│   │           ├── README.md
│   │           ├── app.go
│   │           ├── appveyor.yml
│   │           ├── category.go
│   │           ├── cli.go
│   │           ├── command.go
│   │           ├── context.go
│   │           ├── errors.go
│   │           ├── flag-types.json
│   │           ├── flag.go
│   │           ├── flag_generated.go
│   │           ├── funcs.go
│   │           ├── generate-flag-types
│   │           ├── help.go
│   │           └── runtests
│   └── vendor.json
├── voter/
│   ├── backend.go
│   ├── utils.go
│   └── voter.go
└── zero/
    ├── account/
    │   ├── address.go
    │   └── address_test.go
    ├── consensus/
    │   ├── bytes.go
    │   ├── cons.go
    │   ├── cons_test.go
    │   ├── dbobj.go
    │   ├── fakedb.go
    │   ├── iface.go
    │   ├── kvpoint.go
    │   └── objpoint.go
    ├── localdb/
    │   ├── block.go
    │   ├── out.go
    │   ├── out_commitment.go
    │   ├── out_test.go
    │   ├── out_vserial.go
    │   ├── outstat.go
    │   ├── pkg.go
    │   └── root.go
    ├── proofservice/
    │   ├── client.go
    │   └── proofservice.go
    ├── snapshot/
    │   ├── generator.go
    │   └── snapshot_test.go
    ├── stake/
    │   ├── Hash256PRNG.go
    │   ├── ITree.go
    │   ├── avltree.go
    │   ├── avltree_test.go
    │   ├── sharepool.go
    │   ├── sharepool_test.go
    │   ├── stakeConfig.go
    │   ├── tree.go
    │   └── tree_test.go
    ├── txs/
    │   ├── assets/
    │   │   ├── assets.go
    │   │   ├── ckstate.go
    │   │   ├── ckstate_test.go
    │   │   ├── flat_asset.go
    │   │   ├── ticket.go
    │   │   └── token.go
    │   ├── outs.go
    │   ├── pkg/
    │   │   ├── opkg.go
    │   │   ├── tools.go
    │   │   └── zpkg.go
    │   ├── stx/
    │   │   ├── cmd.go
    │   │   ├── cmd_test.go
    │   │   ├── gen_contractCmd_json.go
    │   │   ├── hash_v1.go
    │   │   ├── pkg.go
    │   │   ├── stx_v0/
    │   │   │   ├── otx.go
    │   │   │   ├── tx.go
    │   │   │   └── ztx.go
    │   │   ├── stx_v1/
    │   │   │   ├── ctx.go
    │   │   │   ├── ptx.go
    │   │   │   └── zktx.go
    │   │   ├── typeserial.go
    │   │   ├── ztx.go
    │   │   └── ztx_test.go
    │   ├── test/
    │   │   ├── txs.go
    │   │   └── txs_test.go
    │   ├── tx/
    │   │   ├── tx.go
    │   │   └── tx_test.go
    │   └── zstate/
    │       ├── merkle/
    │       │   ├── merkle.go
    │       │   ├── merkle_test.go
    │       │   └── utils.go
    │       ├── pkgstate/
    │       │   ├── data/
    │       │   │   ├── data.go
    │       │   │   └── data_state.go
    │       │   └── state.go
    │       ├── tri/
    │       │   └── tri.go
    │       ├── txstate/
    │       │   ├── data/
    │       │   │   ├── data.go
    │       │   │   ├── data_state.go
    │       │   │   ├── iface.go
    │       │   │   └── meta.go
    │       │   ├── data_v1/
    │       │   │   ├── data.go
    │       │   │   └── data_state.go
    │       │   ├── debug.go
    │       │   ├── merkle.go
    │       │   └── state.go
    │       └── zstate.go
    ├── txtool/
    │   ├── flight/
    │   │   ├── sli.go
    │   │   ├── sli_test.go
    │   │   ├── sri.go
    │   │   ├── tx.go
    │   │   └── types.go
    │   ├── generate/
    │   │   ├── generate.go
    │   │   └── generate_1/
    │   │       ├── prove.go
    │   │       ├── prove_proc.go
    │   │       ├── sign.go
    │   │       ├── sign_test.go
    │   │       └── utils.go
    │   ├── gtx_test.go
    │   ├── iface.go
    │   ├── main.go
    │   ├── prepare/
    │   │   ├── prepare.go
    │   │   ├── preparetx.go
    │   │   └── types.go
    │   ├── type.go
    │   └── verify/
    │       ├── verify.go
    │       ├── verify_1/
    │       │   ├── input_c_pool.go
    │       │   ├── output_c_pool.go
    │       │   ├── pkg_pool.go
    │       │   ├── verify_proof.go
    │       │   ├── verify_state.go
    │       │   └── verify_static.go
    │       └── verify_utils/
    │           └── utils.go
    ├── utils/
    │   ├── base58.go
    │   ├── deep_copy.go
    │   ├── dirtys.go
    │   ├── h2hash.go
    │   ├── hset.go
    │   ├── i256.go
    │   ├── pkrs_check.go
    │   ├── process.go
    │   ├── progress.go
    │   ├── snapshot.go
    │   ├── time_record.go
    │   ├── u256.go
    │   ├── u256_test.go
    │   ├── utils.go
    │   ├── utils_test.go
    │   └── work_chain.go
    ├── wallet/
    │   ├── exchange/
    │   │   ├── exchange.go
    │   │   ├── generate.go
    │   │   ├── pkg.go
    │   │   ├── utxo.go
    │   │   └── utxo_version.go
    │   ├── light/
    │   │   ├── api.go
    │   │   ├── api_test.go
    │   │   └── light.go
    │   ├── ssi/
    │   │   ├── ssi.go
    │   │   ├── type.go
    │   │   └── utils.go
    │   └── stakeservice/
    │       └── stakeservice.go
    └── zconfig/
        ├── backup.go
        ├── balance.go
        ├── checkpoint.go
        ├── checkpoint_test.go
        ├── exchange.go
        ├── light.go
        ├── main.go
        ├── main_test.go
        ├── runtime.go
        ├── snapshot.go
        └── stake.go
Download .txt
Showing preview only (7,686K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (96173 symbols across 1792 files)

FILE: accounts/abi/abi.go
  type ABI (line 33) | type ABI struct
    method PackPrefix (line 63) | func (abi ABI) PackPrefix(name string, rand c_type.Uint128, args ...in...
    method Pack (line 90) | func (abi ABI) Pack(name string, args ...interface{}) ([]byte, error) {
    method Unpack (line 116) | func (abi ABI) Unpack(v interface{}, name string, output []byte) (err ...
    method UnpackIntoMap (line 134) | func (abi ABI) UnpackIntoMap(v map[string]interface{}, name string, da...
    method UnmarshalJSON (line 153) | func (abi *ABI) UnmarshalJSON(data []byte) error {
    method overloadedMethodName (line 216) | func (abi *ABI) overloadedMethodName(rawName string) string {
    method overloadedEventName (line 231) | func (abi *ABI) overloadedEventName(rawName string) string {
    method MethodById (line 243) | func (abi *ABI) MethodById(sigdata []byte) (*Method, error) {
    method EventByID (line 257) | func (abi *ABI) EventByID(topic common.Hash) (*Event, error) {
    method HasFallback (line 267) | func (abi *ABI) HasFallback() bool {
    method HasReceive (line 272) | func (abi *ABI) HasReceive() bool {
  function JSON (line 46) | func JSON(reader io.Reader) (ABI, error) {

FILE: accounts/abi/argument.go
  type Argument (line 33) | type Argument struct
    method UnmarshalJSON (line 50) | func (argument *Argument) UnmarshalJSON(data []byte) error {
  type Arguments (line 39) | type Arguments
    method LengthNonIndexed (line 69) | func (arguments Arguments) LengthNonIndexed() int {
    method NonIndexed (line 80) | func (arguments Arguments) NonIndexed() Arguments {
    method isTuple (line 91) | func (arguments Arguments) isTuple() bool {
    method Unpack (line 96) | func (arguments Arguments) Unpack(v interface{}, data []byte) error {
    method UnpackIntoMap (line 118) | func (arguments Arguments) UnpackIntoMap(v map[string]interface{}, dat...
    method unpackIntoMap (line 128) | func (arguments Arguments) unpackIntoMap(v map[string]interface{}, mar...
    method unpackTuple (line 141) | func (arguments Arguments) unpackTuple(v interface{}, marshalledValues...
    method unpackAtomic (line 181) | func (arguments Arguments) unpackAtomic(v interface{}, marshalledValue...
    method UnpackValues (line 209) | func (arguments Arguments) UnpackValues(data []byte) ([]interface{}, e...
    method PackValues (line 237) | func (arguments Arguments) PackValues(args []interface{}) ([]byte, err...
    method PackPrefix (line 241) | func (arguments Arguments) PackPrefix(args ...interface{}) ([]byte, er...
    method Pack (line 267) | func (arguments Arguments) Pack(args ...interface{}) ([]byte, error) {
  type ArgumentMarshaling (line 41) | type ArgumentMarshaling struct
  function getArraySize (line 193) | func getArraySize(arr *Type) int {
  function capitalise (line 316) | func capitalise(input string) string {
  function ToCamelCase (line 327) | func ToCamelCase(input string) string {

FILE: accounts/abi/bind/auth.go
  function NewTransactor (line 38) | func NewTransactor(keyin io.Reader, passphrase string, value *big.Int) (...
  function encodeNumber (line 53) | func encodeNumber(number uint64) []byte {
  function GetMainPkr (line 59) | func GetMainPkr(key *keystore.Key) c_type.PKr {
  function NewKeyedTransactor (line 71) | func NewKeyedTransactor(key *keystore.Key, refundTo c_type.PKr, value *b...

FILE: accounts/abi/bind/backend.go
  type ContractCaller (line 48) | type ContractCaller interface
  type PendingContractCaller (line 60) | type PendingContractCaller interface
  type ContractTransactor (line 71) | type ContractTransactor interface
  type ContractFilterer (line 93) | type ContractFilterer interface
  type DeployBackend (line 106) | type DeployBackend interface
  type ContractBackend (line 112) | type ContractBackend interface

FILE: accounts/abi/bind/base.go
  type EncrypterFn (line 40) | type EncrypterFn
  type CallOpts (line 43) | type CallOpts struct
  type TransactOpts (line 52) | type TransactOpts struct
  type FilterOpts (line 66) | type FilterOpts struct
  type WatchOpts (line 75) | type WatchOpts struct
  type BoundContract (line 83) | type BoundContract struct
    method Call (line 134) | func (c *BoundContract) Call(opts *CallOpts, result interface{}, metho...
    method Transact (line 189) | func (c *BoundContract) Transact(opts *TransactOpts, method string, pa...
    method Transfer (line 207) | func (c *BoundContract) Transfer(opts *TransactOpts) (*types.Transacti...
    method transact (line 213) | func (c *BoundContract) transact(opts *TransactOpts, contract *common....
    method FilterLogs (line 266) | func (c *BoundContract) FilterLogs(opts *FilterOpts, name string, quer...
    method WatchLogs (line 315) | func (c *BoundContract) WatchLogs(opts *WatchOpts, name string, query ...
    method UnpackLog (line 345) | func (c *BoundContract) UnpackLog(out interface{}, event string, log t...
    method UnpackLogIntoMap (line 361) | func (c *BoundContract) UnpackLogIntoMap(out map[string]interface{}, e...
  function NewBoundContract (line 93) | func NewBoundContract(address common.Address, abi abi.ABI, caller Contra...
  function DeployContract (line 105) | func DeployContract(opts *TransactOpts, abi abi.ABI, bytecode []byte, ba...
  function ensureContext (line 378) | func ensureContext(ctx context.Context) context.Context {

FILE: accounts/abi/bind/bind.go
  type Lang (line 37) | type Lang
  constant LangGo (line 40) | LangGo Lang = iota
  function Bind (line 49) | func Bind(types []string, abis []string, bytecodes []string, fsigs []map...
  function bindBasicTypeGo (line 249) | func bindBasicTypeGo(kind abi.Type, input bool) string {
  function bindTypeGo (line 280) | func bindTypeGo(kind abi.Type, structs map[string]*tmplStruct, input boo...
  function bindBasicTypeJava (line 294) | func bindBasicTypeJava(kind abi.Type) string {
  function pluralizeJavaType (line 338) | func pluralizeJavaType(typ string) string {
  function bindTopicTypeGo (line 377) | func bindTopicTypeGo(kind abi.Type, structs map[string]*tmplStruct, inpu...
  function bindStructTypeGo (line 419) | func bindStructTypeGo(kind abi.Type, structs map[string]*tmplStruct, inp...
  function alias (line 527) | func alias(aliases map[string]string, n string) string {
  function decapitalise (line 545) | func decapitalise(input string) string {
  function structured (line 556) | func structured(args abi.Arguments) bool {
  function hasStruct (line 579) | func hasStruct(t abi.Type) bool {

FILE: accounts/abi/bind/template.go
  type tmplData (line 22) | type tmplData struct
  type tmplContract (line 30) | type tmplContract struct
  type tmplMethod (line 47) | type tmplMethod struct
  type tmplEvent (line 54) | type tmplEvent struct
  type tmplField (line 61) | type tmplField struct
  type tmplStruct (line 69) | type tmplStruct struct
  constant tmplSourceGo (line 82) | tmplSourceGo = `

FILE: accounts/abi/bind/topics.go
  function makeTopics (line 32) | func makeTopics(query ...[]interface{}) ([][]common.Hash, error) {
  function parseTopics (line 111) | func parseTopics(out interface{}, fields abi.Arguments, topics []common....
  function parseTopicsIntoMap (line 192) | func parseTopicsIntoMap(out map[string]interface{}, fields abi.Arguments...

FILE: accounts/abi/bind/util.go
  function WaitMined (line 31) | func WaitMined(ctx context.Context, b DeployBackend, tx *types.Transacti...
  function WaitDeployed (line 57) | func WaitDeployed(ctx context.Context, b DeployBackend, tx *types.Transa...

FILE: accounts/abi/error.go
  function formatSliceString (line 31) | func formatSliceString(kind reflect.Kind, sliceSize int) string {
  function sliceTypeCheck (line 40) | func sliceTypeCheck(t Type, val reflect.Value) error {
  function typeCheck (line 63) | func typeCheck(t Type, value reflect.Value) error {
  function typeErr (line 80) | func typeErr(expected, got interface{}) error {

FILE: accounts/abi/event.go
  type Event (line 27) | type Event struct
    method String (line 95) | func (e Event) String() string {
  function NewEvent (line 56) | func NewEvent(name, rawName string, anonymous bool, inputs Arguments) Ev...

FILE: accounts/abi/method.go
  type FunctionType (line 27) | type FunctionType
  constant Constructor (line 32) | Constructor FunctionType = iota
  constant Fallback (line 36) | Fallback
  constant Receive (line 39) | Receive
  constant Function (line 41) | Function
  type Method (line 52) | type Method struct
    method String (line 154) | func (method Method) String() string {
    method IsConstant (line 159) | func (method Method) IsConstant() bool {
    method IsPayable (line 165) | func (method Method) IsPayable() bool {
  function NewMethod (line 94) | func NewMethod(name string, rawName string, funType FunctionType, mutabi...

FILE: accounts/abi/numbers.go
  function U256 (line 40) | func U256(n *big.Int) []byte {

FILE: accounts/abi/pack.go
  function packBytesSlice (line 32) | func packBytesSlice(bytes []byte, l int) []byte {
  function convertToPkr (line 37) | func convertToPkr(addr []byte) []byte {
  function packElement (line 47) | func packElement(t Type, reflectValue reflect.Value) []byte {
  function packNum (line 79) | func packNum(value reflect.Value) []byte {

FILE: accounts/abi/reflect.go
  function indirect (line 29) | func indirect(v reflect.Value) reflect.Value {
  function reflectIntType (line 38) | func reflectIntType(unsigned bool, size int) reflect.Type {
  function mustArrayToByteSlice (line 66) | func mustArrayToByteSlice(value reflect.Value) reflect.Value {
  function set (line 76) | func set(dst, src reflect.Value) error {
  function setSlice (line 100) | func setSlice(dst, src reflect.Value) error {
  function setArray (line 121) | func setArray(dst, src reflect.Value) error {
  function setStruct (line 139) | func setStruct(dst, src reflect.Value) error {
  function mapArgNamesToStructFields (line 160) | func mapArgNamesToStructFields(argNames []string, value reflect.Value) (...

FILE: accounts/abi/type.go
  constant IntTy (line 34) | IntTy byte = iota
  constant UintTy (line 35) | UintTy
  constant BoolTy (line 36) | BoolTy
  constant StringTy (line 37) | StringTy
  constant SliceTy (line 38) | SliceTy
  constant ArrayTy (line 39) | ArrayTy
  constant TupleTy (line 40) | TupleTy
  constant AddressTy (line 41) | AddressTy
  constant FixedBytesTy (line 42) | FixedBytesTy
  constant BytesTy (line 43) | BytesTy
  constant HashTy (line 44) | HashTy
  constant FixedPointTy (line 45) | FixedPointTy
  constant FunctionTy (line 46) | FunctionTy
  type Type (line 50) | type Type struct
    method getType (line 221) | func (t Type) getType() reflect.Type {
    method String (line 256) | func (t Type) String() (out string) {
    method pack (line 274) | func (t Type) pack(v reflect.Value) ([]byte, error) {
    method getAllAddress (line 382) | func (t Type) getAllAddress(v reflect.Value) (pkrs []c_type.PKr, err e...
    method requiresLengthPrefix (line 432) | func (t Type) requiresLengthPrefix() bool {
  function NewType (line 72) | func NewType(t string, internalType string, components []ArgumentMarshal...
  function overloadedArgName (line 260) | func overloadedArgName(rawName string, names map[string]string) (string,...
  function isDynamicType (line 443) | func isDynamicType(t Type) bool {
  function getTypeSize (line 463) | func getTypeSize(t Type) int {

FILE: accounts/abi/unpack.go
  function ReadInteger (line 36) | func ReadInteger(typ Type, b []byte) interface{} {
  function readBool (line 77) | func readBool(word []byte) (bool, error) {
  function readFunctionType (line 95) | func readFunctionType(t Type, word []byte) (funcTy [24]byte, err error) {
  function ReadFixedBytes (line 108) | func ReadFixedBytes(t Type, word []byte) (interface{}, error) {
  function getFullElemSize (line 120) | func getFullElemSize(elem *Type) int {
  function forEachUnpack (line 132) | func forEachUnpack(t Type, output []byte, start, size int) (interface{},...
  function forTupleUnpack (line 175) | func forTupleUnpack(t Type, output []byte) (interface{}, error) {
  function toGoType (line 207) | func toGoType(index int, t Type, output []byte) (interface{}, error) {
  function lengthPrefixPointsTo (line 270) | func lengthPrefixPointsTo(index int, output []byte) (start int, length i...
  function tuplePointsTo (line 302) | func tuplePointsTo(index int, output []byte) (start int, err error) {

FILE: accounts/accounts.go
  type Account (line 31) | type Account struct
    method GetPkr (line 39) | func (self *Account) GetPkr(rand *c_type.Uint256) c_type.PKr {
    method GetPk (line 43) | func (self *Account) GetPk() c_type.Uint512 {
    method GetDefaultPkr (line 49) | func (self *Account) GetDefaultPkr(index uint64) c_type.PKr {
    method IsMyPk (line 60) | func (self *Account) IsMyPk(pk c_type.Uint512) bool {
    method IsMyPkr (line 66) | func (self *Account) IsMyPkr(pkr c_type.PKr) bool {
  type Wallet (line 74) | type Wallet interface
  type Backend (line 137) | type Backend interface
  type WalletEventType (line 157) | type WalletEventType
  constant WalletArrived (line 162) | WalletArrived WalletEventType = iota
  constant WalletOpened (line 166) | WalletOpened
  constant WalletDropped (line 169) | WalletDropped
  type WalletEvent (line 174) | type WalletEvent struct

FILE: accounts/errors.go
  type AuthNeededError (line 53) | type AuthNeededError struct
    method Error (line 66) | func (err *AuthNeededError) Error() string {
  function NewAuthNeededError (line 59) | func NewAuthNeededError(needed string) error {

FILE: accounts/hd.go
  type DerivationPath (line 59) | type DerivationPath
    method String (line 121) | func (path DerivationPath) String() string {
  function ParseDerivationPath (line 67) | func ParseDerivationPath(path string) (DerivationPath, error) {

FILE: accounts/keystore/account_cache.go
  constant minReloadInterval (line 44) | minReloadInterval = 2 * time.Second
  type accountsByTag (line 46) | type accountsByTag
    method Len (line 53) | func (s accountsByTag) Len() int { return len(s) }
    method Less (line 54) | func (s accountsByTag) Less(i, j int) bool {
    method Swap (line 57) | func (s accountsByTag) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
  type accountByTag (line 48) | type accountByTag struct
  type AmbiguousAddrError (line 61) | type AmbiguousAddrError struct
    method Error (line 66) | func (err *AmbiguousAddrError) Error() string {
  type accountCache (line 78) | type accountCache struct
    method accounts (line 100) | func (ac *accountCache) accounts() []accounts.Account {
    method accountsByTag (line 111) | func (ac *accountCache) accountsByTag() []accountByTag {
    method hasAddress (line 120) | func (ac *accountCache) hasAddress(addr address.PKAddress) bool {
    method add (line 127) | func (ac *accountCache) add(newAccount accounts.Account, update bool) {
    method delete (line 143) | func (ac *accountCache) delete(removed accounts.Account) {
    method deleteByFile (line 156) | func (ac *accountCache) deleteByFile(path string) {
    method find (line 193) | func (ac *accountCache) find(a accounts.Account) (accounts.Account, er...
    method maybeReload (line 231) | func (ac *accountCache) maybeReload() {
    method close (line 255) | func (ac *accountCache) close() {
    method scanAccounts (line 270) | func (ac *accountCache) scanAccounts() error {
  function newAccountCache (line 89) | func newAccountCache(keydir string) (*accountCache, chan struct{}) {
  function removeAccount (line 172) | func removeAccount(slice []accounts.Account, elem accounts.Account) []ac...
  function removeAccountByTag (line 181) | func removeAccountByTag(slice []accountByTag, elem accounts.Account) []a...

FILE: accounts/keystore/account_cache_test.go
  function TestWatchNewFile (line 58) | func TestWatchNewFile(t *testing.T) {
  function TestWatchNoDir (line 99) | func TestWatchNoDir(t *testing.T) {
  function TestCacheInitialReload (line 140) | func TestCacheInitialReload(t *testing.T) {
  function TestCacheAddDeleteOrder (line 148) | func TestCacheAddDeleteOrder(t *testing.T) {
  function TestCacheFind (line 238) | func TestCacheFind(t *testing.T) {
  function waitForAccounts (line 311) | func waitForAccounts(wantAccounts []accounts.Account, ks *KeyStore) error {
  function TestUpdatedKeyfileContents (line 331) | func TestUpdatedKeyfileContents(t *testing.T) {
  function forceCopyFile (line 411) | func forceCopyFile(dst, src string) error {

FILE: accounts/keystore/file_cache.go
  type fileCache (line 32) | type fileCache struct
    method scan (line 40) | func (fc *fileCache) scan(keyDir string) (mapset.Set, mapset.Set, maps...
  function skipKeyFile (line 92) | func skipKeyFile(fi os.FileInfo) bool {

FILE: accounts/keystore/key.go
  constant version (line 42) | version = 2
  type Key (line 45) | type Key struct
  type keyStore (line 60) | type keyStore interface
  type encryptedKeyJSONV1 (line 69) | type encryptedKeyJSONV1 struct
  type cryptoJSON (line 78) | type cryptoJSON struct
  type cipherparamsJSON (line 87) | type cipherparamsJSON struct
  function newKeyFromECDSA (line 91) | func newKeyFromECDSA(privateKeyECDSA *ecdsa.PrivateKey, at uint64, versi...
  function newKeyFromTk (line 105) | func newKeyFromTk(tk *c_type.Tk, at uint64) *Key {
  function newKey (line 123) | func newKey(rand io.Reader, at uint64, version int) (*Key, error) {
  function storeNewKey (line 131) | func storeNewKey(ks keyStore, rand io.Reader, auth string, at uint64, ve...
  function storeNewKeyWithMnemonic (line 144) | func storeNewKeyWithMnemonic(ks keyStore, auth string, at uint64, versio...
  function writeKeyFile (line 175) | func writeKeyFile(file string, content []byte) error {
  function keyFileName (line 199) | func keyFileName(keyAddr address.PKAddress) string {
  function toISO8601 (line 204) | func toISO8601(t time.Time) string {

FILE: accounts/keystore/keystore.go
  constant KeyStoreScheme (line 57) | KeyStoreScheme = "keystore"
  constant walletRefreshCycle (line 60) | walletRefreshCycle = 3 * time.Second
  type KeyStore (line 63) | type KeyStore struct
    method init (line 90) | func (ks *KeyStore) init(keydir string) {
    method Wallets (line 115) | func (ks *KeyStore) Wallets() []accounts.Wallet {
    method refreshWallets (line 129) | func (ks *KeyStore) refreshWallets() {
    method Subscribe (line 182) | func (ks *KeyStore) Subscribe(sink chan<- accounts.WalletEvent) event....
    method updater (line 203) | func (ks *KeyStore) updater() {
    method HasAddress (line 225) | func (ks *KeyStore) HasAddress(address address.PKAddress) bool {
    method Accounts (line 230) | func (ks *KeyStore) Accounts() []accounts.Account {
    method Delete (line 236) | func (ks *KeyStore) Delete(a accounts.Account, passphrase string) error {
    method Unlock (line 259) | func (ks *KeyStore) Unlock(a accounts.Account, passphrase string) error {
    method Lock (line 264) | func (ks *KeyStore) Lock(address address.PKAddress) error {
    method TimedUnlock (line 282) | func (ks *KeyStore) TimedUnlock(a accounts.Account, passphrase string,...
    method Find (line 312) | func (ks *KeyStore) Find(a accounts.Account) (accounts.Account, error) {
    method getDecryptedKey (line 320) | func (ks *KeyStore) getDecryptedKey(a accounts.Account, auth string) (...
    method expire (line 329) | func (ks *KeyStore) expire(address address.PKAddress, u *unlocked, tim...
    method NewAccount (line 351) | func (ks *KeyStore) NewAccount(passphrase string, at uint64, version i...
    method NewAccountWithMnemonic (line 363) | func (ks *KeyStore) NewAccountWithMnemonic(passphrase string, at uint6...
    method Export (line 376) | func (ks *KeyStore) Export(a accounts.Account, passphrase, newPassphra...
    method ExportMnemonic (line 390) | func (ks *KeyStore) ExportMnemonic(a accounts.Account, passphrase stri...
    method ExportRewKey (line 406) | func (ks *KeyStore) ExportRewKey(a accounts.Account, passphrase string...
    method Import (line 417) | func (ks *KeyStore) Import(keyJSON []byte, passphrase, newPassphrase s...
    method ImportECDSA (line 429) | func (ks *KeyStore) ImportECDSA(priv *ecdsa.PrivateKey, passphrase str...
    method ImportTk (line 437) | func (ks *KeyStore) ImportTk(tk c_type.Tk, at uint64) (accounts.Accoun...
    method importKey (line 451) | func (ks *KeyStore) importKey(key *Key, passphrase string) (accounts.A...
    method Update (line 462) | func (ks *KeyStore) Update(a accounts.Account, passphrase, newPassphra...
    method GetSeed (line 478) | func (ks *KeyStore) GetSeed(a accounts.Account) (*address.Seed, error) {
    method GetSeedWithPassphrase (line 495) | func (ks *KeyStore) GetSeedWithPassphrase(account accounts.Account, pa...
  type unlocked (line 77) | type unlocked struct
  function NewKeyStore (line 83) | func NewKeyStore(keydir string, scryptN, scryptP int) *KeyStore {
  function zeroKey (line 471) | func zeroKey(k *ecdsa.PrivateKey) {

FILE: accounts/keystore/keystore_passphrase.go
  constant keyHeaderKDF (line 54) | keyHeaderKDF = "scrypt"
  constant StandardScryptN (line 58) | StandardScryptN = 1 << 18
  constant StandardScryptP (line 62) | StandardScryptP = 1
  constant LightScryptN (line 66) | LightScryptN = 1 << 12
  constant LightScryptP (line 70) | LightScryptP = 6
  constant scryptR (line 72) | scryptR     = 8
  constant scryptDKLen (line 73) | scryptDKLen = 32
  constant veryLightScryptN (line 75) | veryLightScryptN = 2
  constant veryLightScryptP (line 76) | veryLightScryptP = 1
  type keyStorePassphrase (line 79) | type keyStorePassphrase struct
    method GetKey (line 85) | func (ks keyStorePassphrase) GetKey(address address.PKAddress, filenam...
    method StoreKey (line 110) | func (ks keyStorePassphrase) StoreKey(filename string, key *Key, auth ...
    method JoinPath (line 118) | func (ks keyStorePassphrase) JoinPath(filename string) string {
  function StoreKey (line 105) | func StoreKey(dir, auth string, scryptN, scryptP int, at uint64) (accoun...
  function EncryptKey (line 127) | func EncryptKey(key *Key, auth string, scryptN, scryptP int) ([]byte, er...
  function GetAddress (line 184) | func GetAddress(keyjson []byte) (string, error) {
  function DecryptKey (line 199) | func DecryptKey(keyjson []byte, auth string) (*Key, error) {
  function decryptKeyV3 (line 233) | func decryptKeyV3(keyProtected *encryptedKeyJSONV1, auth string) (keyByt...
  function getKDFKey (line 279) | func getKDFKey(cryptoJSON cryptoJSON, auth string) ([]byte, error) {
  function ensureInt (line 309) | func ensureInt(x interface{}) int {

FILE: accounts/keystore/keystore_passphrase_test.go
  function TestKeyEncryptDecrypt (line 27) | func TestKeyEncryptDecrypt(t *testing.T) {

FILE: accounts/keystore/keystore_test.go
  function TestKeyStore (line 36) | func TestKeyStore(t *testing.T) {
  function TestTimedUnlock (line 71) | func TestTimedUnlock(t *testing.T) {
  function TestOverrideUnlock (line 106) | func TestOverrideUnlock(t *testing.T) {
  function TestWalletNotifierLifecycle (line 148) | func TestWalletNotifierLifecycle(t *testing.T) {
  type walletEvent (line 203) | type walletEvent struct
  function TestWalletNotifications (line 210) | func TestWalletNotifications(t *testing.T) {
  function checkAccounts (line 270) | func checkAccounts(t *testing.T, live map[address.PKAddress]accounts.Acc...
  function checkEvents (line 290) | func checkEvents(t *testing.T, want []walletEvent, have []walletEvent) {
  function tmpKeyStore (line 305) | func tmpKeyStore(t *testing.T) (string, *KeyStore) {

FILE: accounts/keystore/keystore_wallet.go
  type keystoreWallet (line 33) | type keystoreWallet struct
    method URL (line 39) | func (w *keystoreWallet) URL() accounts.URL {
    method Status (line 45) | func (w *keystoreWallet) Status() (string, error) {
    method Open (line 57) | func (w *keystoreWallet) Open(passphrase string) error { return nil }
    method Close (line 61) | func (w *keystoreWallet) Close() error { return nil }
    method Accounts (line 65) | func (w *keystoreWallet) Accounts() []accounts.Account {
    method Contains (line 71) | func (w *keystoreWallet) Contains(account accounts.Account) bool {
    method Derive (line 77) | func (w *keystoreWallet) Derive(path accounts.DerivationPath, pin bool...
    method SelfDerive (line 83) | func (w *keystoreWallet) SelfDerive(base accounts.DerivationPath, chai...
    method AddressUnlocked (line 85) | func (w *keystoreWallet) AddressUnlocked(account accounts.Account) (bo...
    method EncryptTxWithSeed (line 99) | func (w *keystoreWallet) EncryptTxWithSeed(seed address.Seed, btx *typ...
    method GetSeed (line 103) | func (w *keystoreWallet) GetSeed() (*address.Seed, error) {
    method GetSeedWithPassphrase (line 113) | func (w *keystoreWallet) GetSeedWithPassphrase(passphrase string) (*ad...
    method IsMine (line 123) | func (w *keystoreWallet) IsMine(pkr c_type.PKr) bool {

FILE: accounts/keystore/presale.go
  function aesCTRXOR (line 24) | func aesCTRXOR(key, inText, iv []byte) ([]byte, error) {

FILE: accounts/keystore/watch.go
  type watcher (line 28) | type watcher struct
    method start (line 47) | func (w *watcher) start() {
    method close (line 55) | func (w *watcher) close() {
    method loop (line 59) | func (w *watcher) loop() {
  function newWatcher (line 36) | func newWatcher(ac *accountCache) *watcher {

FILE: accounts/keystore/watch_fallback.go
  type watcher (line 24) | type watcher struct
    method start (line 27) | func (*watcher) start()                 {}
    method close (line 28) | func (*watcher) close()                 {}
  function newWatcher (line 26) | func newWatcher(*accountCache) *watcher { return new(watcher) }

FILE: accounts/manager.go
  type Manager (line 31) | type Manager struct
    method Close (line 76) | func (am *Manager) Close() error {
    method update (line 84) | func (am *Manager) update() {
    method Backends (line 120) | func (am *Manager) Backends(kind reflect.Type) []Backend {
    method Wallets (line 125) | func (am *Manager) Wallets() []Wallet {
    method Wallet (line 135) | func (am *Manager) Wallet(url string) (Wallet, error) {
    method Find (line 154) | func (am *Manager) Find(account Account) (Wallet, error) {
    method FindAccountByPk (line 166) | func (am *Manager) FindAccountByPk(pk c_type.Uint512) (Account, error) {
    method FindAccountByPkr (line 177) | func (am *Manager) FindAccountByPkr(pkr c_type.PKr) (Account, error) {
    method Subscribe (line 190) | func (am *Manager) Subscribe(sink chan<- WalletEvent) event.Subscripti...
  function NewManager (line 45) | func NewManager(backends ...Backend) *Manager {
  function merge (line 198) | func merge(slice []Wallet, wallets ...Wallet) []Wallet {
  function drop (line 212) | func drop(slice []Wallet, wallets ...Wallet) []Wallet {

FILE: accounts/url.go
  type URL (line 38) | type URL struct
    method String (line 56) | func (u URL) String() string {
    method TerminalString (line 64) | func (u URL) TerminalString() string {
    method MarshalJSON (line 73) | func (u URL) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 78) | func (u *URL) UnmarshalJSON(input []byte) error {
    method Cmp (line 99) | func (u URL) Cmp(url URL) int {
  function parseURL (line 44) | func parseURL(url string) (URL, error) {

FILE: accounts/url_test.go
  function TestURLParsing (line 23) | func TestURLParsing(t *testing.T) {
  function TestURLString (line 41) | func TestURLString(t *testing.T) {
  function TestURLMarshalJSON (line 53) | func TestURLMarshalJSON(t *testing.T) {
  function TestURLUnmarshalJSON (line 64) | func TestURLUnmarshalJSON(t *testing.T) {
  function TestURLComparison (line 78) | func TestURLComparison(t *testing.T) {

FILE: build/ci.go
  function executablePath (line 122) | func executablePath(name string) string {
  function main (line 129) | func main() {
  function doInstall (line 160) | func doInstall(cmdline []string) {
  function buildFlags (line 230) | func buildFlags(env build.Environment) (flags []string) {
  function goTool (line 245) | func goTool(subcmd string, args ...string) *exec.Cmd {
  function goToolArch (line 249) | func goToolArch(arch string, cc string, subcmd string, args ...string) *...
  function doTest (line 274) | func doTest(cmdline []string) {
  function doLint (line 304) | func doLint(cmdline []string) {
  function doArchive (line 339) | func doArchive(cmdline []string) {
  function archiveBasename (line 371) | func archiveBasename(arch string, archiveVersion string) string {
  function archiveUpload (line 385) | func archiveUpload(archive string, blobstore string, signer string) error {
  function maybeSkipArchive (line 416) | func maybeSkipArchive(env build.Environment) {
  function makeWorkdir (line 431) | func makeWorkdir(wdflag string) string {
  function isUnstableBuild (line 444) | func isUnstableBuild(env build.Environment) bool {
  type debPackage (line 451) | type debPackage struct
  type debMetadata (line 457) | type debMetadata struct
    method Name (line 505) | func (meta debMetadata) Name() string {
    method VersionString (line 513) | func (meta debMetadata) VersionString() string {
    method ExeList (line 525) | func (meta debMetadata) ExeList() string {
    method ExeName (line 534) | func (meta debMetadata) ExeName(exe debExecutable) string {
    method ExeConflicts (line 543) | func (meta debMetadata) ExeConflicts(exe debExecutable) string {
  type debExecutable (line 472) | type debExecutable struct
    method Package (line 480) | func (d debExecutable) Package() string {
  function newDebMetadata (line 487) | func newDebMetadata(distro, author string, env build.Environment, t time...
  function stageDebianSource (line 558) | func stageDebianSource(tmpdir string, meta debMetadata) (pkgdir string) {
  function gomobileTool (line 586) | func gomobileTool(subcmd string, args ...string) *exec.Cmd {
  type mavenMetadata (line 602) | type mavenMetadata struct
  type mavenContributor (line 609) | type mavenContributor struct
  function newMavenMetadata (line 614) | func newMavenMetadata(env build.Environment) mavenMetadata {
  function doXCodeFramework (line 650) | func doXCodeFramework(cmdline []string) {
  type podMetadata (line 694) | type podMetadata struct
  type podContributor (line 701) | type podContributor struct
  function newPodMetadata (line 706) | func newPodMetadata(env build.Environment, archive string) podMetadata {
  function doXgo (line 741) | func doXgo(cmdline []string) {
  function xgoTool (line 776) | func xgoTool(args []string) *exec.Cmd {
  function doPurge (line 793) | func doPurge(cmdline []string) {

FILE: build/update-license.go
  type info (line 95) | type info struct
    method License (line 100) | func (i info) License() string {
    method ShortLicense (line 107) | func (i info) ShortLicense() string {
    method Whole (line 114) | func (i info) Whole(startOfSentence bool) string {
    method gpl (line 124) | func (i info) gpl() bool {
  function main (line 133) | func main() {
  function skipFile (line 162) | func skipFile(path string) bool {
  function getFiles (line 174) | func getFiles() []string {
  function gitAuthors (line 199) | func gitAuthors(files []string) []string {
  function readAuthors (line 216) | func readAuthors() []string {
  function mailmapLookup (line 233) | func mailmapLookup(authors []string) []string {
  function writeAuthors (line 250) | func writeAuthors(files []string) {
  function getInfo (line 281) | func getInfo(files <-chan string, out chan<- *info, wg *sync.WaitGroup) {
  function isGenerated (line 304) | func isGenerated(file string) bool {
  function fileInfo (line 322) | func fileInfo(file string) (*info, error) {
  function writeLicenses (line 337) | func writeLicenses(infos <-chan *info) {
  function writeLicense (line 343) | func writeLicense(info *info) {
  function doLines (line 376) | func doLines(cmd *exec.Cmd, f func(string)) error {

FILE: cmd/abigen/main.go
  constant commandHelperTemplate (line 35) | commandHelperTemplate = `{{.Name}}{{if .Subcommands}} command{{end}}{{if...
  function init (line 99) | func init() {
  function abigen (line 117) | func abigen(c *cli.Context) error {
  function main (line 231) | func main() {

FILE: cmd/bootnode/main.go
  function main (line 36) | func main() {

FILE: cmd/gero/accountcmd.go
  function accountList (line 156) | func accountList(ctx *cli.Context) error {
  function unlockAccount (line 169) | func unlockAccount(ctx *cli.Context, ks *keystore.KeyStore, address stri...
  function getPassPhrase (line 199) | func getPassPhrase(prompt string, confirmation bool, i int, passwords []...
  function ambiguousAddrRecovery (line 227) | func ambiguousAddrRecovery(ks *keystore.KeyStore, err *keystore.Ambiguou...
  function accountCreate (line 254) | func accountCreate(ctx *cli.Context) error {
  function accountUpdate (line 282) | func accountUpdate(ctx *cli.Context) error {
  function accountImport (line 299) | func accountImport(ctx *cli.Context) error {

FILE: cmd/gero/bugcmd.go
  constant issueURL (line 44) | issueURL = "https://github.com/sero-cash/go-sero/issues/new"
  function reportBug (line 48) | func reportBug(ctx *cli.Context) error {
  function printOSDetails (line 68) | func printOSDetails(w io.Writer) {
  function printCmdOut (line 92) | func printCmdOut(w io.Writer, prefix, path string, args ...string) {
  constant header (line 102) | header = `

FILE: cmd/gero/chaincmd.go
  function importChain (line 186) | func importChain(ctx *cli.Context) error {
  function exportChain (line 280) | func exportChain(ctx *cli.Context) error {
  function importPreimages (line 313) | func importPreimages(ctx *cli.Context) error {
  function exportPreimages (line 329) | func exportPreimages(ctx *cli.Context) error {
  function copyDb (line 344) | func copyDb(ctx *cli.Context) error {
  function removeDB (line 392) | func removeDB(ctx *cli.Context) error {
  function hashish (line 449) | func hashish(x string) bool {

FILE: cmd/gero/config.go
  type serostatsConfig (line 72) | type serostatsConfig struct
  type seroConfig (line 76) | type seroConfig struct
  function loadConfig (line 83) | func loadConfig(file string, cfg *seroConfig) error {
  function defaultNodeConfig (line 98) | func defaultNodeConfig() node.Config {
  function makeConfigNode (line 108) | func makeConfigNode(ctx *cli.Context) (*node.Node, seroConfig) {
  function makeFullNode (line 139) | func makeFullNode(ctx *cli.Context) *node.Node {
  function dumpConfig (line 152) | func dumpConfig(ctx *cli.Context) error {

FILE: cmd/gero/consolecmd.go
  function localConsole (line 78) | func localConsole(ctx *cli.Context) error {
  function remoteConsole (line 116) | func remoteConsole(ctx *cli.Context) error {
  function dialRPC (line 168) | func dialRPC(endpoint string) (*rpc.Client, error) {
  function ephemeralConsole (line 182) | func ephemeralConsole(ctx *cli.Context) error {

FILE: cmd/gero/main.go
  constant clientIdentifier (line 52) | clientIdentifier = "gero"
  function init (line 182) | func init() {
  function getKeyStore (line 286) | func getKeyStore(ctx *cli.Context) string {
  function main (line 362) | func main() {
  function gero (line 373) | func gero(ctx *cli.Context) error {
  function startNode (line 386) | func startNode(ctx *cli.Context, stack *node.Node) {

FILE: cmd/gero/misccmd.go
  function makecache (line 80) | func makecache(ctx *cli.Context) error {
  function makedag (line 95) | func makedag(ctx *cli.Context) error {
  function version (line 109) | func version(ctx *cli.Context) error {
  function license (line 125) | func license(_ *cli.Context) error {

FILE: cmd/gero/monitorcmd.go
  function monitor (line 71) | func monitor(ctx *cli.Context) error {
  function retrieveMetrics (line 163) | func retrieveMetrics(client *rpc.Client) (map[string]interface{}, error) {
  function resolveMetrics (line 171) | func resolveMetrics(metrics map[string]interface{}, patterns []string) [...
  function resolveMetric (line 181) | func resolveMetric(metrics map[string]interface{}, pattern string, path ...
  function expandMetrics (line 216) | func expandMetrics(metrics map[string]interface{}, path string) []string {
  function fetchMetric (line 238) | func fetchMetric(metrics map[string]interface{}, metric string) float64 {
  function refreshCharts (line 255) | func refreshCharts(client *rpc.Client, metrics []string, data [][]float6...
  function updateChart (line 273) | func updateChart(metric string, data []float64, base *int, chart *termui...
  function createChart (line 323) | func createChart(height int) *termui.LineChart {
  function updateFooter (line 340) | func updateFooter(ctx *cli.Context, err error, footer *termui.Par) {

FILE: cmd/gero/snapshotcmd.go
  function makeSnapshot (line 25) | func makeSnapshot(ctx *cli.Context) error {

FILE: cmd/gero/usage.go
  type flagGroup (line 60) | type flagGroup struct
  type byCategory (line 217) | type byCategory
    method Len (line 219) | func (a byCategory) Len() int      { return len(a) }
    method Swap (line 220) | func (a byCategory) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
    method Less (line 221) | func (a byCategory) Less(i, j int) bool {
  function flagCategory (line 237) | func flagCategory(flag cli.Flag) string {
  function init (line 248) | func init() {

FILE: cmd/internal/browser/browser.go
  function Commands (line 15) | func Commands() [][]string {
  function Open (line 38) | func Open(url string) bool {

FILE: cmd/proofnode/main.go
  function main (line 20) | func main() {
  function startNode (line 30) | func startNode(endpoint, rpcAddr string, config *proofservice.Config, ti...
  function initConfig (line 52) | func initConfig() (string, *proofservice.Config, rpc.HTTPTimeouts) {

FILE: cmd/tx/confirm.go
  function Confirm (line 21) | func Confirm(key_str string, out_str string) {

FILE: cmd/tx/dec.go
  function Dec (line 18) | func Dec(tk_str string, out_str string) {

FILE: cmd/tx/main.go
  function init (line 38) | func init() {
  function OUTPUT_RESULT (line 46) | func OUTPUT_RESULT(result interface{}) {
  function OUTPUT_ERROR (line 50) | func OUTPUT_ERROR(result interface{}, e error) {
  function main (line 54) | func main() {

FILE: cmd/tx/sign.go
  function Sign (line 16) | func Sign(sk string, txParam string) {

FILE: cmd/utils/cmd.go
  constant importBatchSize (line 43) | importBatchSize = 2500
  function Fatalf (line 49) | func Fatalf(format string, args ...interface{}) {
  function StartNode (line 66) | func StartNode(stack *node.Node) {
  function ImportChain (line 88) | func ImportChain(chain *core.BlockChain, fn string) error {
  function missingBlocks (line 171) | func missingBlocks(chain *core.BlockChain, blocks []*types.Block) []*typ...
  function ExportChain (line 191) | func ExportChain(blockchain *core.BlockChain, fn string) error {
  function ExportAppendChain (line 217) | func ExportAppendChain(blockchain *core.BlockChain, fn string, first uin...
  function ImportPreimages (line 241) | func ImportPreimages(db *serodb.LDBDatabase, fn string) error {
  function ExportPreimages (line 288) | func ExportPreimages(db *serodb.LDBDatabase, fn string) error {

FILE: cmd/utils/customflags.go
  type DirectoryString (line 37) | type DirectoryString struct
    method String (line 41) | func (self *DirectoryString) String() string {
    method Set (line 45) | func (self *DirectoryString) Set(value string) error {
  type DirectoryFlag (line 52) | type DirectoryFlag struct
    method String (line 58) | func (self DirectoryFlag) String() string {
    method Apply (line 76) | func (self DirectoryFlag) Apply(set *flag.FlagSet) {
    method GetName (line 210) | func (self DirectoryFlag) GetName() string {
    method Set (line 214) | func (self *DirectoryFlag) Set(value string) {
  function eachName (line 66) | func eachName(longName string, fn func(string)) {
  type TextMarshaler (line 82) | type TextMarshaler interface
  type textMarshalerVal (line 88) | type textMarshalerVal struct
    method String (line 92) | func (v textMarshalerVal) String() string {
    method Set (line 100) | func (v textMarshalerVal) Set(s string) error {
  type TextMarshalerFlag (line 105) | type TextMarshalerFlag struct
    method GetName (line 111) | func (f TextMarshalerFlag) GetName() string {
    method String (line 115) | func (f TextMarshalerFlag) String() string {
    method Apply (line 119) | func (f TextMarshalerFlag) Apply(set *flag.FlagSet) {
  function GlobalTextMarshaler (line 126) | func GlobalTextMarshaler(ctx *cli.Context, name string) TextMarshaler {
  type BigFlag (line 136) | type BigFlag struct
    method GetName (line 161) | func (f BigFlag) GetName() string {
    method String (line 165) | func (f BigFlag) String() string {
    method Apply (line 173) | func (f BigFlag) Apply(set *flag.FlagSet) {
  type bigValue (line 143) | type bigValue
    method String (line 145) | func (b *bigValue) String() string {
    method Set (line 152) | func (b *bigValue) Set(s string) error {
  function GlobalBig (line 180) | func GlobalBig(ctx *cli.Context, name string) *big.Int {
  function prefixFor (line 188) | func prefixFor(name string) (prefix string) {
  function prefixedNames (line 198) | func prefixedNames(fullName string) (prefixed string) {
  function expandPath (line 223) | func expandPath(p string) string {
  function homeDir (line 232) | func homeDir() string {

FILE: cmd/utils/flags.go
  function init (line 86) | func init() {
  function NewApp (line 104) | func NewApp(gitCommit, usage string) *cli.App {
  function MakeDataDir (line 677) | func MakeDataDir(ctx *cli.Context) string {
  function setNodeKey (line 694) | func setNodeKey(ctx *cli.Context, cfg *p2p.Config) {
  function setNodeUserIdent (line 718) | func setNodeUserIdent(ctx *cli.Context, cfg *node.Config) {
  function setBootstrapNodes (line 726) | func setBootstrapNodes(ctx *cli.Context, cfg *p2p.Config) {
  function setBootstrapNodesV5 (line 755) | func setBootstrapNodesV5(ctx *cli.Context, cfg *p2p.Config) {
  function setListenAddress (line 783) | func setListenAddress(ctx *cli.Context, cfg *p2p.Config) {
  function setNAT (line 790) | func setNAT(ctx *cli.Context, cfg *p2p.Config) {
  function splitAndTrim (line 802) | func splitAndTrim(input string) []string {
  function setHTTP (line 812) | func setHTTP(ctx *cli.Context, cfg *node.Config) {
  function setWS (line 850) | func setWS(ctx *cli.Context, cfg *node.Config) {
  function setIPC (line 871) | func setIPC(ctx *cli.Context, cfg *node.Config) {
  function makeDatabaseHandles (line 883) | func makeDatabaseHandles() int {
  function MakeAddress (line 901) | func MakeAddress(ks *keystore.KeyStore, account string) (accounts.Accoun...
  function MakePasswordList (line 940) | func MakePasswordList(ctx *cli.Context) []string {
  function SetP2PConfig (line 957) | func SetP2PConfig(ctx *cli.Context, cfg *p2p.Config) {
  function SetNodeConfig (line 1057) | func SetNodeConfig(ctx *cli.Context, cfg *node.Config) {
  function setGPO (line 1091) | func setGPO(ctx *cli.Context, cfg *gasprice.Config) {
  function setTxPool (line 1100) | func setTxPool(ctx *cli.Context, cfg *core.TxPoolConfig) {
  function initProof (line 1124) | func initProof(ctx *cli.Context) (cfg *proofservice.Config) {
  function setEthash (line 1168) | func setEthash(ctx *cli.Context, cfg *sero.Config) {
  function checkExclusive (line 1192) | func checkExclusive(ctx *cli.Context, args ...interface{}) {
  function SetSeroConfig (line 1228) | func SetSeroConfig(ctx *cli.Context, stack *node.Node, cfg *sero.Config) {
  function CheckExclusive (line 1324) | func CheckExclusive(ctx *cli.Context, args ...interface{}) {
  function SetDashboardConfig (line 1363) | func SetDashboardConfig(ctx *cli.Context, cfg *dashboard.Config) {
  function RegisterEthService (line 1370) | func RegisterEthService(stack *node.Node, cfg *sero.Config) {
  function RegisterDashboardService (line 1381) | func RegisterDashboardService(stack *node.Node, cfg *dashboard.Config, c...
  function SetupNetwork (line 1388) | func SetupNetwork(ctx *cli.Context) {
  function SetupMetrics (line 1393) | func SetupMetrics(ctx *cli.Context) {
  function MakeChainDatabase (line 1415) | func MakeChainDatabase(ctx *cli.Context, stack *node.Node) serodb.Databa...
  function MakeGenesis (line 1428) | func MakeGenesis(ctx *cli.Context) *core.Genesis {
  function MakeChain (line 1440) | func MakeChain(ctx *cli.Context, stack *node.Node) (chain *core.BlockCha...
  function MakeConsolePreloads (line 1482) | func MakeConsolePreloads(ctx *cli.Context) []string {
  function MigrateFlags (line 1510) | func MigrateFlags(action func(ctx *cli.Context) error) func(*cli.Context...

FILE: common/address/account_types.go
  constant AccountAddressLength (line 34) | AccountAddressLength = 64
  constant SeedLength (line 35) | SeedLength           = 32
  type Seed (line 38) | type Seed
    method SeedToUint256 (line 40) | func (priv *Seed) SeedToUint256() *c_type.Uint256 {
  function IsBase58Str (line 47) | func IsBase58Str(s string) bool {
  type MixBase58Adrress (line 58) | type MixBase58Adrress
    method MarshalText (line 60) | func (b MixBase58Adrress) MarshalText() ([]byte, error) {
    method IsPkr (line 64) | func (b MixBase58Adrress) IsPkr() bool {
    method ToPkr (line 68) | func (b MixBase58Adrress) ToPkr() c_type.PKr {
    method UnmarshalText (line 81) | func (b *MixBase58Adrress) UnmarshalText(input []byte) error {
  type TKAddress (line 110) | type TKAddress
    method ToTk (line 118) | func (b TKAddress) ToTk() c_type.Tk {
    method ToPk (line 125) | func (b *TKAddress) ToPk() (ret PKAddress) {
    method String (line 131) | func (c TKAddress) String() string {
    method MarshalText (line 135) | func (b TKAddress) MarshalText() ([]byte, error) {
    method UnmarshalText (line 140) | func (b *TKAddress) UnmarshalText(input []byte) error {
  function Base58ToTk (line 112) | func Base58ToTk(str string) (ret TKAddress) {
  type PKAddress (line 159) | type PKAddress
    method String (line 167) | func (b PKAddress) String() string {
    method ToUint512 (line 171) | func (b PKAddress) ToUint512() c_type.Uint512 {
    method MarshalText (line 183) | func (b PKAddress) MarshalText() ([]byte, error) {
    method UnmarshalText (line 188) | func (b *PKAddress) UnmarshalText(input []byte) (e error) {
  function StringToPk (line 161) | func StringToPk(str string) (ret PKAddress) {
  function NewPKAddres (line 178) | func NewPKAddres(b []byte) (ret PKAddress) {
  function ValidPk (line 217) | func ValidPk(addr []byte) error {
  function ValidPkr (line 230) | func ValidPkr(addr []byte) error {
  function Decode (line 243) | func Decode(input string) ([]byte, error) {
  function has0xPrefix (line 257) | func has0xPrefix(input string) bool {
  function isHexCharacter (line 260) | func isHexCharacter(c byte) bool {
  function IsHex (line 264) | func IsHex(s string) bool {
  function DecodeHex (line 280) | func DecodeHex(hex string) (bytes []byte, err error) {
  function DecodeAddr (line 296) | func DecodeAddr(input []byte) (bytes []byte, e error) {

FILE: common/bitutil/bitutil.go
  constant wordSize (line 15) | wordSize = int(unsafe.Sizeof(uintptr(0)))
  constant supportsUnaligned (line 16) | supportsUnaligned = runtime.GOARCH == "386" || runtime.GOARCH == "amd64"...
  function XORBytes (line 20) | func XORBytes(dst, a, b []byte) int {
  function fastXORBytes (line 29) | func fastXORBytes(dst, a, b []byte) int {
  function safeXORBytes (line 51) | func safeXORBytes(dst, a, b []byte) int {
  function ANDBytes (line 64) | func ANDBytes(dst, a, b []byte) int {
  function fastANDBytes (line 73) | func fastANDBytes(dst, a, b []byte) int {
  function safeANDBytes (line 95) | func safeANDBytes(dst, a, b []byte) int {
  function ORBytes (line 108) | func ORBytes(dst, a, b []byte) int {
  function fastORBytes (line 117) | func fastORBytes(dst, a, b []byte) int {
  function safeORBytes (line 139) | func safeORBytes(dst, a, b []byte) int {
  function TestBytes (line 151) | func TestBytes(p []byte) bool {
  function fastTestBytes (line 160) | func fastTestBytes(p []byte) bool {
  function safeTestBytes (line 181) | func safeTestBytes(p []byte) bool {

FILE: common/bitutil/bitutil_test.go
  function TestXOR (line 15) | func TestXOR(t *testing.T) {
  function TestAND (line 42) | func TestAND(t *testing.T) {
  function TestOR (line 69) | func TestOR(t *testing.T) {
  function TestTest (line 96) | func TestTest(t *testing.T) {
  function BenchmarkFastXOR1KB (line 116) | func BenchmarkFastXOR1KB(b *testing.B) { benchmarkFastXOR(b, 1024) }
  function BenchmarkFastXOR2KB (line 117) | func BenchmarkFastXOR2KB(b *testing.B) { benchmarkFastXOR(b, 2048) }
  function BenchmarkFastXOR4KB (line 118) | func BenchmarkFastXOR4KB(b *testing.B) { benchmarkFastXOR(b, 4096) }
  function benchmarkFastXOR (line 120) | func benchmarkFastXOR(b *testing.B, size int) {
  function BenchmarkBaseXOR1KB (line 129) | func BenchmarkBaseXOR1KB(b *testing.B) { benchmarkBaseXOR(b, 1024) }
  function BenchmarkBaseXOR2KB (line 130) | func BenchmarkBaseXOR2KB(b *testing.B) { benchmarkBaseXOR(b, 2048) }
  function BenchmarkBaseXOR4KB (line 131) | func BenchmarkBaseXOR4KB(b *testing.B) { benchmarkBaseXOR(b, 4096) }
  function benchmarkBaseXOR (line 133) | func benchmarkBaseXOR(b *testing.B, size int) {
  function BenchmarkFastAND1KB (line 142) | func BenchmarkFastAND1KB(b *testing.B) { benchmarkFastAND(b, 1024) }
  function BenchmarkFastAND2KB (line 143) | func BenchmarkFastAND2KB(b *testing.B) { benchmarkFastAND(b, 2048) }
  function BenchmarkFastAND4KB (line 144) | func BenchmarkFastAND4KB(b *testing.B) { benchmarkFastAND(b, 4096) }
  function benchmarkFastAND (line 146) | func benchmarkFastAND(b *testing.B, size int) {
  function BenchmarkBaseAND1KB (line 155) | func BenchmarkBaseAND1KB(b *testing.B) { benchmarkBaseAND(b, 1024) }
  function BenchmarkBaseAND2KB (line 156) | func BenchmarkBaseAND2KB(b *testing.B) { benchmarkBaseAND(b, 2048) }
  function BenchmarkBaseAND4KB (line 157) | func BenchmarkBaseAND4KB(b *testing.B) { benchmarkBaseAND(b, 4096) }
  function benchmarkBaseAND (line 159) | func benchmarkBaseAND(b *testing.B, size int) {
  function BenchmarkFastOR1KB (line 168) | func BenchmarkFastOR1KB(b *testing.B) { benchmarkFastOR(b, 1024) }
  function BenchmarkFastOR2KB (line 169) | func BenchmarkFastOR2KB(b *testing.B) { benchmarkFastOR(b, 2048) }
  function BenchmarkFastOR4KB (line 170) | func BenchmarkFastOR4KB(b *testing.B) { benchmarkFastOR(b, 4096) }
  function benchmarkFastOR (line 172) | func benchmarkFastOR(b *testing.B, size int) {
  function BenchmarkBaseOR1KB (line 181) | func BenchmarkBaseOR1KB(b *testing.B) { benchmarkBaseOR(b, 1024) }
  function BenchmarkBaseOR2KB (line 182) | func BenchmarkBaseOR2KB(b *testing.B) { benchmarkBaseOR(b, 2048) }
  function BenchmarkBaseOR4KB (line 183) | func BenchmarkBaseOR4KB(b *testing.B) { benchmarkBaseOR(b, 4096) }
  function benchmarkBaseOR (line 185) | func benchmarkBaseOR(b *testing.B, size int) {
  function BenchmarkFastTest1KB (line 194) | func BenchmarkFastTest1KB(b *testing.B) { benchmarkFastTest(b, 1024) }
  function BenchmarkFastTest2KB (line 195) | func BenchmarkFastTest2KB(b *testing.B) { benchmarkFastTest(b, 2048) }
  function BenchmarkFastTest4KB (line 196) | func BenchmarkFastTest4KB(b *testing.B) { benchmarkFastTest(b, 4096) }
  function benchmarkFastTest (line 198) | func benchmarkFastTest(b *testing.B, size int) {
  function BenchmarkBaseTest1KB (line 206) | func BenchmarkBaseTest1KB(b *testing.B) { benchmarkBaseTest(b, 1024) }
  function BenchmarkBaseTest2KB (line 207) | func BenchmarkBaseTest2KB(b *testing.B) { benchmarkBaseTest(b, 2048) }
  function BenchmarkBaseTest4KB (line 208) | func BenchmarkBaseTest4KB(b *testing.B) { benchmarkBaseTest(b, 4096) }
  function benchmarkBaseTest (line 210) | func benchmarkBaseTest(b *testing.B, size int) {

FILE: common/bitutil/compress.go
  function CompressBytes (line 60) | func CompressBytes(data []byte) []byte {
  function bitsetEncodeBytes (line 71) | func bitsetEncodeBytes(data []byte) []byte {
  function DecompressBytes (line 102) | func DecompressBytes(data []byte, target int) ([]byte, error) {
  function bitsetDecodeBytes (line 115) | func bitsetDecodeBytes(data []byte, target int) ([]byte, error) {
  function bitsetDecodePartialBytes (line 130) | func bitsetDecodePartialBytes(data []byte, target int) ([]byte, int, err...

FILE: common/bitutil/compress_fuzz.go
  function Fuzz (line 25) | func Fuzz(data []byte) int {
  function fuzzEncode (line 37) | func fuzzEncode(data []byte) int {
  function fuzzDecode (line 47) | func fuzzDecode(data []byte) int {

FILE: common/bitutil/compress_test.go
  function TestEncodingCycle (line 28) | func TestEncodingCycle(t *testing.T) {
  function TestDecodingCycle (line 65) | func TestDecodingCycle(t *testing.T) {
  function TestCompression (line 119) | func TestCompression(t *testing.T) {
  function BenchmarkEncoding1KBVerySparse (line 147) | func BenchmarkEncoding1KBVerySparse(b *testing.B) { benchmarkEncoding(b,...
  function BenchmarkEncoding2KBVerySparse (line 148) | func BenchmarkEncoding2KBVerySparse(b *testing.B) { benchmarkEncoding(b,...
  function BenchmarkEncoding4KBVerySparse (line 149) | func BenchmarkEncoding4KBVerySparse(b *testing.B) { benchmarkEncoding(b,...
  function BenchmarkEncoding1KBSparse (line 151) | func BenchmarkEncoding1KBSparse(b *testing.B) { benchmarkEncoding(b, 102...
  function BenchmarkEncoding2KBSparse (line 152) | func BenchmarkEncoding2KBSparse(b *testing.B) { benchmarkEncoding(b, 204...
  function BenchmarkEncoding4KBSparse (line 153) | func BenchmarkEncoding4KBSparse(b *testing.B) { benchmarkEncoding(b, 409...
  function BenchmarkEncoding1KBDense (line 155) | func BenchmarkEncoding1KBDense(b *testing.B) { benchmarkEncoding(b, 1024...
  function BenchmarkEncoding2KBDense (line 156) | func BenchmarkEncoding2KBDense(b *testing.B) { benchmarkEncoding(b, 2048...
  function BenchmarkEncoding4KBDense (line 157) | func BenchmarkEncoding4KBDense(b *testing.B) { benchmarkEncoding(b, 4096...
  function BenchmarkEncoding1KBSaturated (line 159) | func BenchmarkEncoding1KBSaturated(b *testing.B) { benchmarkEncoding(b, ...
  function BenchmarkEncoding2KBSaturated (line 160) | func BenchmarkEncoding2KBSaturated(b *testing.B) { benchmarkEncoding(b, ...
  function BenchmarkEncoding4KBSaturated (line 161) | func BenchmarkEncoding4KBSaturated(b *testing.B) { benchmarkEncoding(b, ...
  function benchmarkEncoding (line 163) | func benchmarkEncoding(b *testing.B, bytes int, fill float64) {

FILE: common/bytes.go
  function ToHex (line 29) | func ToHex(b []byte) string {
  function FromHex (line 39) | func FromHex(s string) []byte {
  function CopyBytes (line 52) | func CopyBytes(b []byte) (copiedBytes []byte) {
  function isHexCharacter (line 63) | func isHexCharacter(c byte) bool {
  function isHex (line 68) | func isHex(str string) bool {
  function has0xPrefix (line 80) | func has0xPrefix(input string) bool {
  function Is0xPrefixHex (line 84) | func Is0xPrefixHex(s string) bool {
  function Bytes2Hex (line 95) | func Bytes2Hex(d []byte) string {
  function Hex2Bytes (line 100) | func Hex2Bytes(str string) []byte {
  function Hex2BytesFixed (line 106) | func Hex2BytesFixed(str string, flen int) []byte {
  function RightPadBytes (line 120) | func RightPadBytes(slice []byte, l int) []byte {
  function LeftPadBytes (line 132) | func LeftPadBytes(slice []byte, l int) []byte {
  function BytesToString (line 143) | func BytesToString(b []byte) string {

FILE: common/bytes_test.go
  type BytesSuite (line 26) | type BytesSuite struct
    method TestCopyBytes (line 30) | func (s *BytesSuite) TestCopyBytes(c *checker.C) {
    method TestLeftPadBytes (line 37) | func (s *BytesSuite) TestLeftPadBytes(c *checker.C) {
    method TestRightPadBytes (line 48) | func (s *BytesSuite) TestRightPadBytes(c *checker.C) {
  function TestFromHex (line 59) | func TestFromHex(t *testing.T) {
  function TestIsHex (line 68) | func TestIsHex(t *testing.T) {
  function TestFromHexOddLength (line 89) | func TestFromHexOddLength(t *testing.T) {
  function TestNoPrefixShortHexOddLength (line 98) | func TestNoPrefixShortHexOddLength(t *testing.T) {

FILE: common/compiler/helpers.go
  type Contract (line 29) | type Contract struct
  type ContractInfo (line 41) | type ContractInfo struct
  function slurpFiles (line 55) | func slurpFiles(files []string) (string, error) {

FILE: common/compiler/solidity.go
  type Solidity (line 31) | type Solidity struct
    method makeArgs (line 47) | func (s *Solidity) makeArgs() []string {
    method run (line 121) | func (s *Solidity) run(cmd *exec.Cmd, source string) (map[string]*Cont...
  type solcOutput (line 37) | type solcOutput struct
  function SolidityVersion (line 60) | func SolidityVersion(solc string) (*Solidity, error) {
  function CompileSolidityString (line 89) | func CompileSolidityString(solc, source string) (map[string]*Contract, e...
  function CompileSolidity (line 104) | func CompileSolidity(solc string, sourcefiles ...string) (map[string]*Co...
  function ParseCombinedJSON (line 141) | func ParseCombinedJSON(combinedJSON []byte, source string, languageVersi...

FILE: common/compiler/solidity_test.go
  constant testSource (line 25) | testSource = `
  function skipWithoutSolc (line 36) | func skipWithoutSolc(t *testing.T) {
  function TestSolidityCompiler (line 42) | func TestSolidityCompiler(t *testing.T) {
  function TestSolidityCompileError (line 70) | func TestSolidityCompileError(t *testing.T) {

FILE: common/debug.go
  function Report (line 28) | func Report(extra ...interface{}) {
  function PrintDepricationWarning (line 41) | func PrintDepricationWarning(str string) {

FILE: common/fdlimit/fdlimit_freebsd.go
  function Raise (line 29) | func Raise(max uint64) error {
  function Current (line 48) | func Current() (int, error) {
  function Maximum (line 58) | func Maximum() (int, error) {

FILE: common/fdlimit/fdlimit_unix.go
  function Raise (line 25) | func Raise(max uint64) error {
  function Current (line 44) | func Current() (int, error) {
  function Maximum (line 54) | func Maximum() (int, error) {

FILE: common/fdlimit/fdlimit_windows.go
  function Raise (line 23) | func Raise(max uint64) error {
  function Current (line 38) | func Current() (int, error) {
  function Maximum (line 45) | func Maximum() (int, error) {

FILE: common/format.go
  type PrettyDuration (line 28) | type PrettyDuration
    method String (line 34) | func (d PrettyDuration) String() string {
  type PrettyAge (line 44) | type PrettyAge
    method String (line 62) | func (t PrettyAge) String() string {

FILE: common/hexutil/abi_string.go
  type Uint8 (line 3) | type Uint8
    method UnmarshalText (line 5) | func (b *Uint8) UnmarshalText(input []byte) error {
  type Uint16 (line 17) | type Uint16
    method UnmarshalText (line 19) | func (b *Uint16) UnmarshalText(input []byte) error {
  type Uint32 (line 31) | type Uint32
    method UnmarshalText (line 33) | func (b *Uint32) UnmarshalText(input []byte) error {

FILE: common/hexutil/hexutil.go
  constant uintBits (line 40) | uintBits = 32 << (uint64(^uint(0)) >> 63)
  type decError (line 56) | type decError struct
    method Error (line 58) | func (err decError) Error() string { return err.msg }
  function Decode (line 61) | func Decode(input string) ([]byte, error) {
  function MustDecode (line 76) | func MustDecode(input string) []byte {
  function Encode (line 85) | func Encode(b []byte) string {
  function DecodeUint64 (line 93) | func DecodeUint64(input string) (uint64, error) {
  function MustDecodeUint64 (line 107) | func MustDecodeUint64(input string) uint64 {
  function EncodeUint64 (line 116) | func EncodeUint64(i uint64) string {
  function init (line 124) | func init() {
  function DecodeBig (line 140) | func DecodeBig(input string) (*big.Int, error) {
  function MustDecodeBig (line 171) | func MustDecodeBig(input string) *big.Int {
  function EncodeBig (line 181) | func EncodeBig(bigint *big.Int) string {
  function has0xPrefix (line 189) | func has0xPrefix(input string) bool {
  function checkNumber (line 193) | func checkNumber(input string) (raw string, err error) {
  constant badNibble (line 210) | badNibble = ^uint64(0)
  function decodeNibble (line 212) | func decodeNibble(in byte) uint64 {
  function mapError (line 225) | func mapError(err error) error {

FILE: common/hexutil/hexutil_test.go
  type marshalTest (line 25) | type marshalTest struct
  type unmarshalTest (line 30) | type unmarshalTest struct
  function TestEncode (line 139) | func TestEncode(t *testing.T) {
  function TestDecode (line 148) | func TestDecode(t *testing.T) {
  function TestEncodeBig (line 161) | func TestEncodeBig(t *testing.T) {
  function TestDecodeBig (line 170) | func TestDecodeBig(t *testing.T) {
  function TestEncodeUint64 (line 183) | func TestEncodeUint64(t *testing.T) {
  function TestDecodeUint64 (line 192) | func TestDecodeUint64(t *testing.T) {

FILE: common/hexutil/json.go
  type Bytes (line 40) | type Bytes
    method MarshalText (line 43) | func (b Bytes) MarshalText() ([]byte, error) {
    method MarshalBase58Text (line 50) | func (b Bytes) MarshalBase58Text() ([]byte, error) {
    method UnmarshalJSON (line 55) | func (b *Bytes) UnmarshalJSON(input []byte) error {
    method UnmarshalText (line 63) | func (b *Bytes) UnmarshalText(input []byte) error {
    method String (line 78) | func (b Bytes) String() string {
  function UnmarshalFixedJSON (line 85) | func UnmarshalFixedJSON(typ reflect.Type, input, out []byte) error {
  function UnmarshalFixedText (line 95) | func UnmarshalFixedText(typname string, input, out []byte) error {
  function UnmarshalFixedUnprefixedText (line 116) | func UnmarshalFixedUnprefixedText(typname string, input, out []byte) err...
  type Big (line 140) | type Big
    method MarshalText (line 143) | func (b Big) MarshalText() ([]byte, error) {
    method UnmarshalJSON (line 148) | func (b *Big) UnmarshalJSON(input []byte) error {
    method UnmarshalText (line 156) | func (b *Big) UnmarshalText(input []byte) error {
    method ToInt (line 188) | func (b *Big) ToInt() *big.Int {
    method String (line 193) | func (b *Big) String() string {
  type Uint64 (line 199) | type Uint64
    method MarshalText (line 202) | func (b Uint64) MarshalText() ([]byte, error) {
    method UnmarshalJSON (line 210) | func (b *Uint64) UnmarshalJSON(input []byte) error {
    method UnmarshalText (line 218) | func (b *Uint64) UnmarshalText(input []byte) error {
    method String (line 240) | func (b Uint64) String() string {
  type Uint (line 246) | type Uint
    method MarshalText (line 249) | func (b Uint) MarshalText() ([]byte, error) {
    method UnmarshalJSON (line 254) | func (b *Uint) UnmarshalJSON(input []byte) error {
    method UnmarshalText (line 262) | func (b *Uint) UnmarshalText(input []byte) error {
    method String (line 275) | func (b Uint) String() string {
  function isString (line 279) | func isString(input []byte) bool {
  function bytesHave0xPrefix (line 283) | func bytesHave0xPrefix(input []byte) bool {
  function checkText (line 287) | func checkText(input []byte, wantPrefix bool) ([]byte, error) {
  function isBase58Str (line 302) | func isBase58Str(s string) bool {
  function checkBase58Text (line 313) | func checkBase58Text(input []byte) ([]byte, error) {
  function checkNumberText (line 322) | func checkNumberText(input []byte) (raw []byte, err error) {
  function wrapTypeError (line 339) | func wrapTypeError(err error, typ reflect.Type) error {
  function errNonString (line 346) | func errNonString(typ reflect.Type) error {

FILE: common/hexutil/json_test.go
  function checkError (line 28) | func checkError(t *testing.T, input string, got, want error) bool {
  function referenceBig (line 44) | func referenceBig(s string) *big.Int {
  function referenceBytes (line 52) | func referenceBytes(s string) []byte {
  function TestUnmarshalBytes (line 84) | func TestUnmarshalBytes(t *testing.T) {
  function BenchmarkUnmarshalBytes (line 98) | func BenchmarkUnmarshalBytes(b *testing.B) {
  function TestMarshalBytes (line 108) | func TestMarshalBytes(t *testing.T) {
  function TestUnmarshalBig (line 165) | func TestUnmarshalBig(t *testing.T) {
  function BenchmarkUnmarshalBig (line 179) | func BenchmarkUnmarshalBig(b *testing.B) {
  function TestMarshalBig (line 189) | func TestMarshalBig(t *testing.T) {
  function TestUnmarshalUint64 (line 231) | func TestUnmarshalUint64(t *testing.T) {
  function BenchmarkUnmarshalUint64 (line 245) | func BenchmarkUnmarshalUint64(b *testing.B) {
  function TestMarshalUint64 (line 253) | func TestMarshalUint64(t *testing.T) {
  function TestMarshalUint (line 272) | func TestMarshalUint(t *testing.T) {
  function TestUnmarshalUint (line 323) | func TestUnmarshalUint(t *testing.T) {
  function TestUnmarshalFixedUnprefixedText (line 341) | func TestUnmarshalFixedUnprefixedText(t *testing.T) {

FILE: common/math/big.go
  constant wordBits (line 37) | wordBits = 32 << (uint64(^big.Word(0)) >> 63)
  constant wordBytes (line 39) | wordBytes = wordBits / 8
  type HexOrDecimal256 (line 43) | type HexOrDecimal256
    method UnmarshalText (line 46) | func (i *HexOrDecimal256) UnmarshalText(input []byte) error {
    method MarshalText (line 56) | func (i *HexOrDecimal256) MarshalText() ([]byte, error) {
  function ParseBig256 (line 65) | func ParseBig256(s string) (*big.Int, bool) {
  function MustParseBig256 (line 83) | func MustParseBig256(s string) *big.Int {
  function BigPow (line 92) | func BigPow(a, b int64) *big.Int {
  function BigMax (line 98) | func BigMax(x, y *big.Int) *big.Int {
  function BigMin (line 106) | func BigMin(x, y *big.Int) *big.Int {
  function FirstBitSet (line 114) | func FirstBitSet(v *big.Int) int {
  function PaddedBigBytes (line 125) | func PaddedBigBytes(bigint *big.Int, n int) []byte {
  function bigEndianByteAt (line 137) | func bigEndianByteAt(bigint *big.Int, n int) byte {
  function Byte (line 155) | func Byte(bigint *big.Int, padlength, n int) byte {
  function ReadBits (line 164) | func ReadBits(bigint *big.Int, buf []byte) {
  function U256 (line 176) | func U256(x *big.Int) *big.Int {
  function S256 (line 187) | func S256(x *big.Int) *big.Int {
  function Exp (line 199) | func Exp(base, exponent *big.Int) *big.Int {

FILE: common/math/big_test.go
  function TestHexOrDecimal256 (line 28) | func TestHexOrDecimal256(t *testing.T) {
  function TestMustParseBig256 (line 64) | func TestMustParseBig256(t *testing.T) {
  function TestBigMax (line 73) | func TestBigMax(t *testing.T) {
  function TestBigMin (line 88) | func TestBigMin(t *testing.T) {
  function TestFirstBigSet (line 103) | func TestFirstBigSet(t *testing.T) {
  function TestPaddedBigBytes (line 120) | func TestPaddedBigBytes(t *testing.T) {
  function BenchmarkPaddedBigBytesLargePadding (line 138) | func BenchmarkPaddedBigBytesLargePadding(b *testing.B) {
  function BenchmarkPaddedBigBytesSmallPadding (line 145) | func BenchmarkPaddedBigBytesSmallPadding(b *testing.B) {
  function BenchmarkPaddedBigBytesSmallOnePadding (line 152) | func BenchmarkPaddedBigBytesSmallOnePadding(b *testing.B) {
  function BenchmarkByteAtBrandNew (line 159) | func BenchmarkByteAtBrandNew(b *testing.B) {
  function BenchmarkByteAt (line 166) | func BenchmarkByteAt(b *testing.B) {
  function BenchmarkByteAtOld (line 173) | func BenchmarkByteAtOld(b *testing.B) {
  function TestReadBits (line 181) | func TestReadBits(t *testing.T) {
  function TestU256 (line 196) | func TestU256(t *testing.T) {
  function TestBigEndianByteAt (line 215) | func TestBigEndianByteAt(t *testing.T) {
  function TestLittleEndianByteAt (line 240) | func TestLittleEndianByteAt(t *testing.T) {
  function TestS256 (line 274) | func TestS256(t *testing.T) {
  function TestExp (line 303) | func TestExp(t *testing.T) {

FILE: common/math/integer.go
  constant MaxInt8 (line 26) | MaxInt8   = 1<<7 - 1
  constant MinInt8 (line 27) | MinInt8   = -1 << 7
  constant MaxInt16 (line 28) | MaxInt16  = 1<<15 - 1
  constant MinInt16 (line 29) | MinInt16  = -1 << 15
  constant MaxInt32 (line 30) | MaxInt32  = 1<<31 - 1
  constant MinInt32 (line 31) | MinInt32  = -1 << 31
  constant MaxInt64 (line 32) | MaxInt64  = 1<<63 - 1
  constant MinInt64 (line 33) | MinInt64  = -1 << 63
  constant MaxUint8 (line 34) | MaxUint8  = 1<<8 - 1
  constant MaxUint16 (line 35) | MaxUint16 = 1<<16 - 1
  constant MaxUint32 (line 36) | MaxUint32 = 1<<32 - 1
  constant MaxUint64 (line 37) | MaxUint64 = 1<<64 - 1
  type HexOrDecimal64 (line 41) | type HexOrDecimal64
    method UnmarshalText (line 44) | func (i *HexOrDecimal64) UnmarshalText(input []byte) error {
    method MarshalText (line 54) | func (i HexOrDecimal64) MarshalText() ([]byte, error) {
  function ParseUint64 (line 60) | func ParseUint64(s string) (uint64, bool) {
  function MustParseUint64 (line 73) | func MustParseUint64(s string) uint64 {
  function SafeSub (line 84) | func SafeSub(x, y uint64) (uint64, bool) {
  function SafeAdd (line 89) | func SafeAdd(x, y uint64) (uint64, bool) {
  function SafeMul (line 94) | func SafeMul(x, y uint64) (uint64, bool) {

FILE: common/math/integer_test.go
  type operation (line 23) | type operation
  constant sub (line 26) | sub operation = iota
  constant add (line 27) | add
  constant mul (line 28) | mul
  function TestOverflow (line 31) | func TestOverflow(t *testing.T) {
  function TestHexOrDecimal64 (line 68) | func TestHexOrDecimal64(t *testing.T) {
  function TestMustParseUint64 (line 103) | func TestMustParseUint64(t *testing.T) {
  function TestMustParseUint64Panic (line 109) | func TestMustParseUint64Panic(t *testing.T) {

FILE: common/mclock/mclock.go
  type AbsTime (line 27) | type AbsTime
  function Now (line 30) | func Now() AbsTime {

FILE: common/path.go
  function MakeName (line 29) | func MakeName(name, version string) string {
  function FileExist (line 34) | func FileExist(filePath string) bool {
  function AbsolutePath (line 44) | func AbsolutePath(datadir string, filename string) string {

FILE: common/size.go
  type StorageSize (line 25) | type StorageSize
    method String (line 28) | func (s StorageSize) String() string {
    method TerminalString (line 40) | func (s StorageSize) TerminalString() string {

FILE: common/size_test.go
  function TestStorageSizeString (line 23) | func TestStorageSizeString(t *testing.T) {

FILE: common/test_utils.go
  function LoadJSON (line 26) | func LoadJSON(file string, val interface{}) error {
  function findLine (line 42) | func findLine(data []byte, offset int64) (line int) {

FILE: common/types.go
  constant HashLength (line 46) | HashLength = 32
  constant AddressLength (line 48) | AddressLength = 96
  function IsString (line 56) | func IsString(input []byte) bool {
  type Hash (line 61) | type Hash
    method Bytes (line 80) | func (h Hash) Bytes() []byte { return h[:] }
    method Big (line 83) | func (h Hash) Big() *big.Int { return new(big.Int).SetBytes(h[:]) }
    method Hex (line 86) | func (h Hash) Hex() string { return hexutil.Encode(h[:]) }
    method TerminalString (line 90) | func (h Hash) TerminalString() string {
    method String (line 96) | func (h Hash) String() string {
    method Format (line 102) | func (h Hash) Format(s fmt.State, c rune) {
    method UnmarshalText (line 107) | func (h *Hash) UnmarshalText(input []byte) error {
    method UnmarshalJSON (line 112) | func (h *Hash) UnmarshalJSON(input []byte) error {
    method MarshalText (line 117) | func (h Hash) MarshalText() ([]byte, error) {
    method SetBytes (line 123) | func (h *Hash) SetBytes(b []byte) {
    method Generate (line 132) | func (h Hash) Generate(rand *rand.Rand, size int) reflect.Value {
    method Scan (line 141) | func (h *Hash) Scan(src interface{}) error {
    method Value (line 154) | func (h Hash) Value() (driver.Value, error) {
    method HashToUint256 (line 158) | func (h Hash) HashToUint256() *c_type.Uint256 {
  function BytesToHash (line 65) | func BytesToHash(b []byte) Hash {
  function BigToHash (line 73) | func BigToHash(b *big.Int) Hash { return BytesToHash(b.Bytes()) }
  function HexToHash (line 77) | func HexToHash(s string) Hash { return BytesToHash(FromHex(s)) }
  function HashToHex (line 164) | func HashToHex(hashs []Hash) []string {
  type UnprefixedHash (line 173) | type UnprefixedHash
    method UnmarshalText (line 176) | func (h *UnprefixedHash) UnmarshalText(input []byte) error {
    method MarshalText (line 181) | func (h UnprefixedHash) MarshalText() ([]byte, error) {
  function keccak512 (line 187) | func keccak512(data ...[]byte) []byte {
  type Address (line 196) | type Address
    method ToCaddr (line 200) | func (a Address) ToCaddr() ContractAddress {
    method Bytes (line 258) | func (a Address) Bytes() []byte { return a[:] }
    method ToPKr (line 260) | func (a Address) ToPKr() *c_type.PKr {
    method ToUint512 (line 266) | func (a Address) ToUint512() *c_type.Uint512 {
    method Big (line 273) | func (a Address) Big() *big.Int { return new(big.Int).SetBytes(a[:]) }
    method Base58 (line 276) | func (a Address) Base58() string {
    method String (line 281) | func (a Address) String() string {
    method IsAccountAddress (line 289) | func (a Address) IsAccountAddress() bool {
    method Format (line 301) | func (a Address) Format(s fmt.State, c rune) {
    method SetBytes (line 307) | func (a *Address) SetBytes(b []byte) {
    method MarshalText (line 316) | func (a Address) MarshalText() ([]byte, error) {
    method UnmarshalText (line 321) | func (a *Address) UnmarshalText(input []byte) error {
    method UnmarshalJSON (line 345) | func (a *Address) UnmarshalJSON(input []byte) error {
    method Scan (line 355) | func (a *Address) Scan(src interface{}) error {
    method Value (line 372) | func (a Address) Value() (driver.Value, error) {
  type ContractAddress (line 198) | type ContractAddress
    method Big (line 210) | func (a ContractAddress) Big() *big.Int { return new(big.Int).SetBytes...
    method SetBytes (line 212) | func (a *ContractAddress) SetBytes(b []byte) {
    method MarshalText (line 219) | func (a ContractAddress) MarshalText() ([]byte, error) {
    method UnmarshalText (line 224) | func (a *ContractAddress) UnmarshalText(input []byte) error {
  function BytesToAddress (line 230) | func BytesToAddress(b []byte) Address {
  function BytesToContractAddress (line 236) | func BytesToContractAddress(b []byte) ContractAddress {
  function BigToAddress (line 244) | func BigToAddress(b *big.Int) Address { return BytesToAddress(b.Bytes()) }
  function BigToContractAddress (line 246) | func BigToContractAddress(b *big.Int) ContractAddress { return BytesToCo...
  function Base58ToAddress (line 252) | func Base58ToAddress(s string) Address {
  type AddressList (line 376) | type AddressList
    method Len (line 378) | func (self AddressList) Len() int {
    method Less (line 381) | func (self AddressList) Less(i, j int) bool {
    method Swap (line 384) | func (self AddressList) Swap(i, j int) {
  type UnprefixedAddress (line 389) | type UnprefixedAddress
    method UnmarshalText (line 391) | func (a *UnprefixedAddress) UnmarshalText(input []byte) error {
    method MarshalText (line 402) | func (a UnprefixedAddress) MarshalText() ([]byte, error) {
  function ByteSliceEqual (line 406) | func ByteSliceEqual(a, b []byte) bool {

FILE: consensus/consensus.go
  type ChainReader (line 32) | type ChainReader interface
  type Engine (line 53) | type Engine interface
  type PoW (line 97) | type PoW interface

FILE: consensus/ethash/algorithm.go
  constant datasetInitBytes (line 39) | datasetInitBytes   = 1 << 30
  constant datasetGrowthBytes (line 40) | datasetGrowthBytes = 1 << 23
  constant cacheInitBytes (line 41) | cacheInitBytes     = 1 << 24
  constant cacheGrowthBytes (line 42) | cacheGrowthBytes   = 1 << 17
  constant epochLength (line 43) | epochLength        = 30000
  constant mixBytes (line 44) | mixBytes           = 128
  constant hashBytes (line 45) | hashBytes          = 64
  constant hashWords (line 46) | hashWords          = 16
  constant datasetParents (line 47) | datasetParents     = 256
  constant cacheRounds (line 48) | cacheRounds        = 3
  constant loopAccesses (line 49) | loopAccesses       = 64
  function cacheSize (line 54) | func cacheSize(block uint64) uint64 {
  function calcCacheSize (line 65) | func calcCacheSize(epoch int) uint64 {
  function datasetSize (line 75) | func datasetSize(block uint64) uint64 {
  function calcDatasetSize (line 86) | func calcDatasetSize(epoch int) uint64 {
  type hasher (line 96) | type hasher
  function makeHasher (line 101) | func makeHasher(h hash.Hash) hasher {
  function seedHash (line 122) | func seedHash(block uint64) []byte {
  function generateCache (line 140) | func generateCache(dest []uint32, epoch uint64, seed []byte) {
  function swap (line 212) | func swap(buffer []byte) {
  function fnv (line 222) | func fnv(a, b uint32) uint32 {
  function fnvHash (line 227) | func fnvHash(mix []uint32, data []uint32) {
  function generateDatasetItem (line 235) | func generateDatasetItem(cache []uint32, index uint32, keccak512 hasher)...
  function generateDataset (line 268) | func generateDataset(dest []uint32, epoch uint64, cache []uint32) {
  function hashimoto (line 336) | func hashimoto(hash []byte, nonce uint64, size uint64, lookup func(index...
  function hashimotoLight (line 381) | func hashimotoLight(size uint64, cache []uint32, hash []byte, nonce uint...
  function hashimotoFull (line 399) | func hashimotoFull(dataset []uint32, hash []byte, nonce uint64, num uint...
  constant maxEpoch (line 407) | maxEpoch = 2048

FILE: consensus/ethash/algorithm_test.go
  function prepare (line 37) | func prepare(dest []uint32, src []byte) {
  function TestSizeCalculations (line 45) | func TestSizeCalculations(t *testing.T) {
  function TestCacheGeneration (line 60) | func TestCacheGeneration(t *testing.T) {
  function TestDatasetGeneration (line 122) | func TestDatasetGeneration(t *testing.T) {
  function TestHashimoto (line 667) | func TestHashimoto(t *testing.T) {
  function TestConcurrentDiskCacheGeneration (line 699) | func TestConcurrentDiskCacheGeneration(t *testing.T) {
  function BenchmarkCacheGeneration (line 741) | func BenchmarkCacheGeneration(b *testing.B) {
  function BenchmarkSmallDatasetGeneration (line 749) | func BenchmarkSmallDatasetGeneration(b *testing.B) {
  function BenchmarkHashimotoLight (line 761) | func BenchmarkHashimotoLight(b *testing.B) {
  function BenchmarkHashimotoFullSmall (line 774) | func BenchmarkHashimotoFullSmall(b *testing.B) {

FILE: consensus/ethash/consensus.go
  method Author (line 70) | func (ethash *Ethash) Author(header *types.Header) (common.Address, erro...
  method VerifyHeader (line 76) | func (ethash *Ethash) VerifyHeader(chain consensus.ChainReader, header *...
  method VerifyHeaders (line 97) | func (ethash *Ethash) VerifyHeaders(chain consensus.ChainReader, headers...
  method verifyHeaderWorker (line 159) | func (ethash *Ethash) verifyHeaderWorker(chain consensus.ChainReader, he...
  method verifyHeader (line 178) | func (ethash *Ethash) verifyHeader(chain consensus.ChainReader, header, ...
  method CalcDifficulty (line 242) | func (ethash *Ethash) CalcDifficulty(chain consensus.ChainReader, time u...
  function CalcDifficulty (line 249) | func CalcDifficulty(config *params.ChainConfig, time uint64, parent *typ...
  function calcDifficultyAutumnTwilight (line 272) | func calcDifficultyAutumnTwilight(time uint64, parent *types.Header) *bi...
  function calcDifficultyFrontier (line 308) | func calcDifficultyFrontier(time uint64, parent *types.Header) *big.Int {
  method VerifySeal (line 340) | func (ethash *Ethash) VerifySeal(chain consensus.ChainReader, header *ty...
  method Prepare (line 394) | func (ethash *Ethash) Prepare(chain consensus.ChainReader, header *types...
  type SIPItem (line 403) | type SIPItem struct
  type SIPItems (line 407) | type SIPItems struct
  type SIPSetting (line 412) | type SIPSetting struct
    method AddItem (line 437) | func (self *SIPSetting) AddItem(hash string,sip uint64,code []byte,che...
    method Get (line 459) | func (self *SIPSetting) Get(num uint64) *SIPItems {
  function newSIPSetting (line 415) | func newSIPSetting() *SIPSetting {
  function hexToAddr (line 421) | func hexToAddr(s string) common.Address {
  function base58ToHexAddr (line 429) | func base58ToHexAddr(s string) (string,string) {
  function GetSipSetting (line 484) | func GetSipSetting() *SIPSetting {
  method Finalize (line 502) | func (ethash *Ethash) Finalize(chain consensus.ChainReader, header *type...
  function Halve (line 554) | func Halve(blockNumber *big.Int) *big.Int {
  function accumulateRewards (line 565) | func accumulateRewards(config *params.ChainConfig, statedb *state.StateD...
  function accumulateRewardsV1 (line 594) | func accumulateRewardsV1(config *params.ChainConfig, statedb *state.Stat...
  function accumulateRewardsV2 (line 638) | func accumulateRewardsV2(statedb *state.StateDB, header *types.Header) *...
  function accumulateRewardsV3 (line 689) | func accumulateRewardsV3(statedb *state.StateDB, header *types.Header) *...
  function accumulateRewardsV4 (line 735) | func accumulateRewardsV4(statedb *state.StateDB, header *types.Header) *...
  function accumulateRewardsV5 (line 765) | func accumulateRewardsV5(statedb *state.StateDB, header *types.Header) *...

FILE: consensus/ethash/consensus_test.go
  type diffTest (line 32) | type diffTest struct
    method UnmarshalJSON (line 40) | func (d *diffTest) UnmarshalJSON(b []byte) (err error) {
  function TestCalcDifficulty (line 61) | func TestCalcDifficulty(t *testing.T) {
  function TestCalcDifficultyV2 (line 89) | func TestCalcDifficultyV2(t *testing.T) {
  function TestCalcDifficultyV3 (line 167) | func TestCalcDifficultyV3(t *testing.T) {
  function print (line 237) | func print(number int64, difficulty int64) {
  function TestCalcDifficultyV4 (line 249) | func TestCalcDifficultyV4(t *testing.T) {
  function TestSIPEncode (line 321) | func TestSIPEncode(t *testing.T) {
  function TestSIPSetting (line 324) | func TestSIPSetting(t *testing.T) {

FILE: consensus/ethash/ethash.go
  function isLittleEndian (line 62) | func isLittleEndian() bool {
  function memoryMap (line 68) | func memoryMap(path string) (*os.File, mmap.MMap, []uint32, error) {
  function memoryMapFile (line 89) | func memoryMapFile(file *os.File, write bool) (mmap.MMap, []uint32, erro...
  function memoryMapAndGenerate (line 110) | func memoryMapAndGenerate(path string, size uint64, generator func(buffe...
  type lru (line 149) | type lru struct
    method get (line 175) | func (lru *lru) get(epoch uint64) (item, future interface{}) {
  function newlru (line 162) | func newlru(what string, maxItems int, new func(epoch uint64) interface{...
  type cache (line 201) | type cache struct
    method generateCDag (line 210) | func (self *cache) generateCDag() {
    method generate (line 222) | func (c *cache) generate(dir string, limit int, test bool) {
    method finalizer (line 277) | func (c *cache) finalizer() {
  function newCache (line 217) | func newCache(epoch uint64) interface{} {
  type dataset (line 286) | type dataset struct
    method generated (line 301) | func (d *dataset) generated() bool {
    method generate (line 306) | func (d *dataset) generate(dir string, limit int, test bool) {
    method finalizer (line 367) | func (d *dataset) finalizer() {
  function newDataset (line 297) | func newDataset(epoch uint64) interface{} {
  function MakeCache (line 376) | func MakeCache(block uint64, dir string) {
  function MakeDataset (line 382) | func MakeDataset(block uint64, dir string) {
  type Mode (line 388) | type Mode
  constant ModeNormal (line 391) | ModeNormal Mode = iota
  constant ModeShared (line 392) | ModeShared
  constant ModeTest (line 393) | ModeTest
  constant ModeFake (line 394) | ModeFake
  constant ModeFullFake (line 395) | ModeFullFake
  type Config (line 399) | type Config struct
  type Ethash (line 411) | type Ethash struct
    method cache (line 512) | func (ethash *Ethash) cache(block uint64) *cache {
    method dataset_async (line 528) | func (ethash *Ethash) dataset_async(block uint64) *dataset {
    method dataset (line 551) | func (ethash *Ethash) dataset(block uint64) *dataset {
    method Threads (line 570) | func (ethash *Ethash) Threads() int {
    method SetThreads (line 582) | func (ethash *Ethash) SetThreads(threads int) {
    method Hashrate (line 601) | func (ethash *Ethash) Hashrate() float64 {
    method StartHashrate (line 605) | func (ethash *Ethash) StartHashrate() {
    method StopHashrate (line 610) | func (ethash *Ethash) StopHashrate() {
    method APIs (line 618) | func (ethash *Ethash) APIs(chain consensus.ChainReader) []rpc.API {
  function New (line 432) | func New(config Config) *Ethash {
  function NewTester (line 454) | func NewTester() *Ethash {
  function NewFaker (line 461) | func NewFaker() *Ethash {
  function NewFakeFailer (line 472) | func NewFakeFailer(fail uint64) *Ethash {
  function NewFakeDelayer (line 484) | func NewFakeDelayer(delay time.Duration) *Ethash {
  function NewFullFaker (line 495) | func NewFullFaker() *Ethash {
  function NewShared (line 505) | func NewShared() *Ethash {
  function SeedHash (line 624) | func SeedHash(block uint64) []byte {

FILE: consensus/ethash/ethash_test.go
  function TestTestMode (line 31) | func TestTestMode(t *testing.T) {
  function TestCacheFileEvict (line 48) | func TestCacheFileEvict(t *testing.T) {
  function verifyTest (line 66) | func verifyTest(wg *sync.WaitGroup, e *Ethash, workerIndex, epochs int) {

FILE: consensus/ethash/progpow.go
  constant progpowCacheBytes (line 13) | progpowCacheBytes = 16 * 1024
  constant progpowCacheWords (line 14) | progpowCacheWords = progpowCacheBytes / 4
  constant progpowLanes (line 15) | progpowLanes      = 16
  constant progpowRegs (line 16) | progpowRegs       = 32
  constant progpowCntCache (line 17) | progpowCntCache   = 12
  constant progpowCntMath (line 18) | progpowCntMath    = 20
  constant progpowDagLoads (line 19) | progpowDagLoads   = 4
  constant progpowCntDag (line 20) | progpowCntDag     = 64
  constant progpowMixBytes (line 21) | progpowMixBytes   = 2 * mixBytes
  constant progpowPeriod (line 22) | progpowPeriod     = 50
  function progpowLight (line 25) | func progpowLight(size uint64, cache []uint32, hash []byte, nonce uint64,
  function generateCDag (line 36) | func generateCDag(cDag, cache []uint32, epoch uint64) {
  function progpowLightWithoutCDag (line 55) | func progpowLightWithoutCDag(
  function progpowFull (line 91) | func progpowFull(dataset []uint32, hash []byte, nonce uint64,
  function rotl32 (line 113) | func rotl32(x uint32, n uint32) uint32 {
  function rotr32 (line 117) | func rotr32(x uint32, n uint32) uint32 {
  function lower32 (line 121) | func lower32(in uint64) uint32 {
  function higher32 (line 125) | func higher32(in uint64) uint32 {
  function keccakF800Round (line 135) | func keccakF800Round(st [25]uint32, r int) [25]uint32 {
  function byteReverse (line 179) | func byteReverse(i uint32) uint32 {
  function keccakF800 (line 194) | func keccakF800(headerHash []byte, nonce uint64, result []uint32) uint64 {
  function keccakF800Full (line 223) | func keccakF800Full(headerHash []byte, nonce uint64, result []uint32) []...
  function fnv1a (line 252) | func fnv1a(h *uint32, d uint32) uint32 {
  type kiss99State (line 257) | type kiss99State struct
  function kiss99 (line 264) | func kiss99(st *kiss99State) uint32 {
  function fillMix (line 276) | func fillMix(seed uint64, laneId uint32) [progpowRegs]uint32 {
  function clz (line 293) | func clz(a uint32) uint32 {
  function popcount (line 302) | func popcount(a uint32) uint32 {
  function merge (line 318) | func merge(a *uint32, b uint32, r uint32) {
  function progpowInit (line 332) | func progpowInit(
  function progpowMath (line 373) | func progpowMath(a uint32, b uint32, r uint32) uint32 {
  type mixRngState (line 405) | type mixRngState struct
    method rng (line 413) | func (self *mixRngState) rng() (ret uint32) {
    method next_dst (line 417) | func (self *mixRngState) next_dst() (ret uint32) {
    method next_src (line 422) | func (self *mixRngState) next_src() (ret uint32) {
  function newMixRngState (line 428) | func newMixRngState(blockNumber uint64) (ret mixRngState) {
  function progpowLoop (line 433) | func progpowLoop(
  function keccak_progpow_64 (line 512) | func keccak_progpow_64(hash []byte, nonce uint64) (seed uint64) {
  function init_mix (line 521) | func init_mix(seed uint64) (mix [progpowLanes][progpowRegs]uint32) {
  function progpow (line 528) | func progpow(

FILE: consensus/ethash/progpow_test.go
  function TestProgpow (line 10) | func TestProgpow(t *testing.T) {
  function TestProgpowFull (line 26) | func TestProgpowFull(t *testing.T) {

FILE: consensus/ethash/sealer.go
  method Seal (line 37) | func (ethash *Ethash) Seal(chain consensus.ChainReader, block *types.Blo...
  method mine (line 99) | func (ethash *Ethash) mine(block *types.Block, id int, seed uint64, abor...

FILE: consensus/ethash_hash/blake2b.c
  type blake2b_constant (line 37) | enum blake2b_constant
  type blake2b_param (line 46) | typedef struct blake2b_param
  type blake2b_state (line 61) | typedef struct blake2b_state
  function blake2b_increment_counter (line 108) | static inline void blake2b_increment_counter(blake2b_state* state, const...
  function blake2b_init (line 147) | static inline void blake2b_init(blake2b_state* state, size_t outlen, con...
  function blake2b_update (line 171) | static inline void blake2b_update(blake2b_state* state, const unsigned c...
  function blake2b_final (line 197) | static inline void blake2b_final(blake2b_state* state, uint8_t* out, siz...
  function blake2b (line 220) | static inline void blake2b(
  function hash_enter (line 238) | static inline void hash_enter(unsigned char* o,const unsigned char* s,un...
  function hash_leave (line 273) | static inline void hash_leave(unsigned char* o,const unsigned char* s,un...

FILE: consensus/ethash_hash/hash_c.go
  function Miner_Hash_0 (line 27) | func Miner_Hash_0(in []byte, num uint64) []byte {
  function Miner_Hash_1 (line 37) | func Miner_Hash_1(in []byte, num uint64) []byte {

FILE: consensus/ethash_hash/hash_c_test.go
  function TestHash (line 11) | func TestHash(t *testing.T) {

FILE: consensus/ethash_hash/xxenc.c
  type u8 (line 24) | typedef unsigned char u8;
  type u32 (line 25) | typedef unsigned int u32;
  type xxenc_ctx (line 27) | struct xxenc_ctx {
  type xxenc_ctx (line 31) | typedef struct xxenc_ctx xxenc_ctx;

FILE: console/bridge.go
  constant FN (line 36) | FN = "Function"
  type bridge (line 41) | type bridge struct
    method NewAccount (line 59) | func (b *bridge) NewAccount(call otto.FunctionCall) (response otto.Val...
    method NewAccountWithMnemonic (line 95) | func (b *bridge) NewAccountWithMnemonic(call otto.FunctionCall) (respo...
    method UnlockAccount (line 135) | func (b *bridge) UnlockAccount(call otto.FunctionCall) (response otto....
    method ExportMnemonic (line 174) | func (b *bridge) ExportMnemonic(call otto.FunctionCall) (response otto...
    method Sign (line 208) | func (b *bridge) Sign(call otto.FunctionCall) (response otto.Value) {
    method SendTransaction (line 250) | func (b *bridge) SendTransaction(call otto.FunctionCall) (response ott...
    method CreatePkg (line 287) | func (b *bridge) CreatePkg(call otto.FunctionCall) (response otto.Valu...
    method TransferPkg (line 324) | func (b *bridge) TransferPkg(call otto.FunctionCall) (response otto.Va...
    method ClosePkg (line 361) | func (b *bridge) ClosePkg(call otto.FunctionCall) (response otto.Value) {
    method Merge (line 398) | func (b *bridge) Merge(call otto.FunctionCall) (response otto.Value) {
    method GenTxWithSign (line 439) | func (b *bridge) GenTxWithSign(call otto.FunctionCall) (response otto....
    method GetRecords (line 476) | func (b *bridge) GetRecords(call otto.FunctionCall) (response otto.Val...
    method Sleep (line 522) | func (b *bridge) Sleep(call otto.FunctionCall) (response otto.Value) {
    method SleepBlocks (line 533) | func (b *bridge) SleepBlocks(call otto.FunctionCall) (response otto.Va...
    method Send (line 590) | func (b *bridge) Send(call otto.FunctionCall) (response otto.Value) {
  function newBridge (line 48) | func newBridge(client *rpc.Client, prompter UserPrompter, printer io.Wri...
  function prettyTime (line 243) | func prettyTime(t time.Duration) string {
  type jsonrpcCall (line 583) | type jsonrpcCall struct
  function setError (line 656) | func setError(resp *otto.Object, code int, msg string) {
  function throwJSException (line 662) | func throwJSException(msg interface{}) otto.Value {
  function progressBar (line 670) | func progressBar(bar *uiprogress.Bar, finish chan struct{}) {

FILE: console/console.go
  constant HistoryFile (line 46) | HistoryFile = "history"
  constant DefaultPrompt (line 49) | DefaultPrompt = "> "
  type Config (line 53) | type Config struct
  type Console (line 66) | type Console struct
    method init (line 109) | func (c *Console) init(preload []string) error {
    method clearHistory (line 279) | func (c *Console) clearHistory() {
    method consoleOutput (line 291) | func (c *Console) consoleOutput(call otto.FunctionCall) otto.Value {
    method AutoCompleteInput (line 302) | func (c *Console) AutoCompleteInput(line string, pos int) (string, []s...
    method Welcome (line 329) | func (c *Console) Welcome() {
    method Evaluate (line 357) | func (c *Console) Evaluate(statement string) error {
    method Interactive (line 368) | func (c *Console) Interactive() {
    method Execute (line 486) | func (c *Console) Execute(path string) error {
    method Stop (line 491) | func (c *Console) Stop(graceful bool) error {
  function New (line 78) | func New(config Config) (*Console, error) {
  function countIndents (line 444) | func countIndents(input string) int {

FILE: console/console_test.go
  constant testInstance (line 38) | testInstance = "console-tester"
  constant testAddress (line 39) | testAddress  = "4yn9wDedx4B5k9RYmwavvmJ49UKn6VRoa8vubB5xkzanr74FPtaUM9Xr...
  function init (line 42) | func init() {
  type hookedPrompter (line 47) | type hookedPrompter struct
    method PromptInput (line 51) | func (p *hookedPrompter) PromptInput(prompt string) (string, error) {
    method PromptPassword (line 67) | func (p *hookedPrompter) PromptPassword(prompt string) (string, error) {
    method PromptConfirm (line 70) | func (p *hookedPrompter) PromptConfirm(prompt string) (bool, error) {
    method SetHistory (line 73) | func (p *hookedPrompter) SetHistory(history []string)              {}
    method AppendHistory (line 74) | func (p *hookedPrompter) AppendHistory(command string)             {}
    method ClearHistory (line 75) | func (p *hookedPrompter) ClearHistory()                            {}
    method SetWordCompleter (line 76) | func (p *hookedPrompter) SetWordCompleter(completer WordCompleter) {}
  type tester (line 79) | type tester struct
    method Close (line 152) | func (env *tester) Close(t *testing.T) {
  function newTester (line 90) | func newTester(t *testing.T, confOverride func(*sero.Config)) *tester {
  function TestWelcome (line 165) | func TestWelcome(t *testing.T) {
  function TestEvaluate (line 190) | func TestEvaluate(t *testing.T) {
  function TestInteractive (line 201) | func TestInteractive(t *testing.T) {
  function TestPreload (line 232) | func TestPreload(t *testing.T) {
  function TestExecute (line 243) | func TestExecute(t *testing.T) {
  function TestPrettyPrint (line 257) | func TestPrettyPrint(t *testing.T) {
  function TestPrettyError (line 288) | func TestPrettyError(t *testing.T) {
  function TestIndenting (line 300) | func TestIndenting(t *testing.T) {

FILE: console/prompter.go
  type UserPrompter (line 32) | type UserPrompter interface
  type WordCompleter (line 67) | type WordCompleter
  type terminalPrompter (line 72) | type terminalPrompter struct
    method PromptInput (line 107) | func (p *terminalPrompter) PromptInput(prompt string) (string, error) {
    method PromptPassword (line 125) | func (p *terminalPrompter) PromptPassword(prompt string) (passwd strin...
    method PromptConfirm (line 144) | func (p *terminalPrompter) PromptConfirm(prompt string) (bool, error) {
    method SetHistory (line 154) | func (p *terminalPrompter) SetHistory(history []string) {
    method AppendHistory (line 159) | func (p *terminalPrompter) AppendHistory(command string) {
    method ClearHistory (line 164) | func (p *terminalPrompter) ClearHistory() {
    method SetWordCompleter (line 170) | func (p *terminalPrompter) SetWordCompleter(completer WordCompleter) {
  function newTerminalPrompter (line 82) | func newTerminalPrompter() *terminalPrompter {

FILE: core/asm/asm.go
  type instructionIterator (line 28) | type instructionIterator struct
    method Next (line 45) | func (it *instructionIterator) Next() bool {
    method Error (line 83) | func (it *instructionIterator) Error() error {
    method PC (line 88) | func (it *instructionIterator) PC() uint64 {
    method Op (line 93) | func (it *instructionIterator) Op() vm.OpCode {
    method Arg (line 98) | func (it *instructionIterator) Arg() []byte {
  function NewInstructionIterator (line 38) | func NewInstructionIterator(code []byte) *instructionIterator {
  function PrintDisassembled (line 103) | func PrintDisassembled(code string) error {
  function Disassemble (line 121) | func Disassemble(script []byte) ([]string, error) {

FILE: core/asm/compiler.go
  type Compiler (line 31) | type Compiler struct
    method Feed (line 59) | func (c *Compiler) Feed(ch <-chan token) {
    method Compile (line 92) | func (c *Compiler) Compile() (string, []error) {
    method next (line 117) | func (c *Compiler) next() token {
    method compileLine (line 125) | func (c *Compiler) compileLine() error {
    method compileNumber (line 155) | func (c *Compiler) compileNumber(element token) (int, error) {
    method compileElement (line 167) | func (c *Compiler) compileElement(element token) error {
    method compileLabel (line 224) | func (c *Compiler) compileLabel() {
    method pushBin (line 229) | func (c *Compiler) pushBin(v interface{}) {
  function NewCompiler (line 43) | func NewCompiler(debug bool) *Compiler {
  function isPush (line 238) | func isPush(op string) bool {
  function isJump (line 243) | func isJump(op string) bool {
  function toBinary (line 248) | func toBinary(text string) vm.OpCode {
  type compileError (line 252) | type compileError struct
    method Error (line 259) | func (err compileError) Error() string {
  function compileErr (line 263) | func compileErr(c token, got, want string) error {

FILE: core/asm/lexer.go
  type stateFn (line 30) | type stateFn
  type token (line 35) | type token struct
  type tokenType (line 43) | type tokenType
    method String (line 62) | func (it tokenType) String() string {
  constant eof (line 46) | eof              tokenType = iota
  constant lineStart (line 47) | lineStart
  constant lineEnd (line 48) | lineEnd
  constant invalidStatement (line 49) | invalidStatement
  constant element (line 50) | element
  constant label (line 51) | label
  constant labelDef (line 52) | labelDef
  constant number (line 53) | number
  constant stringValue (line 54) | stringValue
  constant Numbers (line 56) | Numbers            = "1234567890"
  constant HexadecimalNumbers (line 57) | HexadecimalNumbers = Numbers + "aAbBcCdDeEfF"
  constant Alpha (line 58) | Alpha              = "abcdefghijklmnopqrstuwvxyzABCDEFGHIJKLMNOPQRSTUWVXYZ"
  type lexer (line 84) | type lexer struct
    method next (line 119) | func (l *lexer) next() (rune rune) {
    method backup (line 130) | func (l *lexer) backup() {
    method peek (line 135) | func (l *lexer) peek() rune {
    method ignore (line 142) | func (l *lexer) ignore() {
    method accept (line 147) | func (l *lexer) accept(valid string) bool {
    method acceptRun (line 159) | func (l *lexer) acceptRun(valid string) {
    method acceptRunUntil (line 167) | func (l *lexer) acceptRunUntil(until rune) bool {
    method blob (line 179) | func (l *lexer) blob() string {
    method emit (line 184) | func (l *lexer) emit(t tokenType) {
  function Lex (line 98) | func Lex(name string, source []byte, debug bool) <-chan token {
  function lexLine (line 196) | func lexLine(l *lexer) stateFn {
  function lexComment (line 226) | func lexComment(l *lexer) stateFn {
  function lexLabel (line 236) | func lexLabel(l *lexer) stateFn {
  function lexInsideString (line 247) | func lexInsideString(l *lexer) stateFn {
  function lexNumber (line 255) | func lexNumber(l *lexer) stateFn {
  function lexElement (line 267) | func lexElement(l *lexer) stateFn {
  function isLetter (line 281) | func isLetter(t rune) bool {
  function isSpace (line 285) | func isSpace(t rune) bool {
  function isNumber (line 289) | func isNumber(t rune) bool {

FILE: core/block_validator.go
  type BlockValidator (line 32) | type BlockValidator struct
    method ValidateBody (line 50) | func (v *BlockValidator) ValidateBody(block *types.Block) error {
    method ValidateState (line 74) | func (v *BlockValidator) ValidateState(block, parent *types.Block, sta...
  function NewBlockValidator (line 39) | func NewBlockValidator(config *params.ChainConfig, blockchain *BlockChai...
  function CalcGasLimit (line 100) | func CalcGasLimit(parent *types.Block) uint64 {

FILE: core/block_validator_test.go
  function TestHeaderVerification (line 34) | func TestHeaderVerification(t *testing.T) {
  function TestHeaderConcurrentVerification2 (line 83) | func TestHeaderConcurrentVerification2(t *testing.T)  { testHeaderConcur...
  function TestHeaderConcurrentVerification8 (line 84) | func TestHeaderConcurrentVerification8(t *testing.T)  { testHeaderConcur...
  function TestHeaderConcurrentVerification32 (line 85) | func TestHeaderConcurrentVerification32(t *testing.T) { testHeaderConcur...
  function testHeaderConcurrentVerification (line 87) | func testHeaderConcurrentVerification(t *testing.T, threads int) {
  function TestHeaderConcurrentAbortion2 (line 155) | func TestHeaderConcurrentAbortion2(t *testing.T)  { testHeaderConcurrent...
  function TestHeaderConcurrentAbortion8 (line 156) | func TestHeaderConcurrentAbortion8(t *testing.T)  { testHeaderConcurrent...
  function TestHeaderConcurrentAbortion32 (line 157) | func TestHeaderConcurrentAbortion32(t *testing.T) { testHeaderConcurrent...
  function testHeaderConcurrentAbortion (line 159) | func testHeaderConcurrentAbortion(t *testing.T, threads int) {

FILE: core/blockchain.go
  constant bodyCacheLimit (line 75) | bodyCacheLimit      = 256
  constant blockCacheLimit (line 76) | blockCacheLimit     = 256
  constant maxFutureBlocks (line 77) | maxFutureBlocks     = 256
  constant maxTimeFutureBlocks (line 78) | maxTimeFutureBlocks = 30
  constant badBlockLimit (line 79) | badBlockLimit       = 10
  constant triesInMemory (line 80) | triesInMemory       = 128
  constant BlockChainVersion (line 83) | BlockChainVersion = 3
  type CacheConfig (line 88) | type CacheConfig struct
  type Downloader (line 94) | type Downloader interface
  type BlockChain (line 113) | type BlockChain struct
    method getProcInterrupt (line 213) | func (bc *BlockChain) getProcInterrupt() bool {
    method GetDB (line 308) | func (bc *BlockChain) GetDB() serodb.Database {
    method loadLastState (line 314) | func (bc *BlockChain) loadLastState() error {
    method SetHead (line 388) | func (bc *BlockChain) SetHead(head uint64, delFn DeleteCallback) error {
    method FastSyncCommitHead (line 437) | func (bc *BlockChain) FastSyncCommitHead(hash common.Hash) error {
    method GasLimit (line 456) | func (bc *BlockChain) GasLimit() uint64 {
    method CurrentBlock (line 462) | func (bc *BlockChain) CurrentBlock() *types.Block {
    method CurrentFastBlock (line 468) | func (bc *BlockChain) CurrentFastBlock() *types.Block {
    method SetProcessor (line 473) | func (bc *BlockChain) SetProcessor(processor Processor) {
    method SetValidator (line 480) | func (bc *BlockChain) SetValidator(validator Validator) {
    method Validator (line 487) | func (bc *BlockChain) Validator() Validator {
    method Processor (line 494) | func (bc *BlockChain) Processor() Processor {
    method State (line 501) | func (bc *BlockChain) State() (*state.StateDB, error) {
    method StateAt (line 507) | func (bc *BlockChain) StateAt(header *types.Header) (*state.StateDB, e...
    method Reset (line 512) | func (bc *BlockChain) Reset() error {
    method ResetWithGenesisBlock (line 518) | func (bc *BlockChain) ResetWithGenesisBlock(genesis *types.Block) error {
    method repair (line 549) | func (bc *BlockChain) repair(head **types.Block) error {
    method Export (line 562) | func (bc *BlockChain) Export(w io.Writer) error {
    method ExportN (line 567) | func (bc *BlockChain) ExportN(w io.Writer, first uint64, last uint64) ...
    method insert (line 600) | func (bc *BlockChain) insert(block *types.Block) {
    method Genesis (line 620) | func (bc *BlockChain) Genesis() *types.Block {
    method GetBody (line 626) | func (bc *BlockChain) GetBody(hash common.Hash) *types.Body {
    method GetBodyRLP (line 647) | func (bc *BlockChain) GetBodyRLP(hash common.Hash) rlp.RawValue {
    method HasBlock (line 666) | func (bc *BlockChain) HasBlock(hash common.Hash, number uint64) bool {
    method HasState (line 674) | func (bc *BlockChain) HasState(hash common.Hash) bool {
    method HasBlockAndState (line 681) | func (bc *BlockChain) HasBlockAndState(hash common.Hash, number uint64...
    method GetBlock (line 692) | func (bc *BlockChain) GetBlock(hash common.Hash, number uint64) *types...
    method GetBlockByHash (line 707) | func (bc *BlockChain) GetBlockByHash(hash common.Hash) *types.Block {
    method GetBlockByNumber (line 717) | func (bc *BlockChain) GetBlockByNumber(number uint64) *types.Block {
    method GetReceiptsByHash (line 726) | func (bc *BlockChain) GetReceiptsByHash(hash common.Hash) types.Receip...
    method GetBlocksFromHash (line 736) | func (bc *BlockChain) GetBlocksFromHash(hash common.Hash, n int) (bloc...
    method TrieNode (line 755) | func (bc *BlockChain) TrieNode(hash common.Hash) ([]byte, error) {
    method Stop (line 761) | func (bc *BlockChain) Stop() {
    method procFutureBlocks (line 802) | func (bc *BlockChain) procFutureBlocks() {
    method Rollback (line 830) | func (bc *BlockChain) Rollback(chain []common.Hash) {
    method InsertReceiptChain (line 888) | func (bc *BlockChain) InsertReceiptChain(blockChain types.Blocks, rece...
    method WriteBlockWithoutState (line 976) | func (bc *BlockChain) WriteBlockWithoutState(block *types.Block, td *b...
    method WriteBlockWithState (line 999) | func (bc *BlockChain) WriteBlockWithState(block *types.Block, receipts...
    method InsertChain (line 1173) | func (bc *BlockChain) InsertChain(chain types.Blocks) (int, error) {
    method NewHeaderChecker (line 1181) | func (bc *BlockChain) NewHeaderChecker(chain types.Blocks) (chan<- str...
    method insertChain (line 1196) | func (bc *BlockChain) insertChain(chain types.Blocks, local bool) (int...
    method reorg (line 1489) | func (bc *BlockChain) reorg(oldBlock, newBlock *types.Block) error {
    method PostChainEvents (line 1604) | func (bc *BlockChain) PostChainEvents(events []interface{}, logs []*ty...
    method update (line 1623) | func (bc *BlockChain) update() {
    method BadBlocks (line 1637) | func (bc *BlockChain) BadBlocks() []*types.Block {
    method addBadBlock (line 1649) | func (bc *BlockChain) addBadBlock(block *types.Block) {
    method reportBlock (line 1654) | func (bc *BlockChain) reportBlock(block *types.Block, receipts types.R...
    method InsertHeaderChain (line 1682) | func (bc *BlockChain) InsertHeaderChain(chain []*types.Header, checkFr...
    method writeHeader (line 1715) | func (bc *BlockChain) writeHeader(header *types.Header) error {
    method CurrentHeader (line 1728) | func (bc *BlockChain) CurrentHeader() *types.Header {
    method GetTd (line 1734) | func (bc *BlockChain) GetTd(hash common.Hash, number uint64) *big.Int {
    method GetTdByHash (line 1740) | func (bc *BlockChain) GetTdByHash(hash common.Hash) *big.Int {
    method GetHeader (line 1746) | func (bc *BlockChain) GetHeader(hash common.Hash, number uint64) *type...
    method GetHeaderByHash (line 1752) | func (bc *BlockChain) GetHeaderByHash(hash common.Hash) *types.Header {
    method HasHeader (line 1758) | func (bc *BlockChain) HasHeader(hash common.Hash, number uint64) bool {
    method GetBlockHashesFromHash (line 1764) | func (bc *BlockChain) GetBlockHashesFromHash(hash common.Hash, max uin...
    method GetAncestor (line 1773) | func (bc *BlockChain) GetAncestor(hash common.Hash, number, ancestor u...
    method GetHeaderByNumber (line 1782) | func (bc *BlockChain) GetHeaderByNumber(number uint64) *types.Header {
    method Config (line 1787) | func (bc *BlockChain) Config() *params.ChainConfig { return bc.chainCo...
    method Engine (line 1790) | func (bc *BlockChain) Engine() consensus.Engine { return bc.engine }
    method SubscribeRemovedLogsEvent (line 1793) | func (bc *BlockChain) SubscribeRemovedLogsEvent(ch chan<- RemovedLogsE...
    method SubscribeChainEvent (line 1798) | func (bc *BlockChain) SubscribeChainEvent(ch chan<- ChainEvent) event....
    method SubscribeChainHeadEvent (line 1803) | func (bc *BlockChain) SubscribeChainHeadEvent(ch chan<- ChainHeadEvent...
    method SubscribeChainSideEvent (line 1808) | func (bc *BlockChain) SubscribeChainSideEvent(ch chan<- ChainSideEvent...
    method SubscribeLogsEvent (line 1813) | func (bc *BlockChain) SubscribeLogsEvent(ch chan<- []*types.Log) event...
  function NewBlockChain (line 163) | func NewBlockChain(db serodb.Database, cacheConfig *CacheConfig, chainCo...
  type State1BlockChain (line 217) | type State1BlockChain struct
    method GetBlockByNumber (line 221) | func (self *State1BlockChain) GetBlockByNumber(num uint64) *types.Block {
    method GetHeaderByNumber (line 225) | func (self *State1BlockChain) GetHeaderByNumber(num uint64) *types.Hea...
    method GetDB (line 229) | func (self *State1BlockChain) GetDB() serodb.Database {
    method GetCurrenHeader (line 233) | func (self *State1BlockChain) GetCurrenHeader() *types.Header {
    method GetHeader (line 237) | func (self *State1BlockChain) GetHeader(hash *common.Hash) *types.Head...
    method IsContract (line 241) | func (self *State1BlockChain) IsContract(address common.Address) (ret ...
    method IsValid (line 261) | func (self *State1BlockChain) IsValid() bool {
    method GetSeroGasLimit (line 272) | func (self *State1BlockChain) GetSeroGasLimit(to *common.Address, tfee...
    method CurrentState (line 281) | func (self *State1BlockChain) CurrentState(hash *common.Hash) *zstate....
    method GetTks (line 291) | func (self *State1BlockChain) GetTks() []c_type.Tk {
    method GetTkAt (line 300) | func (self *State1BlockChain) GetTkAt(tk *c_type.Tk) uint64 {
  type WriteStatus (line 820) | type WriteStatus
  constant NonStatTy (line 823) | NonStatTy WriteStatus = iota
  constant CanonStatTy (line 824) | CanonStatTy
  constant SideStatTy (line 825) | SideStatTy
  function SetReceiptsData (line 855) | func SetReceiptsData(config *params.ChainConfig, block *types.Block, rec...
  function test (line 1179) | func test(i interface{}) {}
  type insertStats (line 1431) | type insertStats struct
    method report (line 1444) | func (st *insertStats) report(chain []*types.Block, index int, cache c...
  constant statsReportLimit (line 1440) | statsReportLimit = 8 * time.Second
  function countTransactions (line 1479) | func countTransactions(chain []*types.Block) (c int) {

FILE: core/bloombits/generator.go
  type Generator (line 37) | type Generator struct
    method AddBloom (line 58) | func (b *Generator) AddBloom(index uint, bloom types.Bloom) error {
    method Bitset (line 85) | func (b *Generator) Bitset(idx uint) ([]byte, error) {
  function NewGenerator (line 45) | func NewGenerator(sections uint) (*Generator, error) {

FILE: core/bloombits/generator_test.go
  function TestGenerator (line 29) | func TestGenerator(t *testing.T) {

FILE: core/bloombits/matcher.go
  type bloomIndexes (line 35) | type bloomIndexes
  function calcBloomIndexes (line 38) | func calcBloomIndexes(b []byte) bloomIndexes {
  type partialMatches (line 52) | type partialMatches struct
  type Retrieval (line 63) | type Retrieval struct
  type Matcher (line 75) | type Matcher struct
    method addScheduler (line 137) | func (m *Matcher) addScheduler(idx uint) {
    method Start (line 147) | func (m *Matcher) Start(ctx context.Context, begin, end uint64, result...
    method run (line 225) | func (m *Matcher) run(begin, end uint64, buffer int, session *MatcherS...
    method subMatch (line 260) | func (m *Matcher) subMatch(source chan *partialMatches, dist chan *req...
    method distributor (line 382) | func (m *Matcher) distributor(dist chan *request, session *MatcherSess...
  function NewMatcher (line 92) | func NewMatcher(sectionSize uint64, filters [][][]byte) *Matcher {
  type MatcherSession (line 512) | type MatcherSession struct
    method Close (line 528) | func (s *MatcherSession) Close() {
    method Error (line 538) | func (s *MatcherSession) Error() error {
    method AllocateRetrieval (line 548) | func (s *MatcherSession) AllocateRetrieval() (uint, bool) {
    method PendingSections (line 562) | func (s *MatcherSession) PendingSections(bit uint) int {
    method AllocateSections (line 576) | func (s *MatcherSession) AllocateSections(bit uint, count int) []uint64 {
    method DeliverSections (line 594) | func (s *MatcherSession) DeliverSections(bit uint, sections []uint64, ...
    method Multiplex (line 608) | func (s *MatcherSession) Multiplex(batch int, wait time.Duration, mux ...

FILE: core/bloombits/scheduler.go
  type request (line 25) | type request struct
  type response (line 31) | type response struct
  type scheduler (line 41) | type scheduler struct
    method run (line 59) | func (s *scheduler) run(sections chan uint64, dist chan *request, done...
    method reset (line 73) | func (s *scheduler) reset() {
    method scheduleRequests (line 87) | func (s *scheduler) scheduleRequests(reqs chan uint64, dist chan *requ...
    method scheduleDeliveries (line 134) | func (s *scheduler) scheduleDeliveries(pend chan uint64, done chan []b...
    method deliver (line 171) | func (s *scheduler) deliver(sections []uint64, data [][]byte) {
  function newScheduler (line 49) | func newScheduler(idx uint) *scheduler {

FILE: core/bloombits/scheduler_test.go
  function TestSchedulerSingleClientSingleFetcher (line 32) | func TestSchedulerSingleClientSingleFetcher(t *testing.T) { testSchedule...
  function TestSchedulerSingleClientMultiFetcher (line 33) | func TestSchedulerSingleClientMultiFetcher(t *testing.T)  { testSchedule...
  function TestSchedulerMultiClientSingleFetcher (line 34) | func TestSchedulerMultiClientSingleFetcher(t *testing.T)  { testSchedule...
  function TestSchedulerMultiClientMultiFetcher (line 35) | func TestSchedulerMultiClientMultiFetcher(t *testing.T)   { testSchedule...
  function testScheduler (line 37) | func testScheduler(t *testing.T, clients int, fetchers int, requests int) {

FILE: core/chain_indexer.go
  type ChainIndexerBackend (line 37) | type ChainIndexerBackend interface
  type ChainIndexerChain (line 51) | type ChainIndexerChain interface
  type ChainIndexer (line 68) | type ChainIndexer struct
    method AddKnownSectionHead (line 115) | func (c *ChainIndexer) AddKnownSectionHead(section uint64, shead commo...
    method Start (line 129) | func (c *ChainIndexer) Start(chain ChainIndexerChain) {
    method Close (line 138) | func (c *ChainIndexer) Close() error {
    method eventLoop (line 176) | func (c *ChainIndexer) eventLoop(currentHeader *types.Header, events c...
    method newHead (line 222) | func (c *ChainIndexer) newHead(head uint64, reorg bool) {
    method updateLoop (line 265) | func (c *ChainIndexer) updateLoop() {
    method processSection (line 342) | func (c *ChainIndexer) processSection(section uint64, lastHead common....
    method Sections (line 376) | func (c *ChainIndexer) Sections() (uint64, uint64, common.Hash) {
    method AddChildIndexer (line 384) | func (c *ChainIndexer) AddChildIndexer(indexer *ChainIndexer) {
    method loadValidSections (line 398) | func (c *ChainIndexer) loadValidSections() {
    method setValidSections (line 406) | func (c *ChainIndexer) setValidSections(sections uint64) {
    method SectionHead (line 422) | func (c *ChainIndexer) SectionHead(section uint64) common.Hash {
    method setSectionHead (line 435) | func (c *ChainIndexer) setSectionHead(section uint64, hash common.Hash) {
    method removeSectionHead (line 444) | func (c *ChainIndexer) removeSectionHead(section uint64) {
  function NewChainIndexer (line 94) | func NewChainIndexer(chainDb, indexDb serodb.Database, backend ChainInde...

FILE: core/chain_indexer_test.go
  function TestChainIndexerSingle (line 33) | func TestChainIndexerSingle(t *testing.T) {
  function TestChainIndexerWithChildren (line 41) | func TestChainIndexerWithChildren(t *testing.T) {
  function testChainIndexer (line 50) | func testChainIndexer(t *testing.T, count int) {
  type testChainIndexBackend (line 137) | type testChainIndexBackend struct
    method assertSections (line 145) | func (b *testChainIndexBackend) assertSections() {
    method assertBlocks (line 161) | func (b *testChainIndexBackend) assertBlocks(headNum, failNum uint64) ...
    method reorg (line 205) | func (b *testChainIndexBackend) reorg(headNum uint64) uint64 {
    method Reset (line 213) | func (b *testChainIndexBackend) Reset(section uint64, prevHead common....
    method Process (line 219) | func (b *testChainIndexBackend) Process(header *types.Header) {
    method Commit (line 232) | func (b *testChainIndexBackend) Commit() error {

FILE: core/chain_makers.go
  type BlockGen (line 34) | type BlockGen struct
    method SetCoinbase (line 52) | func (b *BlockGen) SetCoinbase(addr common.Address) {
    method SetExtra (line 64) | func (b *BlockGen) SetExtra(data []byte) {
    method AddTx (line 76) | func (b *BlockGen) AddTx(tx *types.Transaction) {
    method AddTxWithChain (line 88) | func (b *BlockGen) AddTxWithChain(bc *BlockChain, tx *types.Transactio...
    method Number (line 102) | func (b *BlockGen) Number() *big.Int {
    method AddUncheckedReceipt (line 111) | func (b *BlockGen) AddUncheckedReceipt(receipt *types.Receipt) {
    method PrevBlock (line 118) | func (b *BlockGen) PrevBlock(index int) *types.Block {
    method OffsetTime (line 131) | func (b *BlockGen) OffsetTime(seconds int64) {
  function GenerateChain (line 151) | func GenerateChain(config *params.ChainConfig, parent *types.Block, engi...
  function makeHeader (line 200) | func makeHeader(chain consensus.ChainReader, parent *types.Block, state ...

FILE: core/events.go
  type NewTxsEvent (line 25) | type NewTxsEvent struct
  type PendingLogsEvent (line 28) | type PendingLogsEvent struct
  type PendingStateEvent (line 33) | type PendingStateEvent struct
  type NewMinedBlockEvent (line 36) | type NewMinedBlockEvent struct
  type RemovedLogsEvent (line 39) | type RemovedLogsEvent struct
  type ChainEvent (line 41) | type ChainEvent struct
  type ChainSideEvent (line 47) | type ChainSideEvent struct
  type ChainHeadEvent (line 51) | type ChainHeadEvent struct
  type NewLotteryEvent (line 53) | type NewLotteryEvent struct
  type NewVoteEvent (line 57) | type NewVoteEvent struct

FILE: core/evm.go
  type ChainContext (line 33) | type ChainContext interface
  function NewEVMContext (line 42) | func NewEVMContext(msg Message, header *types.Header, chain ChainContext...
  function GetHashFn (line 66) | func GetHashFn(ref *types.Header, chain ChainContext) func(n uint64) com...
  function CanTransfer (line 93) | func CanTransfer(db vm.StateDB, addr common.Address, asset *assets.Asset...
  function Transfer (line 110) | func Transfer(db vm.StateDB, sender, recipient common.Address, asset *as...

FILE: core/gaspool.go
  type GasPool (line 26) | type GasPool
    method AddGas (line 29) | func (gp *GasPool) AddGas(amount uint64) *GasPool {
    method SubGas (line 39) | func (gp *GasPool) SubGas(amount uint64) error {
    method Gas (line 48) | func (gp *GasPool) Gas() uint64 {
    method String (line 52) | func (gp *GasPool) String() string {

FILE: core/gen_genesis.go
  method MarshalJSON (line 18) | func (g Genesis) MarshalJSON() ([]byte, error) {
  method UnmarshalJSON (line 54) | func (g *Genesis) UnmarshalJSON(input []byte) error {

FILE: core/gen_genesis_account.go
  method MarshalJSON (line 17) | func (g GenesisAccount) MarshalJSON() ([]byte, error) {
  method UnmarshalJSON (line 37) | func (g *GenesisAccount) UnmarshalJSON(input []byte) error {

FILE: core/genesis.go
  type Genesis (line 50) | type Genesis struct
    method configOrDefault (line 210) | func (g *Genesis) configOrDefault(ghash common.Hash) *params.ChainConf...
    method ToBlock (line 225) | func (g *Genesis) ToBlock(db serodb.Database) *types.Block {
    method Commit (line 296) | func (g *Genesis) Commit(db serodb.Database) (*types.Block, error) {
    method MustCommit (line 318) | func (g *Genesis) MustCommit(db serodb.Database) *types.Block {
  type GenesisAlloc (line 69) | type GenesisAlloc
    method UnmarshalJSON (line 71) | func (ga *GenesisAlloc) UnmarshalJSON(data []byte) error {
  type GenesisAccount (line 84) | type GenesisAccount struct
  type genesisSpecMarshaling (line 92) | type genesisSpecMarshaling struct
  type genesisAccountMarshaling (line 103) | type genesisAccountMarshaling struct
  type storageJSON (line 113) | type storageJSON
    method UnmarshalText (line 115) | func (h *storageJSON) UnmarshalText(text []byte) error {
    method MarshalText (line 128) | func (h storageJSON) MarshalText() ([]byte, error) {
  type GenesisMismatchError (line 134) | type GenesisMismatchError struct
    method Error (line 138) | func (e *GenesisMismatchError) Error() string {
  function SetupGenesisBlock (line 155) | func SetupGenesisBlock(db serodb.Database, genesis *Genesis) (*params.Ch...
  function DefaultGenesisBlock (line 327) | func DefaultGenesisBlock() *Genesis {
  function DefaultAlphanetGenesisBlock (line 342) | func DefaultAlphanetGenesisBlock() *Genesis {
  function DeveloperGenesisBlock (line 354) | func DeveloperGenesisBlock() *Genesis {
  function decodePrealloc (line 366) | func decodePrealloc(data string) GenesisAlloc {
  type Storage (line 378) | type Storage struct
  type AllocItem (line 383) | type AllocItem struct
  function decodePreAlloc (line 390) | func decodePreAlloc(data string) GenesisAlloc {

FILE: core/headerchain.go
  constant headerCacheLimit (line 41) | headerCacheLimit = 512
  constant tdCacheLimit (line 42) | tdCacheLimit     = 1024
  constant numberCacheLimit (line 43) | numberCacheLimit = 2048
  type HeaderChain (line 51) | type HeaderChain struct
    method GetBlockNumber (line 114) | func (hc *HeaderChain) GetBlockNumber(hash common.Hash) *uint64 {
    method WriteHeader (line 135) | func (hc *HeaderChain) WriteHeader(header *types.Header) (status Write...
    method ValidateHeaderChain (line 208) | func (hc *HeaderChain) ValidateHeaderChain(chain []*types.Header, chec...
    method InsertHeaderChain (line 259) | func (hc *HeaderChain) InsertHeaderChain(chain []*types.Header, writeH...
    method GetBlockHashesFromHash (line 289) | func (hc *HeaderChain) GetBlockHashesFromHash(hash common.Hash, max ui...
    method GetAncestor (line 315) | func (hc *HeaderChain) GetAncestor(hash common.Hash, number, ancestor ...
    method GetTd (line 349) | func (hc *HeaderChain) GetTd(hash common.Hash, number uint64) *big.Int {
    method GetTdByHash (line 365) | func (hc *HeaderChain) GetTdByHash(hash common.Hash) *big.Int {
    method WriteTd (line 375) | func (hc *HeaderChain) WriteTd(hash common.Hash, number uint64, td *bi...
    method GetHeader (line 383) | func (hc *HeaderChain) GetHeader(hash common.Hash, number uint64) *typ...
    method GetHeaderByHash (line 399) | func (hc *HeaderChain) GetHeaderByHash(hash common.Hash) *types.Header {
    method HasHeader (line 408) | func (hc *HeaderChain) HasHeader(hash common.Hash, number uint64) bool {
    method GetHeaderByNumber (line 417) | func (hc *HeaderChain) GetHeaderByNumber(number uint64) *types.Header {
    method CurrentHeader (line 427) | func (hc *HeaderChain) CurrentHeader() *types.Header {
    method SetCurrentHeader (line 432) | func (hc *HeaderChain) SetCurrentHeader(head *types.Header) {
    method SetHead (line 445) | func (hc *HeaderChain) SetHead(head uint64, delFn DeleteCallback) {
    method SetGenesis (line 482) | func (hc *HeaderChain) SetGenesis(head *types.Header) {
    method Config (line 487) | func (hc *HeaderChain) Config() *params.ChainConfig { return hc.config }
    method Engine (line 490) | func (hc *HeaderChain) Engine() consensus.Engine { return hc.engine }
    method GetBlock (line 494) | func (hc *HeaderChain) GetBlock(hash common.Hash, number uint64) *type...
  function NewHeaderChain (line 74) | func NewHeaderChain(chainDb serodb.Database, config *params.ChainConfig,...
  type WhCallback (line 206) | type WhCallback
  type DeleteCallback (line 441) | type DeleteCallback

FILE: core/mkalloc.go
  type allocItem (line 41) | type allocItem struct
  type allocList (line 43) | type allocList
    method Len (line 45) | func (a allocList) Len() int           { return len(a) }
    method Less (line 46) | func (a allocList) Less(i, j int) bool { return a[i].Addr.Cmp(a[j].Add...
    method Swap (line 47) | func (a allocList) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
  function makelist (line 49) | func makelist(g *core.Genesis) allocList {
  function makealloc (line 61) | func makealloc(g *core.Genesis) string {
  function main (line 70) | func main() {

FILE: core/rawdb/accessors_chain.go
  function ReadCanonicalHash (line 31) | func ReadCanonicalHash(db DatabaseReader, number uint64) common.Hash {
  function WriteCanonicalHash (line 40) | func WriteCanonicalHash(db DatabaseWriter, hash common.Hash, number uint...
  function DeleteCanonicalHash (line 47) | func DeleteCanonicalHash(db DatabaseDeleter, number uint64) {
  function ReadHeaderNumber (line 54) | func ReadHeaderNumber(db DatabaseReader, hash common.Hash) *uint64 {
  function ReadHeadHeaderHash (line 64) | func ReadHeadHeaderHash(db DatabaseReader) common.Hash {
  function WriteHeadHeaderHash (line 73) | func WriteHeadHeaderHash(db DatabaseWriter, hash common.Hash) {
  function ReadHeadBlockHash (line 80) | func ReadHeadBlockHash(db DatabaseReader) common.Hash {
  function WriteHeadBlockHash (line 89) | func WriteHeadBlockHash(db DatabaseWriter, hash common.Hash) {
  function ReadHeadFastBlockHash (line 96) | func ReadHeadFastBlockHash(db DatabaseReader) common.Hash {
  function WriteHeadFastBlockHash (line 105) | func WriteHeadFastBlockHash(db DatabaseWriter, hash common.Hash) {
  function ReadFastTrieProgress (line 113) | func ReadFastTrieProgress(db DatabaseReader) uint64 {
  function WriteFastTrieProgress (line 123) | func WriteFastTrieProgress(db DatabaseWriter, count uint64) {
  function ReadHeaderRLP (line 130) | func ReadHeaderRLP(db DatabaseReader, hash common.Hash, number uint64) r...
  function HasHeader (line 136) | func HasHeader(db DatabaseReader, hash common.Hash, number uint64) bool {
  function ReadHeader (line 144) | func ReadHeader(db DatabaseReader, hash common.Hash, number uint64) *typ...
  function WriteHeader (line 159) | func WriteHeader(db DatabaseWriter, header *types.Header) {
  function DeleteHeader (line 182) | func DeleteHeader(db DatabaseDeleter, hash common.Hash, number uint64) {
  function ReadBodyRLP (line 192) | func ReadBodyRLP(db DatabaseReader, hash common.Hash, number uint64) rlp...
  function WriteBodyRLP (line 198) | func WriteBodyRLP(db DatabaseWriter, hash common.Hash, number uint64, rl...
  function HasBody (line 205) | func HasBody(db DatabaseReader, hash common.Hash, number uint64) bool {
  function ReadBody (line 213) | func ReadBody(db DatabaseReader, hash common.Hash, number uint64) *types...
  function WriteBody (line 227) | func WriteBody(db DatabaseWriter, hash common.Hash, number uint64, body ...
  function DeleteBody (line 236) | func DeleteBody(db DatabaseDeleter, hash common.Hash, number uint64) {
  function ReadTd (line 243) | func ReadTd(db DatabaseReader, hash common.Hash, number uint64) *big.Int {
  function WriteTd (line 257) | func WriteTd(db DatabaseWriter, hash common.Hash, number uint64, td *big...
  function DeleteTd (line 268) | func DeleteTd(db DatabaseDeleter, hash common.Hash, number uint64) {
  type StateRecepipts (line 274) | type StateRecepipts struct
  function ReadReceipts (line 280) | func ReadReceipts(db DatabaseReader, hash common.Hash, number uint64) ty...
  function WriteReceipts (line 301) | func WriteReceipts(db DatabaseWriter, hash common.Hash, number uint64, r...
  function DeleteReceipts (line 321) | func DeleteReceipts(db DatabaseDeleter, hash common.Hash, number uint64) {
  function ReadBlock (line 333) | func ReadBlock(db DatabaseReader, hash common.Hash, number uint64) *type...
  function WriteBlock (line 346) | func WriteBlock(db DatabaseWriter, block *types.Block) {
  function DeleteBlock (line 353) | func DeleteBlock(db DatabaseDeleter, hash common.Hash, number uint64) {
  function FindCommonAncestor (line 361) | func FindCommonAncestor(db DatabaseReader, a, b *types.Header) *types.He...

FILE: core/rawdb/accessors_chain_test.go
  function TestHeaderStorage (line 32) | func TestHeaderStorage(t *testing.T) {
  function TestBodyStorage (line 65) | func TestBodyStorage(t *testing.T) {
  function TestBlockStorage (line 103) | func TestBlockStorage(t *testing.T) {
  function TestPartialBlockStorage (line 152) | func TestPartialBlockStorage(t *testing.T) {
  function TestTdStorage (line 185) | func TestTdStorage(t *testing.T) {
  function TestCanonicalMappingStorage (line 208) | func TestCanonicalMappingStorage(t *testing.T) {
  function TestHeadStorage (line 231) | func TestHeadStorage(t *testing.T) {
  function TestBlockReceiptStorage (line 266) | func TestBlockReceiptStorage(t *testing.T) {

FILE: core/rawdb/accessors_indexes.go
  function ReadTxLookupEntry (line 28) | func ReadTxLookupEntry(db DatabaseReader, hash common.Hash) (common.Hash...
  function WriteTxLookupEntries (line 43) | func WriteTxLookupEntries(db DatabaseWriter, block *types.Block) {
  function DeleteTxLookupEntry (line 61) | func DeleteTxLookupEntry(db DatabaseDeleter, hash common.Hash) {
  function ReadTransaction (line 67) | func ReadTransaction(db DatabaseReader, hash common.Hash) (*types.Transa...
  function ReadReceipt (line 82) | func ReadReceipt(db DatabaseReader, hash common.Hash) (*types.Receipt, c...
  function ReadBloomBits (line 97) | func ReadBloomBits(db DatabaseReader, bit uint, section uint64, head com...
  function WriteBloomBits (line 103) | func WriteBloomBits(db DatabaseWriter, bit uint, section uint64, head co...

FILE: core/rawdb/accessors_metadata.go
  function ReadDatabaseVersion (line 29) | func ReadDatabaseVersion(db DatabaseReader) int {
  function WriteDatabaseVersion (line 39) | func WriteDatabaseVersion(db DatabaseWriter, version int) {
  function ReadChainConfig (line 47) | func ReadChainConfig(db DatabaseReader, hash common.Hash) *params.ChainC...
  function WriteChainConfig (line 61) | func WriteChainConfig(db DatabaseWriter, hash common.Hash, cfg *params.C...
  function ReadPreimage (line 75) | func ReadPreimage(db DatabaseReader, hash common.Hash) []byte {
  function WritePreimages (line 82) | func WritePreimages(db DatabaseWriter, number uint64, preimages map[comm...

FILE: core/rawdb/interfaces.go
  type DatabaseReader (line 20) | type DatabaseReader interface
  type DatabaseWriter (line 26) | type DatabaseWriter interface
  type DatabaseDeleter (line 31) | type DatabaseDeleter interface

FILE: core/rawdb/schema.go
  type TxLookupEntry (line 69) | type TxLookupEntry struct
  function encodeBlockNumber (line 76) | func encodeBlockNumber(number uint64) []byte {
  function indexKey (line 82) | func indexKey(number uint64) []byte {
  function headerKey (line 87) | func headerKey(number uint64, hash common.Hash) []byte {
  function headerTDKey (line 92) | func headerTDKey(number uint64, hash common.Hash) []byte {
  function headerHashKey (line 97) | func headerHashKey(number uint64) []byte {
  function headerNumberKey (line 102) | func headerNumberKey(hash common.Hash) []byte {
  function blockBodyKey (line 107) | func blockBodyKey(number uint64, hash common.Hash) []byte {
  function blockReceiptsKey (line 112) | func blockReceiptsKey(number uint64, hash common.Hash) []byte {
  function txLookupKey (line 117) | func txLookupKey(hash common.Hash) []byte {
  function bloomBitsKey (line 122) | func bloomBitsKey(bit uint, section uint64, hash common.Hash) []byte {
  function preimageKey (line 132) | func preimageKey(hash common.Hash) []byte {
  function configKey (line 137) | func configKey(hash common.Hash) []byte {

FILE: core/state/database.go
  constant maxPastTries (line 35) | maxPastTries = 12
  constant codeSizeCacheSize (line 38) | codeSizeCacheSize = 100000
  type Database (line 42) | type Database interface
  type Trie (line 63) | type Trie interface
  function NewDatabase (line 76) | func NewDatabase(db serodb.Database) Database {
  type cachingDB (line 84) | type cachingDB struct
    method OpenTrie (line 92) | func (db *cachingDB) OpenTrie(root common.Hash) (Trie, error) {
    method pushTrie (line 108) | func (db *cachingDB) pushTrie(t *trie.SecureTrie) {
    method OpenStorageTrie (line 121) | func (db *cachingDB) OpenStorageTrie(addrHash, root common.Hash) (Trie...
    method CopyTrie (line 126) | func (db *cachingDB) CopyTrie(t Trie) Trie {
    method ContractCode (line 138) | func (db *cachingDB) ContractCode(addrHash, codeHash common.Hash) ([]b...
    method ContractCodeSize (line 147) | func (db *cachingDB) ContractCodeSize(addrHash, codeHash common.Hash) ...
    method TrieDB (line 156) | func (db *cachingDB) TrieDB() *trie.Database {
  type cachedTrie (line 161) | type cachedTrie struct
    method Commit (line 166) | func (m cachedTrie) Commit(onleaf trie.LeafCallback) (common.Hash, err...
    method Prove (line 174) | func (m cachedTrie) Prove(key []byte, fromLevel uint, proofDb serodb.P...

FILE: core/state/dump.go
  type DumpAccount (line 28) | type DumpAccount struct
  type Dump (line 37) | type Dump struct
  method RawDump (line 42) | func (self *StateDB) RawDump() Dump {
  method Dump (line 74) | func (self *StateDB) Dump() []byte {

FILE: core/state/iterator.go
  type NodeIterator (line 30) | type NodeIterator struct
    method Next (line 56) | func (it *NodeIterator) Next() bool {
    method step (line 70) | func (it *NodeIterator) step() error {
    method retrieve (line 133) | func (it *NodeIterator) retrieve() bool {
  function NewNodeIterator (line 47) | func NewNodeIterator(state *StateDB) *NodeIterator {

FILE: core/state/iterator_test.go
  function TestNodeIteratorCoverage (line 28) | func TestNodeIteratorCoverage(t *testing.T) {

FILE: core/state/journal.go
  type journalEntry (line 27) | type journalEntry interface
  type journal (line 38) | type journal struct
    method append (line 51) | func (j *journal) append(entry journalEntry) {
    method revert (line 60) | func (j *journal) revert(statedb *StateDB, snapshot int) {
    method dirty (line 78) | func (j *journal) dirty(addr common.Address) {
    method length (line 83) | func (j *journal) length() int {
  function newJournal (line 44) | func newJournal() *journal {
  type createObjectChange (line 89) | type createObjectChange struct
    method revert (line 147) | func (ch createObjectChange) revert(s *StateDB) {
    method dirtied (line 152) | func (ch createObjectChange) dirtied() *common.Address {
  type resetObjectChange (line 92) | type resetObjectChange struct
    method revert (line 156) | func (ch resetObjectChange) revert(s *StateDB) {
    method dirtied (line 160) | func (ch resetObjectChange) dirtied() *common.Address {
  type suicideChange (line 95) | type suicideChange struct
    method revert (line 164) | func (ch suicideChange) revert(s *StateDB) {
    method dirtied (line 176) | func (ch suicideChange) dirtied() *common.Address {
  type balanceChange (line 102) | type balanceChange struct
    method revert (line 187) | func (ch balanceChange) revert(s *StateDB) {
    method dirtied (line 191) | func (ch balanceChange) dirtied() *common.Address {
  type ticketNonceChange (line 108) | type ticketNonceChange struct
    method revert (line 139) | func (tn ticketNonceChange) revert(s *StateDB) {
    method dirtied (line 143) | func (tn ticketNonceChange) dirtied() *common.Address {
  type storageChange (line 113) | type storageChange struct
    method revert (line 203) | func (ch storageChange) revert(s *StateDB) {
    method dirtied (line 207) | func (ch storageChange) dirtied() *common.Address {
  type codeChange (line 117) | type codeChange struct
    method revert (line 195) | func (ch codeChange) revert(s *StateDB) {
    method dirtied (line 199) | func (ch codeChange) dirtied() *common.Address {
  type refundChange (line 123) | type refundChange struct
    method revert (line 211) | func (ch refundChange) revert(s *StateDB) {
    method dirtied (line 215) | func (ch refundChange) dirtied() *common.Address {
  type addLogChange (line 126) | type addLogChange struct
    method revert (line 219) | func (ch addLogChange) revert(s *StateDB) {
    method dirtied (line 229) | func (ch addLogChange) dirtied() *common.Address {
  type addPreimageChange (line 129) | type addPreimageChange struct
    method revert (line 233) | func (ch addPreimageChange) revert(s *StateDB) {
    method dirtied (line 237) | func (ch addPreimageChange) dirtied() *common.Address {
  type touchChange (line 132) | type touchChange struct
    method revert (line 180) | func (ch touchChange) revert(s *StateDB) {
    method dirtied (line 183) | func (ch touchChange) dirtied() *common.Address {

FILE: core/state/managed_state.go
  type account (line 25) | type account struct
  type ManagedState (line 31) | type ManagedState struct
    method GetAllNonceAddress (line 39) | func (ms *ManagedState) GetAllNonceAddress(addr common.Address) []comm...
    method setNonceAddress (line 43) | func (ms *ManagedState) setNonceAddress(addr common.Address, nonceAddr...
    method GetNonceAddress (line 47) | func (ms *ManagedState) GetNonceAddress(addr common.Address, key []byt...
    method IsContract (line 51) | func (ms *ManagedState) IsContract(addr common.Address) bool {
    method HasAccount (line 125) | func (ms *ManagedState) HasAccount(addr common.Address) bool {
    method hasAccount (line 131) | func (ms *ManagedState) hasAccount(addr common.Address) bool {
  function ManageState (line 56) | func ManageState(statedb *StateDB) *ManagedState {
  function GetAndIndNonce (line 63) | func GetAndIndNonce() uint64 {
  function newAccount (line 154) | func newAccount(so *stateObject) *account {

FILE: core/state/state_object.go
  type Code (line 33) | type Code
    method String (line 35) | func (self Code) String() string {
  type Storage (line 39) | type Storage
    method String (line 41) | func (self Storage) String() (str string) {
    method Copy (line 49) | func (self Storage) Copy() Storage {
  type stateObject (line 64) | type stateObject struct
    method empty (line 93) | func (s *stateObject) empty() bool {
    method TicketNonce (line 139) | func (self *stateObject) TicketNonce() uint64 {
    method SetTicketNonce (line 143) | func (self *stateObject) SetTicketNonce(nonce uint64) {
    method setTicketNonce (line 151) | func (self *stateObject) setTicketNonce(nonce uint64) {
    method EncodeRLP (line 156) | func (c *stateObject) EncodeRLP(w io.Writer) error {
    method setError (line 161) | func (self *stateObject) setError(err error) {
    method markSuicided (line 167) | func (self *stateObject) markSuicided() {
    method touch (line 171) | func (c *stateObject) touch() {
    method getTrie (line 177) | func (c *stateObject) getTrie(db Database) Trie {
    method GetState (line 190) | func (self *stateObject) GetState(db Database, key common.Hash) common...
    method SetState (line 213) | func (self *stateObject) SetState(db Database, key, value common.Hash) {
    method setState (line 222) | func (self *stateObject) setState(key, value common.Hash) {
    method updateTrie (line 228) | func (self *stateObject) updateTrie(db Database) Trie {
    method updateRoot (line 244) | func (self *stateObject) updateRoot(db Database) {
    method CommitTrie (line 251) | func (self *stateObject) CommitTrie(db Database) error {
    method AddBalance (line 265) | func (self *stateObject) AddBalance(coinName string, amount *big.Int) {
    method SubBalance (line 275) | func (self *stateObject) SubBalance(coinName string, amount *big.Int) {
    method SetBalance (line 283) | func (self *stateObject) SetBalance(coinName string, amount *big.Int) {
    method ReturnGas (line 301) | func (c *stateObject) ReturnGas(gas *big.Int) {}
    method deepCopy (line 303) | func (self *stateObject) deepCopy(db *StateDB) *stateObject {
    method Address (line 322) | func (c *stateObject) Address() common.Address {
    method Code (line 327) | func (self *stateObject) Code(db Database) []byte {
    method SetCode (line 342) | func (self *stateObject) SetCode(codeHash common.Hash, code []byte) {
    method setCode (line 352) | func (self *stateObject) setCode(codeHash common.Hash, code []byte) {
    method CodeHash (line 358) | func (self *stateObject) CodeHash() []byte {
    method Balance (line 362) | func (self *stateObject) Balance(coinName string) *big.Int {
    method Balances (line 370) | func (self *stateObject) Balances() map[string]*big.Int {
    method Value (line 381) | func (self *stateObject) Value() *big.Int {
  type Book (line 98) | type Book struct
  type Account (line 105) | type Account struct
  function newObject (line 115) | func newObject(db *StateDB, address common.Address, data Account) *state...

FILE: core/state/state_test.go
  type StateSuite (line 30) | type StateSuite struct
    method TestDump (line 39) | func (s *StateSuite) TestDump(c *checker.C) {
    method SetUpTest (line 89) | func (s *StateSuite) SetUpTest(c *checker.C) {
    method TestNull (line 94) | func (s *StateSuite) TestNull(c *checker.C) {
    method TestSnapshot (line 107) | func (s *StateSuite) TestSnapshot(c *checker.C) {
    method TestSnapshotEmpty (line 129) | func (s *StateSuite) TestSnapshotEmpty(c *checker.C) {
  function TestSnapshot2 (line 135) | func TestSnapshot2(t *testing.T) {
  function compareStateObjects (line 189) | func compareStateObjects(so0, so1 *stateObject, t *testing.T) {

FILE: core/state/statedb.go
  type revision (line 46) | type revision struct
  type StateDB (line 71) | type StateDB struct
    method SetStakeState (line 110) | func (self *StateDB) SetStakeState(key common.Hash, value common.Hash) {
    method GetStakeState (line 117) | func (self *StateDB) GetStakeState(key common.Hash) common.Hash {
    method IsContract (line 125) | func (self *StateDB) IsContract(addr common.Address) bool {
    method registerAddressByState (line 161) | func (self *StateDB) registerAddressByState(name string, contractAddr ...
    method OwnTicket (line 177) | func (self *StateDB) OwnTicket(contractAddr common.Address, categoryNa...
    method AddTicket (line 189) | func (self *StateDB) AddTicket(contractAddr common.Address, categoryNa...
    method RemoveTicket (line 197) | func (self *StateDB) RemoveTicket(contractAddr common.Address, categor...
    method RegisterTicket (line 210) | func (self *StateDB) RegisterTicket(contractAddr common.Address, categ...
    method GetContrctAddressByTicket (line 214) | func (self *StateDB) GetContrctAddressByTicket(categoryName string) co...
    method GetTokenRate (line 218) | func (self *StateDB) GetTokenRate(contractAddr common.Address, coinNam...
    method GetSeroFee (line 230) | func (self *StateDB) GetSeroFee(contractAddr *common.Address, tfee *as...
    method GetSeroGasLimit (line 252) | func (self *StateDB) GetSeroGasLimit(to *common.Address, tfee *assets....
    method GetTxGasLimit (line 267) | func (self *StateDB) GetTxGasLimit(tx *types.Transaction) (gaslimit ui...
    method SetTokenRate (line 275) | func (self *StateDB) SetTokenRate(contractAddr common.Address, coinNam...
    method RegisterToken (line 292) | func (self *StateDB) RegisterToken(contractAddr common.Address, coinNa...
    method GetContrctAddressByToken (line 296) | func (self *StateDB) GetContrctAddressByToken(coinName string) common....
    method getContrctAddress (line 300) | func (self *StateDB) getContrctAddress(name string, key string) common...
    method getAddressByState (line 309) | func (self *StateDB) getAddressByState(key0, key1, key2 common.Hash) c...
    method AddNonceAddress (line 321) | func (self *StateDB) AddNonceAddress(key []byte, nonceAddr common.Addr...
    method GetNonceAddress (line 328) | func (self *StateDB) GetNonceAddress(key []byte) common.Address {
    method setAddressByState (line 335) | func (self *StateDB) setAddressByState(key0, key1, key2 common.Hash, a...
    method setError (line 347) | func (self *StateDB) setError(err error) {
    method Error (line 353) | func (self *StateDB) Error() error {
    method Reset (line 359) | func (self *StateDB) Reset(root common.Hash) error {
    method AddLog (line 377) | func (self *StateDB) AddLog(log *types.Log) {
    method GetLogs (line 388) | func (self *StateDB) GetLogs(hash common.Hash) []*types.Log {
    method Logs (line 392) | func (self *StateDB) Logs() []*types.Log {
    method AddPreimage (line 401) | func (self *StateDB) AddPreimage(hash common.Hash, preimage []byte) {
    method GetContrctNonce (line 410) | func (self *StateDB) GetContrctNonce() uint64 {
    method IncAndGetContrctNonce (line 419) | func (self *StateDB) IncAndGetContrctNonce() uint64 {
    method Preimages (line 431) | func (self *StateDB) Preimages() map[common.Hash][]byte {
    method AddRefund (line 435) | func (self *StateDB) AddRefund(gas uint64) {
    method Exist (line 442) | func (self *StateDB) Exist(addr common.Address) bool {
    method Empty (line 448) | func (self *StateDB) Empty(addr common.Address) bool {
    method GetBalance (line 454) | func (self *StateDB) GetBalance(addr common.Address, coinName string) ...
    method Balances (line 462) | func (self *StateDB) Balances(addr common.Address) map[string]*big.Int {
    method GetCode (line 470) | func (self *StateDB) GetCode(addr common.Address) []byte {
    method GetCodeSize (line 478) | func (self *StateDB) GetCodeSize(addr common.Address) int {
    method GetCodeHash (line 493) | func (self *StateDB) GetCodeHash(addr common.Address) common.Hash {
    method GetState (line 501) | func (self *StateDB) GetState(addr common.Address, bhash common.Hash) ...
    method Database (line 510) | func (self *StateDB) Database() Database {
    method StorageTrie (line 516) | func (self *StateDB) StorageTrie(addr common.Address) Trie {
    method HasSuicided (line 525) | func (self *StateDB) HasSuicided(addr common.Address) bool {
    method GetTicketNonce (line 533) | func (self *StateDB) GetTicketNonce(addr common.Address) uint64 {
    method SetTicketNonce (line 546) | func (self *StateDB) SetTicketNonce(addr common.Address, nonce uint64) {
    method AddBalance (line 554) | func (self *StateDB) AddBalance(addr common.Address, coinName string, ...
    method SubBalance (line 562) | func (self *StateDB) SubBalance(addr common.Address, coinName string, ...
    method SetBalance (line 569) | func (self *StateDB) SetBalance(addr common.Address, coinName string, ...
    method SetCode (line 576) | func (self *StateDB) SetCode(addr common.Address, code []byte) {
    method SetState (line 583) | func (self *StateDB) SetState(addr common.Address, key, value common.H...
    method Suicide (line 595) | func (self *StateDB) Suicide(addr common.Address, toAddr common.Addres...
    method updateStateObject (line 633) | func (self *StateDB) updateStateObject(stateObject *stateObject) {
    method deleteStateObject (line 643) | func (self *StateDB) deleteStateObject(stateObject *stateObject) {
    method getStateObject (line 650) | func (self *StateDB) getStateObject(addr common.Address) (stateObject ...
    method setStateObject (line 676) | func (self *StateDB) setStateObject(object *stateObject) {
    method GetOrNewStateObject (line 681) | func (self *StateDB) GetOrNewStateObject(addr common.Address) *stateOb...
    method createObject (line 691) | func (self *StateDB) createObject(addr common.Address) (newobj, prev *...
    method CreateAccount (line 705) | func (self *StateDB) CreateAccount(addr common.Address) {
    method ForEachOuts (line 710) | func (db *StateDB) ForEachOuts(cb func(key, value common.Hash) bool) {
    method ForEachStorage (line 719) | func (db *StateDB) ForEachStorage(addr common.Address, cb func(key, va...
    method CopyWithNoZState (line 740) | func (self *StateDB) CopyWithNoZState() *StateDB {
    method Copy (line 748) | func (self *StateDB) Copy() *StateDB {
    method Snapshot (line 802) | func (self *StateDB) Snapshot() int {
    method RevertToSnapshot (line 812) | func (self *StateDB) RevertToSnapshot(revid int) {
    method GetRefund (line 831) | func (self *StateDB) GetRefund() uint64 {
    method Finalise (line 837) | func (s *StateDB) Finalise(deleteEmptyObjects bool) {
    method IntermediateRoot (line 865) | func (s *StateDB) IntermediateRoot(deleteEmptyObjects bool) common.Hash {
    method Prepare (line 874) | func (self *StateDB) Prepare(thash, bhash common.Hash, ti int) {
    method clearJournalAndRefund (line 880) | func (s *StateDB) clearJournalAndRefund() {
    method Commit (line 887) | func (s *StateDB) Commit(deleteEmptyObjects bool) (root common.Hash, e...
    method leafCallback (line 925) | func (s *StateDB) leafCallback(leaf []byte, parent common.Hash) error {
  function New (line 134) | func New(db Database, header *types.Header) (*StateDB, error) {

FILE: core/state/statedb4zero.go
  type StateDbPut (line 12) | type StateDbPut interface
  type StateTri (line 15) | type StateTri struct
    method TryGet (line 22) | func (self *StateTri) TryGet(key []byte) ([]byte, error) {
    method TryUpdate (line 26) | func (self *StateTri) TryUpdate(key, value []byte) error {
    method SetState (line 30) | func (self *StateTri) SetState(obj *c_type.PKr, key *c_type.Uint256, v...
    method GetState (line 39) | func (self *StateTri) GetState(obj *c_type.PKr, key *c_type.Uint256) (...
    method TryGlobalGet (line 51) | func (self *StateTri) TryGlobalGet(key []byte) ([]byte, error) {
    method TryGlobalPut (line 55) | func (self *StateTri) TryGlobalPut(key, value []byte) error {
    method GlobalGetter (line 59) | func (self *StateTri) GlobalGetter() serodb.Getter {
  method CurrentZState (line 63) | func (self *StateDB) CurrentZState() *zstate.ZState {
  method NextZState (line 80) | func (self *StateDB) NextZState() *zstate.ZState {
  type zeroDB (line 96) | type zeroDB struct
    method CurrentTri (line 100) | func (self *zeroDB) CurrentTri() serodb.Tri {
    method GlobalGetter (line 104) | func (self *zeroDB) GlobalGetter() serodb.Getter {
  method GetStakeCons (line 110) | func (self *StateDB) GetStakeCons() *consensus.Cons {

FILE: core/state/statedb_test.go
  function TestUpdateLeaks (line 42) | func TestUpdateLeaks(t *testing.T) {
  function TestIntermediateLeaks (line 68) | func TestIntermediateLeaks(t *testing.T) {
  function TestCopy (line 123) | func TestCopy(t *testing.T) {
  function TestSnapshotRandom (line 170) | func TestSnapshotRandom(t *testing.T) {
  type snapshotTest (line 193) | type snapshotTest struct
    method Generate (line 289) | func (*snapshotTest) Generate(r *rand.Rand, size int) reflect.Value {
    method String (line 315) | func (test *snapshotTest) String() string {
    method run (line 328) | func (test *snapshotTest) run() bool {
    method checkEqual (line 359) | func (test *snapshotTest) checkEqual(state, checkstate *StateDB) error {
  type testAction (line 200) | type testAction struct
  function newTestAction (line 208) | func newTestAction(addr common.Address, r *rand.Rand) testAction {
  method TestTouchDelete (line 401) | func (s *StateSuite) TestTouchDelete(c *check.C) {
  function TestCopyOfCopy (line 420) | func TestCopyOfCopy(t *testing.T) {

FILE: core/state/sync.go
  function NewStateSync (line 28) | func NewStateSync(root common.Hash, database trie.DatabaseReader) *trie....

FILE: core/state/sync_test.go
  type testAccount (line 31) | type testAccount struct
  function makeTestState (line 39) | func makeTestState() (Database, common.Hash, []*testAccount) {
  function checkStateAccounts (line 70) | func checkStateAccounts(t *testing.T, db serodb.Database, root common.Ha...
  function checkTrieConsistency (line 91) | func checkTrieConsistency(db serodb.Database, root common.Hash) error {
  function checkStateConsistency (line 106) | func checkStateConsistency(db serodb.Database, root common.Hash) error {
  function TestEmptyStateSync (line 122) | func TestEmptyStateSync(t *testing.T) {
  function TestIterativeStateSyncIndividual (line 131) | func TestIterativeStateSyncIndividual(t *testing.T) { testIterativeState...
  function TestIterativeStateSyncBatched (line 132) | func TestIterativeStateSyncBatched(t *testing.T)    { testIterativeState...
  function testIterativeStateSync (line 134) | func testIterativeStateSync(t *testing.T, batch int) {
  function TestIterativeDelayedStateSync (line 166) | func TestIterativeDelayedStateSync(t *testing.T) {
  function TestIterativeRandomStateSyncIndividual (line 200) | func TestIterativeRandomStateSyncIndividual(t *testing.T) { testIterativ...
  function TestIterativeRandomStateSyncBatched (line 201) | func TestIterativeRandomStateSyncBatched(t *testing.T)    { testIterativ...
  function testIterativeRandomStateSync (line 203) | func testIterativeRandomStateSync(t *testing.T, batch int) {
  function TestIterativeRandomDelayedStateSync (line 243) | func TestIterativeRandomDelayedStateSync(t *testing.T) {
  function TestIncompleteStateSync (line 288) | func TestIncompleteStateSync(t *testing.T) {

FILE: core/state_processor.go
  type StateProcessor (line 45) | type StateProcessor struct
    method Process (line 67) | func (p *StateProcessor) Process(block *types.Block, statedb *state.St...
  function NewStateProcessor (line 52) | func NewStateProcessor(config *params.ChainConfig, bc *BlockChain, engin...
  function ApplyTransaction (line 99) | func ApplyTransaction(config *params.ChainConfig, bc ChainContext, autho...
  function applyStake (line 157) | func applyStake(from common.Address, stakeDesc stx.DescCmd, statedb *sta...

FILE: core/state_transition.go
  type StateTransition (line 40) | type StateTransition struct
    method to (line 128) | func (st *StateTransition) to() common.Address {
    method useGas (line 135) | func (st *StateTransition) useGas(amount uint64) error {
    method preCheck (line 144) | func (st *StateTransition) preCheck() error {
    method TransitionDb (line 176) | func (st *StateTransition) TransitionDb() (ret []byte, usedGas uint64,...
    method refundGas (line 235) | func (st *StateTransition) refundGas() {
    method gasUsed (line 277) | func (st *StateTransition) gasUsed() uint64 {
  type Message (line 53) | type Message interface
  function IntrinsicGas (line 71) | func IntrinsicGas(data []byte, contractCreation bool) (uint64, error) {
  function NewStateTransition (line 104) | func NewStateTransition(evm *vm.EVM, msg Message, gp *GasPool) *StateTra...
  function ApplyMessage (line 123) | func ApplyMessage(evm *vm.EVM, msg Message, gp *GasPool) ([]byte, uint64...

FILE: core/tx_checker.go
  type CheckDesc (line 27) | type CheckDesc struct
  function NewTxChecker (line 33) | func NewTxChecker(bc *BlockChain, chain types.Blocks) (chan<- struct{}, ...

FILE: core/tx_journal.go
  type devNull (line 37) | type devNull struct
    method Write (line 39) | func (*devNull) Write(p []byte) (n int, err error) { return len(p), nil }
    method Close (line 40) | func (*devNull) Close() error                      { return nil }
  type txJournal (line 44) | type txJournal struct
    method load (line 58) | func (journal *txJournal) load(add func([]*types.Transaction) []error)...
    method insert (line 119) | func (journal *txJournal) insert(tx *types.Transaction) error {
    method rotate (line 131) | func (journal *txJournal) rotate() error {
    method close (line 162) | func (journal *txJournal) close() error {
  function newTxJournal (line 50) | func newTxJournal(path string) *txJournal {

FILE: core/tx_list.go
  type priceHeap (line 31) | type priceHeap
    method Len (line 33) | func (h priceHeap) Len() int { return len(h) }
    method Swap (line 34) | func (h priceHeap) Swap(i, j int) {
    method Less (line 41) | func (h priceHeap) Less(i, j int) bool {
    method Push (line 53) | func (h *priceHeap) Push(x interface{}) {
    method Pop (line 57) | func (h *priceHeap) Pop() interface{} {
  type txPricedList (line 70) | type txPricedList struct
    method Get (line 84) | func (l *txPricedList) Get(hash common.Hash) *types.Transaction {
    method Add (line 88) | func (l *txPricedList) Add(tx *types.Transaction, threshold *big.Int) ...
    method Flatten (line 99) | func (l *txPricedList) Flatten() types.Transactions {
    method Ready (line 107) | func (l *txPricedList) Ready() types.Transactions {
    method Len (line 123) | func (l *txPricedList) Len() int {
    method Remove (line 127) | func (l *txPricedList) Remove(tx *types.Transaction) bool {
    method Underpriced (line 145) | func (l *txPricedList) Underpriced(tx *types.Transaction) bool {
    method Discard (line 168) | func (l *txPricedList) Discard(count int) types.Transactions {
    method RemoveWithPrice (line 184) | func (l *txPricedList) RemoveWithPrice(threshold *big.Int) {
  function newTxPricedList (line 77) | func newTxPricedList(all *txLookup) *txPricedList {
  type hashTime (line 200) | type hashTime
    method Flatten (line 202) | func (l hashTime) Flatten() hashTime {

FILE: core/tx_pool.go
  constant chainHeadChanSize (line 58) | chainHeadChanSize = 10
  type TxStatus (line 96) | type TxStatus
  constant TxStatusUnknown (line 99) | TxStatusUnknown TxStatus = iota
  constant TxStatusQueued (line 100) | TxStatusQueued
  constant TxStatusPending (line 101) | TxStatusPending
  type blockChain (line 106) | type blockChain interface
  type TxPoolConfig (line 115) | type TxPoolConfig struct
    method sanitize (line 145) | func (config *TxPoolConfig) sanitize() TxPoolConfig {
  function TxToOut (line 155) | func TxToOut(tx types.Transaction) (result []txtool.Out, txHash c_type.U...
  type PKrTxOuts (line 199) | type PKrTxOuts
    method AddPendingTxOut (line 201) | func (p PKrTxOuts) AddPendingTxOut(tx types.Transaction) {
    method AddImmatureTxOut (line 211) | func (p PKrTxOuts) AddImmatureTxOut(tx types.Transaction, blockNumber ...
    method AddOut (line 220) | func (p PKrTxOuts) AddOut(
    method delPendintTxOut (line 250) | func (p PKrTxOuts) delPendintTxOut(tx types.Transaction) {
    method delPkrTxOut (line 265) | func (p PKrTxOuts) delPkrTxOut(pkr c_type.PKr, txHash c_type.Uint256) {
  type TxOutInfo (line 273) | type TxOutInfo struct
    method addOut (line 286) | func (t *TxOutInfo) addOut(txHash c_type.Uint256, from common.Address,...
  type TxPool (line 325) | type TxPool struct
    method SetMining (line 393) | func (pool *TxPool) SetMining(m int32) {
    method Mining (line 397) | func (pool *TxPool) Mining() bool {
    method loop (line 404) | func (pool *TxPool) loop() {
    method RemoveTxs (line 490) | func (pool *TxPool) RemoveTxs(txs types.Transactions) {
    method lockedReset (line 502) | func (pool *TxPool) lockedReset(oldHead, newHead *types.Header) {
    method canAddPkrTx (line 509) | func (pool *TxPool) canAddPkrTx() bool {
    method reset (line 519) | func (pool *TxPool) reset(oldHead, newHead *types.Header) {
    method Stop (line 619) | func (pool *TxPool) Stop() {
    method SubscribeNewTxsEvent (line 632) | func (pool *TxPool) SubscribeNewTxsEvent(ch chan<- NewTxsEvent) event....
    method SetGasPrice (line 638) | func (pool *TxPool) SetGasPrice(price *big.Int) {
    method State (line 650) | func (pool *TxPool) State() *state.ManagedState {
    method Stats (line 659) | func (pool *TxPool) Stats() (int, int, int, int) {
    method Content (line 668) | func (pool *TxPool) Content() (types.Transactions, types.Transactions,...
    method PendingOuts (line 692) | func (pool *TxPool) PendingOuts(pkr c_type.PKr) map[c_type.Uint256]*Tx...
    method DelMaturedOuts (line 698) | func (pool *TxPool) DelMaturedOuts(pkr c_type.PKr, txHash c_type.Uint2...
    method Pending (line 715) | func (pool *TxPool) Pending() (types.Transactions, error) {
    method validateTx (line 724) | func (pool *TxPool) validateTx(tx *types.Transaction, local bool) (e e...
    method checkDescCmd (line 790) | func (pool *TxPool) checkDescCmd(tx *stx.T, state *state.StateDB) (err...
    method add (line 854) | func (pool *TxPool) add(tx *types.Transaction, local bool) (bool, erro...
    method enqueueTx (line 918) | func (pool *TxPool) enqueueTx(hash common.Hash, tx *types.Transaction)...
    method AddLocal (line 938) | func (pool *TxPool) AddLocal(tx *types.Transaction) error {
    method AddRemote (line 945) | func (pool *TxPool) AddRemote(tx *types.Transaction) error {
    method AddLocals (line 952) | func (pool *TxPool) AddLocals(txs []*types.Transaction) []error {
    method AddRemotes (line 959) | func (pool *TxPool) AddRemotes(txs []*types.Transaction) []error {
    method addTx (line 967) | func (pool *TxPool) addTx(tx *types.Transaction, local bool) error {
    method addTxs (line 990) | func (pool *TxPool) addTxs(txs []*types.Transaction, local bool, broad...
    method addTxsLocked (line 999) | func (pool *TxPool) addTxsLocked(txs []*types.Transaction, local bool,...
    method Status (line 1033) | func (pool *TxPool) Status(hashes []common.Hash) []TxStatus {
    method Get (line 1054) | func (pool *TxPool) Get(hash common.Hash) *types.Transaction {
    method removeAllTx (line 1060) | func (pool *TxPool) removeAllTx(hash common.Hash) {
    method removeWorkQueue (line 1078) | func (pool *TxPool) removeWorkQueue(tx *types.Transaction) {
    method promoteTx (line 1090) | func (pool *TxPool) promoteTx(tx *types.Transaction) bool {
    method broadCastLocalTx (line 1098) | func (pool *TxPool) broadCastLocalTx(tx *types.Transaction) {
    method promoteExecutables (line 1102) | func (pool *TxPool) promoteExecutables(broadcast bool) {
  function NewTxPool (line 361) | func NewTxPool(config TxPoolConfig, chainconfig *params.ChainConfig, cha...
  type txLookup (line 1157) | type txLookup struct
    method Range (line 1170) | func (t *txLookup) Range(f func(hash common.Hash, tx *types.Transactio...
    method Get (line 1182) | func (t *txLookup) Get(hash common.Hash) *types.Transaction {
    method Count (line 1190) | func (t *txLookup) Count() int {
    method Add (line 1198) | func (t *txLookup) Add(tx *types.Transaction) {
    method Remove (line 1206) | func (t *txLookup) Remove(hash common.Hash) {
  function newTxLookup (line 1163) | func newTxLookup() *txLookup {

FILE: core/types.go
  type Validator (line 29) | type Validator interface
  type Processor (line 44) | type Processor interface

FILE: core/types/block.go
  type Body (line 38) | type Body struct
  type Block (line 43) | type Block struct
    method SetVotes (line 62) | func (b *Block) SetVotes(CurrentVotes []HeaderVote, ParentVotes []Head...
    method DeprecatedTd (line 70) | func (b *Block) DeprecatedTd() *big.Int {
    method Transactions (line 111) | func (b *Block) Transactions() Transactions { return b.transactions }
    method Transaction (line 113) | func (b *Block) Transaction(hash common.Hash) *Transaction {
    method Number (line 122) | func (b *Block) Number() *big.Int     { return new(big.Int).Set(b.head...
    method GasLimit (line 123) | func (b *Block) GasLimit() uint64     { return b.header.GasLimit }
    method GasUsed (line 124) | func (b *Block) GasUsed() uint64      { return b.header.GasUsed }
    method Difficulty (line 125) | func (b *Block) Difficulty() *big.Int { return new(big.Int).Set(b.head...
    method Time (line 126) | func (b *Block) Time() *big.Int       { return new(big.Int).Set(b.head...
    method NumberU64 (line 128) | func (b *Block) NumberU64() uint64        { return b.header.Number.Uin...
    method MixDigest (line 129) | func (b *Block) MixDigest() common.Hash   { return b.header.MixDigest }
    method Nonce (line 130) | func (b *Block) Nonce() uint64            { return binary.BigEndian.Ui...
    method Bloom (line 131) | func (b *Block) Bloom() Bloom             { return b.header.Bloom }
    method Coinbase (line 132) | func (b *Block) Coinbase() common.Address { return b.header.Coinbase }
    method Root (line 133) | func (b *Block) Root() common.Hash        { return b.header.Root }
    method ParentHash (line 134) | func (b *Block) ParentHash() common.Hash  { return b.header.ParentHash }
    method TxHash (line 135) | func (b *Block) TxHash() common.Hash      { return b.header.TxHash }
    method ReceiptHash (line 136) | func (b *Block) ReceiptHash() common.Hash { return b.header.ReceiptHash }
    method Extra (line 137) | func (b *Block) Extra() []byte            { return common.CopyBytes(b....
    method Header (line 139) | func (b *Block) Header() *Header { return CopyHeader(b.header) }
    method Body (line 142) | func (b *Block) Body() *Body { return &Body{b.transactions} }
    method HashNoNonce (line 144) | func (b *Block) HashNoNonce() common.Hash {
    method Size (line 150) | func (b *Block) Size() common.StorageSize {
    method WithSeal (line 169) | func (b *Block) WithSeal(header *Header) *Block {
    method WithBody (line 179) | func (b *Block) WithBody(transactions []*Transaction) *Block {
    method Hash (line 190) | func (b *Block) Hash() common.Hash {
    method HashPos (line 199) | func (b *Block) HashPos() common.Hash {
  function NewBlock (line 80) | func NewBlock(header *Header, txs []*Transaction, receipts []*Receipt) *...
  function NewBlockWithHeader (line 105) | func NewBlockWithHeader(header *Header) *Block {
  type writeCounter (line 160) | type writeCounter
    method Write (line 162) | func (c *writeCounter) Write(b []byte) (int, error) {
  type Blocks (line 208) | type Blocks
  type BlockBy (line 210) | type BlockBy
    method Sort (line 212) | func (self BlockBy) Sort(blocks Blocks) {
  type blockSorter (line 220) | type blockSorter struct
    method Len (line 225) | func (self blockSorter) Len() int { return len(self.blocks) }
    method Swap (line 226) | func (self blockSorter) Swap(i, j int) {
    method Less (line 229) | func (self blockSorter) Less(i, j int) bool { return self.by(self.bloc...
  function Number (line 231) | func Number(b1, b2 *Block) bool { return b1.header.Number.Cmp(b2.header....

FILE: core/types/block_rlp.go
  type Block_Version_0 (line 11) | type Block_Version_0 struct
  method DecodeRLP (line 17) | func (b *Block) DecodeRLP(s *rlp.Stream) error {
  method EncodeRLP (line 33) | func (b *Block) EncodeRLP(w io.Writer) error {

FILE: core/types/bloom9.go
  type bytesBacked (line 27) | type bytesBacked interface
  constant BloomByteLength (line 33) | BloomByteLength = 256
  constant BloomBitLength (line 36) | BloomBitLength = 8 * BloomByteLength
  type Bloom (line 40) | type Bloom
    method SetBytes (line 52) | func (b *Bloom) SetBytes(d []byte) {
    method Add (line 60) | func (b *Bloom) Add(d *big.Int) {
    method Big (line 67) | func (b Bloom) Big() *big.Int {
    method Bytes (line 71) | func (b Bloom) Bytes() []byte {
    method Test (line 75) | func (b Bloom) Test(test *big.Int) bool {
    method TestBytes (line 79) | func (b Bloom) TestBytes(test []byte) bool {
    method MarshalText (line 85) | func (b Bloom) MarshalText() ([]byte, error) {
    method UnmarshalText (line 90) | func (b *Bloom) UnmarshalText(input []byte) error {
  function BytesToBloom (line 44) | func BytesToBloom(b []byte) Bloom {
  function CreateBloom (line 94) | func CreateBloom(receipts Receipts) Bloom {
  function LogsBloom (line 103) | func LogsBloom(logs []*Log) *big.Int {
  function bloom9 (line 115) | func bloom9(b []byte) *big.Int {
  function BloomLookup (line 131) | func BloomLookup(bin Bloom, topic bytesBacked) bool {

FILE: core/types/derive_sha.go
  type DerivableList (line 27) | type DerivableList interface
  function DeriveSha (line 32) | func DeriveSha(list DerivableList) common.Hash {

FILE: core/types/gen_header_json.go
  method MarshalJSON (line 17) | func (h Header) MarshalJSON() ([]byte, error) {
  method UnmarshalJSON (line 55) | func (h *Header) UnmarshalJSON(input []byte) error {

FILE: core/types/gen_log_json.go
  method MarshalJSON (line 16) | func (l Log) MarshalJSON() ([]byte, error) {
  method UnmarshalJSON (line 42) | func (l *Log) UnmarshalJSON(input []byte) error {

FILE: core/types/gen_receipt_json.go
  method MarshalJSON (line 16) | func (r Receipt) MarshalJSON() ([]byte, error) {
  method UnmarshalJSON (line 40) | func (r *Receipt) UnmarshalJSON(input []byte) error {

FILE: core/types/gen_tx_json.go
  method MarshalJSON (line 17) | func (t txdata) MarshalJSON() ([]byte, error) {
  method UnmarshalJSON (line 33) | func (t *txdata) UnmarshalJSON(input []byte) error {

FILE: core/types/header.go
  type BlockNonce (line 24) | type BlockNonce
    method Uint64 (line 34) | func (n BlockNonce) Uint64() uint64 {
    method MarshalText (line 39) | func (n BlockNonce) MarshalText() ([]byte, error) {
    method UnmarshalText (line 44) | func (n *BlockNonce) UnmarshalText(input []byte) error {
  function EncodeNonce (line 27) | func EncodeNonce(i uint64) BlockNonce {
  type Header (line 51) | type Header struct
    method Valid (line 85) | func (h *Header) Valid() bool {
    method Hash (line 99) | func (h *Header) Hash() common.Hash {
    method HashPow (line 104) | func (h *Header) HashPow() common.Hash {
    method HashPos (line 121) | func (h *Header) HashPos() (ret common.Hash) {
    method ActualDifficulty (line 142) | func (h *Header) ActualDifficulty() *big.Int {
    method Size (line 161) | func (h *Header) Size() common.StorageSize {
    method DecodeRLP (line 225) | func (b *Header) DecodeRLP(s *rlp.Stream) error {
    method EncodeRLP (line 258) | func (b *Header) EncodeRLP(w io.Writer) error {
  type headerMarshaling (line 75) | type headerMarshaling struct
  function StakeHash (line 130) | func StakeHash(currentHashPos *common.Hash, parentHashPos *common.Hash, ...
  function rlpHash (line 165) | func rlpHash(x interface{}) (h common.Hash) {
  function CopyHeader (line 174) | func CopyHeader(h *Header) *Header {
  type Header_Version_0 (line 198) | type Header_Version_0 struct
  type Header_Version_1 (line 218) | type Header_Version_1 struct

FILE: core/types/header_test.go
  function TestRLP (line 12) | func TestRLP(t *testing.T) {

FILE: core/types/log.go
  type Log (line 33) | type Log struct
    method EncodeRLP (line 85) | func (l *Log) EncodeRLP(w io.Writer) error {
    method DecodeRLP (line 90) | func (l *Log) DecodeRLP(s *rlp.Stream) error {
  type logMarshaling (line 60) | type logMarshaling struct
  type rlpLog (line 67) | type rlpLog struct
  type rlpStorageLog (line 73) | type rlpStorageLog struct
  type LogForStorage (line 101) | type LogForStorage
    method EncodeRLP (line 104) | func (l *LogForStorage) EncodeRLP(w io.Writer) error {
    method DecodeRLP (line 118) | func (l *LogForStorage) DecodeRLP(s *rlp.Stream) error {
  type Account (line 136) | type Account struct

FILE: core/types/receipt.go
  constant ReceiptStatusFailed (line 39) | ReceiptStatusFailed = uint64(0)
  constant ReceiptStatusSuccessful (line 42) | ReceiptStatusSuccessful = uint64(1)
  type Receipt (line 46) | type Receipt struct
    method EncodeRLP (line 92) | func (r *Receipt) EncodeRLP(w io.Writer) error {
    method DecodeRLP (line 98) | func (r *Receipt) DecodeRLP(s *rlp.Stream) error {
    method setStatus (line 110) | func (r *Receipt) setStatus(postStateOrStatus []byte) error {
    method statusEncoding (line 124) | func (r *Receipt) statusEncoding() []byte {
    method Size (line 136) | func (r *Receipt) Size() common.StorageSize {
  type receiptMarshaling (line 64) | type receiptMarshaling struct
  type receiptRLP (line 72) | type receiptRLP struct
  function NewReceipt (line 80) | func NewReceipt(root []byte, failed bool, cumulativeGasUsed uint64) *Rec...
  type Receipts (line 147) | type Receipts
    method Len (line 150) | func (r Receipts) Len() int { return len(r) }
    method GetRlp (line 153) | func (r Receipts) GetRlp(i int) []byte {

FILE: core/types/receipt_rlp.go
  type receiptForStorage_Version_0 (line 12) | type receiptForStorage_Version_0 struct
  type receiptForStorage_Version_1 (line 22) | type receiptForStorage_Version_1 struct
  type ReceiptForStorage (line 29) | type ReceiptForStorage
    method EncodeRLP (line 33) | func (r *ReceiptForStorage) EncodeRLP(w io.Writer) error {
    method DecodeRLP (line 61) | func (r *ReceiptForStorage) DecodeRLP(s *rlp.Stream) error {

FILE: core/types/share.go
  type Lottery (line 10) | type Lottery struct
  type Vote (line 16) | type Vote struct
    method Hash (line 25) | func (s Vote) Hash() common.Hash {
  type HeaderVote (line 41) | type HeaderVote struct

FILE: core/types/transaction.go
  type Transaction (line 46) | type Transaction struct
    method Ehash (line 96) | func (tx Transaction) Ehash() c_type.Uint256 {
    method Pkg (line 212) | func (tx *Transaction) Pkg() *assets.Asset {
    method EncodeRLP (line 217) | func (tx *Transaction) EncodeRLP(w io.Writer) error {
    method DecodeRLP (line 222) | func (tx *Transaction) DecodeRLP(s *rlp.Stream) error {
    method MarshalJSON (line 233) | func (tx *Transaction) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 241) | func (tx *Transaction) UnmarshalJSON(input []byte) error {
    method Data (line 250) | func (tx *Transaction) Data() []byte {
    method Gas (line 258) | func (tx *Transaction) Gas() uint64 {
    method GasPrice (line 261) | func (tx *Transaction) GasPrice() *big.Int { return new(big.Int).Set(t...
    method GetZZSTX (line 263) | func (tx *Transaction) GetZZSTX() *zstx.T {
    method To (line 267) | func (tx *Transaction) To() *common.Address {
    method IsOpContract (line 277) | func (tx Transaction) IsOpContract() bool {
    method Stxt (line 281) | func (tx *Transaction) Stxt() *zstx.T {
    method From (line 285) | func (tx *Transaction) From() common.Address {
    method Hash (line 291) | func (tx *Transaction) Hash() common.Hash {
    method Size (line 304) | func (tx *Transaction) Size() common.StorageSize {
    method AsMessage (line 316) | func (tx *Transaction) AsMessage() (Message, error) {
    method WithEncrypt (line 329) | func (tx *Transaction) WithEncrypt(stxt *zstx.T) (*Transaction, error) {
    method RawEncrptyValue (line 335) | func (tx *Transaction) RawEncrptyValue() *zstx.T {
  type txdata (line 53) | type txdata struct
  type txdataMarshaling (line 60) | type txdataMarshaling struct
  function NewTransaction (line 67) | func NewTransaction(gasPrice *big.Int, gasLimit uint64, data []byte) *Tr...
  function Ehash (line 85) | func Ehash(price big.Int, gasLimit uint64, payload []byte) c_type.Uint256 {
  function NewTxt (line 108) | func NewTxt(fromRnd *c_type.Uint256, ehash c_type.Uint256, fee assets.To...
  function NewTxWithGTx (line 126) | func NewTxWithGTx(gas uint64, gasPrice *big.Int, t *zstx.T) *Transaction {
  function NewTxtOut (line 137) | func NewTxtOut(Pkr c_type.PKr, currency string, value *big.Int, catg str...
  function stringToUint512 (line 168) | func stringToUint512(str string) c_type.Uint512 {
  function NewCreatePkg (line 178) | func NewCreatePkg(Pkr c_type.PKr, currency string, value *big.Int, catg ...
  type Transactions (line 340) | type Transactions
    method Len (line 343) | func (s Transactions) Len() int { return len(s) }
    method Swap (line 346) | func (s Transactions) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
    method GetRlp (line 349) | func (s Transactions) GetRlp(i int) []byte {
  function TxDifference (line 355) | func TxDifference(a, b Transactions) Transactions {
  type TxByPrice (line 374) | type TxByPrice
    method Len (line 376) | func (s TxByPrice) Len() int           { return len(s) }
    method Less (line 377) | func (s TxByPrice) Less(i, j int) bool { return s[i].data.Price.Cmp(s[...
    method Swap (line 378) | func (s TxByPrice) Swap(i, j int) {
    method Push (line 385) | func (s *TxByPrice) Push(x interface{}) {
    method Pop (line 389) | func (s *TxByPrice) Pop() interface{} {
  type TransactionsByPrice (line 403) | type TransactionsByPrice struct
    method Peek (line 428) | func (t *TransactionsByPrice) Peek() *Transaction {
    method Shift (line 436) | func (t *TransactionsByPrice) Shift() {
    method Pop (line 449) | func (t *TransactionsByPrice) Pop() *Transaction {
  function NewTransactionsByPrice (line 413) | func NewTransactionsByPrice(txs Transactions) *TransactionsByPrice {
  type Message (line 460) | type Message struct
    method From (line 484) | func (m Message) From() common.Address { return m.from }
    method To (line 485) | func (m Message) To() *common.Address  { return m.to }
    method GasPrice (line 486) | func (m Message) GasPrice() *big.Int   { return m.gasPrice }
    method Data (line 487) | func (m Message) Data() []byte         { return m.data }
    method Fee (line 488) | func (m Message) Fee() assets.Token    { return m.fee }
    method Asset (line 489) | func (m Message) Asset() *assets.Asset { return m.asset }
    method TxHash (line 490) | func (m Message) TxHash() common.Hash  { return m.txHash }
  function NewMessage (line 471) | func NewMessage(from common.Address, to *common.Address, nonce uint64, a...

FILE: core/types/transaction_test.go
  type Uint256 (line 12) | type Uint256
  function TestRLPEhash (line 14) | func TestRLPEhash(t *testing.T) {
  function TestEhash (line 34) | func TestEhash(t *testing.T) {
  type XX (line 59) | type XX struct
  type st (line 63) | type st struct
  function TestJson (line 67) | func TestJson(t *testing.T) {

FILE: core/types/vserial/rlp.go
  type VersionType (line 12) | type VersionType
  constant VERSION_NIL (line 15) | VERSION_NIL = VersionType(-1)
  constant VERSION_0 (line 16) | VERSION_0   = VersionType(0)
  constant VERSION_1 (line 17) | VERSION_1   = VersionType(1)
  constant VERSION_2 (line 18) | VERSION_2   = VersionType(2)
  type Version (line 21) | type Version struct
  type vSerial (line 25) | type vSerial struct
    method V (line 35) | func (self *vSerial) V() VersionType {
    method Add (line 38) | func (self *vSerial) Add(data interface{}, ver VersionType) {
    method DecodeRLP (line 46) | func (self *vSerial) DecodeRLP(s *rlp.Stream) error {
    method EncodeRLP (line 83) | func (self *vSerial) EncodeRLP(w io.Writer) error {
  function NewVSerial (line 30) | func NewVSerial() (ret vSerial) {

FILE: core/vm/analysis.go
  type destinations (line 28) | type destinations
    method has (line 31) | func (d destinations) has(codehash common.Hash, code []byte, dest *big...
  type bitvec (line 50) | type bitvec
    method set (line 52) | func (bits *bitvec) set(pos uint64) {
    method set8 (line 55) | func (bits *bitvec) set8(pos uint64) {
    method codeSegment (line 61) | func (bits *bitvec) codeSegment(pos uint64) bool {
  function codeBitmap (line 66) | func codeBitmap(code []byte) bitvec {

FILE: core/vm/analysis_test.go
  function TestJumpDestAnalysis (line 21) | func TestJumpDestAnalysis(t *testing.T) {

FILE: core/vm/common.go
  function calcMemSize (line 27) | func calcMemSize(off, l *big.Int) *big.Int {
  function getData (line 37) | func getData(data []byte, start uint64, size uint64) []byte {
  function getDataBig (line 51) | func getDataBig(data []byte, start *big.Int, size *big.Int) []byte {
  function bigUint64 (line 61) | func bigUint64(v *big.Int) (uint64, bool) {
  function toWordSize (line 66) | func toWordSize(size uint64) uint64 {
  function allZero (line 74) | func allZero(b []byte) bool {

FILE: core/vm/contract.go
  type ContractRef (line 28) | type ContractRef interface
  type AccountRef (line 39) | type AccountRef
    method Address (line 42) | func (ar AccountRef) Address() common.Address { return (common.Address...
  type Contract (line 46) | type Contract struct
    method SetCallMsg (line 99) | func (c *Contract) SetCallMsg(callMsg *assets.Asset) {
    method GetCallMsg (line 103) | func (c *Contract) GetCallMsg() *assets.Asset {
    method PutNonceAddress (line 107) | func (c *Contract) PutNonceAddress(statedb StateDB, addr common.Addres...
    method GetNonceAddress (line 113) | func (c *Contract) GetNonceAddress(statedb StateDB, addr common.Contra...
    method AsDelegate (line 123) | func (c *Contract) AsDelegate() *Contract {
    method GetOp (line 135) | func (c *Contract) GetOp(n uint64) OpCode {
    method GetByte (line 140) | func (c *Contract) GetByte(n uint64) byte {
    method Caller (line 152) | func (c *Contract) Caller() common.Address {
    method UseGas (line 157) | func (c *Contract) UseGas(gas uint64) (ok bool) {
    method Address (line 166) | func (c *Contract) Address() common.Address {
    method Value (line 171) | func (c *Contract) Value() *big.Int {
    method Currency (line 180) | func (c *Contract) Currency() string {
    method SetCode (line 189) | func (c *Contract) SetCode(hash common.Hash, code []byte) {
    method SetCallCode (line 196) | func (c *Contract) SetCallCode(addr *common.Address, hash common.Hash,...
  function NewContract (line 77) | func NewContract(caller ContractRef, object ContractRef, asset *assets.A...

FILE: core/vm/evm.go
  type CanTransferFunc (line 38) | type CanTransferFunc
  type TransferFunc (line 40) | type TransferFunc
  type GetHashFunc (line 43) | type GetHashFunc
  function run (line 47) | func run(evm *EVM, contract *Contract, input []byte) ([]byte, error) {
  type Context (line 66) | type Context struct
  type EVM (line 97) | type EVM struct
    method Cancel (line 145) | func (evm *EVM) Cancel() {
    method Interpreter (line 150) | func (evm *EVM) Interpreter() Interpreter {
    method Call (line 158) | func (evm *EVM) Call(caller ContractRef, addr common.Address, input []...
    method CallCode (line 220) | func (evm *EVM) CallCode(caller ContractRef, addr common.Address, inpu...
    method DelegateCall (line 264) | func (evm *EVM) DelegateCall(caller ContractRef, addr common.Address, ...
    method StaticCall (line 301) | func (evm *EVM) StaticCall(caller ContractRef, addr common.Address, in...
    method create (line 367) | func (evm *EVM) create(caller ContractRef, code []byte, gas uint64, as...
    method Create (line 447) | func (evm *EVM) Create(caller ContractRef, code []byte, gas uint64, as...
    method ChainConfig (line 456) | func (evm *EVM) ChainConfig() *params.ChainConfig { return evm.chainCo...
  function NewEVM (line 127) | func NewEVM(ctx Context, statedb StateDB, chainConfig *params.ChainConfi...
  function loadAddress (line 345) | func loadAddress(evm *EVM, caller ContractRef, input []byte, contract *C...

FILE: core/vm/gas.go
  constant GasQuickStep (line 27) | GasQuickStep   uint64 = 2
  constant GasFastestStep (line 28) | GasFastestStep uint64 = 3
  constant GasFastStep (line 29) | GasFastStep    uint64 = 5
  constant GasMidStep (line 30) | GasMidStep     uint64 = 8
  constant GasSlowStep (line 31) | GasSlowStep    uint64 = 10
  constant GasExtStep (line 32) | GasExtStep     uint64 = 20
  constant GasReturn (line 34) | GasReturn       uint64 = 0
  constant GasStop (line 35) | GasStop         uint64 = 0
  constant GasContractByte (line 36) | GasContractByte uint64 = 200
  function callGas (line 43) | func callGas(gasTable params.GasTable, availableGas, base uint64, callCo...

FILE: core/vm/gas_table.go
  function memoryGasCost (line 30) | func memoryGasCost(mem *Memory, newMemSize uint64) (uint64, error) {
  function constGasFunc (line 63) | func constGasFunc(gas uint64) gasFunc {
  function gasCallDataCopy (line 69) | func gasCallDataCopy(gt params.GasTable, evm *EVM, contract *Contract, s...
  function gasReturnDataCopy (line 95) | func gasReturnDataCopy(gt params.GasTable, evm *EVM, contract *Contract,...
  function gasSStore (line 121) | func gasSStore(gt params.GasTable, evm *EVM, contract *Contract, stack *...
  function makeGasLog (line 148) | func makeGasLog(n uint64) gasFunc {
  function gasSha3 (line 208) | func gasSha3(gt params.GasTable, evm *EVM, contract *Contract, stack *St...
  function gasCodeCopy (line 232) | func gasCodeCopy(gt params.GasTable, evm *EVM, contract *Contract, stack...
  function gasExtCodeCopy (line 256) | func gasExtCodeCopy(gt params.GasTable, evm *EVM, contract *Contract, st...
  function gasExtCodeHash (line 282) | func gasExtCodeHash(gt params.GasTable, evm *EVM, contract *Contract, st...
  function gasMLoad (line 286) | func gasMLoad(gt params.GasTable, evm *EVM, contract *Contract, stack *S...
  function gasMStore8 (line 298) | func gasMStore8(gt params.GasTable, evm *EVM, contract *Contract, stack ...
  function gasMStore (line 310) | func gasMStore(gt params.GasTable, evm *EVM, contract *Contract, stack *...
  function gasCreate (line 322) | func gasCreate(gt params.GasTable, evm *EVM, contract *Contract, stack *...
  function gasCreate2 (line 334) | func gasCreate2(gt params.GasTable, evm *EVM, contract *Contract, stack ...
  function gasBalance (line 346) | func gasBalance(gt params.GasTable, evm *EVM, contract *Contract, stack ...
  function gasExtCodeSize (line 350) | func gasExtCodeSize(gt params.GasTable, evm *EVM, contract *Contract, st...
  function gasSLoad (line 354) | func gasSLoad(gt params.GasTable, evm *EVM, contract *Contract, stack *S...
  function gasExp (line 358) | func gasExp(gt params.GasTable, evm *EVM, contract *Contract, stack *Sta...
  function gasCall (line 371) | func gasCall(gt params.GasTable, evm *EVM, contract *Contract, stack *St...
  function gasCallCode (line 402) | func gasCallCode(gt params.GasTable, evm *EVM, contract *Contract, stack...
  function gasReturn (line 426) | func gasReturn(gt params.GasTable, evm *EVM, contract *Contract, stack *...
  function gasRevert (line 430) | func gasRevert(gt params.GasTable, evm *EVM, contract *Contract, stack *...
  function gasSuicide (line 434) | func gasSuicide(gt params.GasTable, evm *EVM, contract *Contract, stack ...
  function gasDelegateCall (line 442) | func gasDelegateCall(gt params.GasTable, evm *EVM, contract *Contract, s...
  function gasStaticCall (line 462) | func gasStaticCall(gt params.GasTable, evm *EVM, contract *Contract, sta...
  function gasPush (line 482) | func gasPush(gt params.GasTable, evm *EVM, contract *Contract, stack *St...
  function gasSwap (line 486) | func gasSwap(gt params.GasTable, evm *EVM, contract *Contract, stack *St...
  function gasDup (line 490) | func gasDup(gt params.GasTable, evm *EVM, contract *Contract, stack *Sta...

FILE: core/vm/gas_table_test.go
  function TestMemoryGasCost (line 21) | func TestMemoryGasCost(t *testing.T) {

FILE: core/vm/gen_structlog.go
  method MarshalJSON (line 16) | func (s StructLog) MarshalJSON() ([]byte, error) {
  method UnmarshalJSON (line 52) | func (s *StructLog) UnmarshalJSON(input []byte) error {

FILE: core/vm/instructions.go
  function opAdd (line 71) | func opAdd(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opSub (line 79) | func opSub(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opMul (line 87) | func opMul(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opDiv (line 96) | func opDiv(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opSdiv (line 107) | func opSdiv(pc *uint64, interpreter *EVMInterpreter, contract *Contract,...
  function opMod (line 126) | func opMod(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opSmod (line 137) | func opSmod(pc *uint64, interpreter *EVMInterpreter, contract *Contract,...
  function opExp (line 156) | func opExp(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opSignExtend (line 165) | func opSignExtend(pc *uint64, interpreter *EVMInterpreter, contract *Con...
  function opNot (line 185) | func opNot(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opLt (line 191) | func opLt(pc *uint64, interpreter *EVMInterpreter, contract *Contract, m...
  function opGt (line 202) | func opGt(pc *uint64, interpreter *EVMInterpreter, contract *Contract, m...
  function opSlt (line 213) | func opSlt(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opSgt (line 237) | func opSgt(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opEq (line 261) | func opEq(pc *uint64, interpreter *EVMInterpreter, contract *Contract, m...
  function opIszero (line 272) | func opIszero(pc *uint64, interpreter *EVMInterpreter, contract *Contrac...
  function opAnd (line 282) | func opAnd(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opOr (line 290) | func opOr(pc *uint64, interpreter *EVMInterpreter, contract *Contract, m...
  function opXor (line 298) | func opXor(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opByte (line 306) | func opByte(pc *uint64, interpreter *EVMInterpreter, contract *Contract,...
  function opAddmod (line 318) | func opAddmod(pc *uint64, interpreter *EVMInterpreter, contract *Contrac...
  function opMulmod (line 331) | func opMulmod(pc *uint64, interpreter *EVMInterpreter, contract *Contrac...
  function opSHL (line 347) | func opSHL(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opSHR (line 365) | func opSHR(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opSAR (line 383) | func opSAR(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opSha3 (line 404) | func opSha3(pc *uint64, interpreter *EVMInterpreter, contract *Contract,...
  function opAddress (line 419) | func opAddress(pc *uint64, interpreter *EVMInterpreter, contract *Contra...
  function opBalance (line 424) | func opBalance(pc *uint64, interpreter *EVMInterpreter, contract *Contra...
  function opOrigin (line 430) | func opOrigin(pc *uint64, interpreter *EVMInterpreter, contract *Contrac...
  function opCaller (line 435) | func opCaller(pc *uint64, interpreter *EVMInterpreter, contract *Contrac...
  function opCallValue (line 440) | func opCallValue(pc *uint64, interpreter *EVMInterpreter, contract *Cont...
  function opCallDataLoad (line 446) | func opCallDataLoad(pc *uint64, interpreter *EVMInterpreter, contract *C...
  function opCallDataSize (line 451) | func opCallDataSize(pc *uint64, interpreter *EVMInterpreter, contract *C...
  function opCallDataCopy (line 456) | func opCallDataCopy(pc *uint64, interpreter *EVMInterpreter, contract *C...
  function opReturnDataSize (line 468) | func opReturnDataSize(pc *uint64, interpreter *EVMInterpreter, contract ...
  function opReturnDataCopy (line 473) | func opReturnDataCopy(pc *uint64, interpreter *EVMInterpreter, contract ...
  function opExtCodeSize (line 491) | func opExtCodeSize(pc *uint64, interpreter *EVMInterpreter, contract *Co...
  function opCodeSize (line 498) | func opCodeSize(pc *uint64, interpreter *EVMInterpreter, contract *Contr...
  function opCodeCopy (line 505) | func opCodeCopy(pc *uint64, interpreter *EVMInterpreter, contract *Contr...
  function opExtCodeCopy (line 518) | func opExtCodeCopy(pc *uint64, interpreter *EVMInterpreter, contract *Co...
  function opExtCodeHash (line 558) | func opExtCodeHash(pc *uint64, interpreter *EVMInterpreter, contract *Co...
  function opGasprice (line 564) | func opGasprice(pc *uint64, interpreter *EVMInterpreter, contract *Contr...
  function opBlockhash (line 569) | func opBlockhash(pc *uint64, interpreter *EVMInterpreter, contract *Cont...
  function opCoinbase (line 582) | func opCoinbase(pc *uint64, interpreter *EVMInterpreter, contract *Contr...
  function opTimestamp (line 587) | func opTimestamp(pc *uint64, interpreter *EVMInterpreter, contract *Cont...
  function opNumber (line 592) | func opNumber(pc *uint64, interpreter *EVMInterpreter, contract *Contrac...
  function opDifficulty (line 597) | func opDifficulty(pc *uint64, interpreter *EVMInterpreter, contract *Con...
  function opGasLimit (line 602) | func opGasLimit(pc *uint64, interpreter *EVMInterpreter, contract *Contr...
  function opPop (line 607) | func opPop(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opMload (line 612) | func opMload(pc *uint64, interpreter *EVMInterpreter, contract *Contract...
  function opMstore (line 621) | func opMstore(pc *uint64, interpreter *EVMInterpreter, contract *Contrac...
  function opMstore8 (line 630) | func opMstore8(pc *uint64, interpreter *EVMInterpreter, contract *Contra...
  function opSload (line 637) | func opSload(pc *uint64, interpreter *EVMInterpreter, contract *Contract...
  function opSstore (line 644) | func opSstore(pc *uint64, interpreter *EVMInterpreter, contract *Contrac...
  function opJump (line 653) | func opJump(pc *uint64, interpreter *EVMInterpreter, contract *Contract,...
  function opJumpi (line 665) | func opJumpi(pc *uint64, interpreter *EVMInterpreter, contract *Contract...
  function opJumpdest (line 681) | func opJumpdest(pc *uint64, interpreter *EVMInterpreter, contract *Contr...
  function opPc (line 685) | func opPc(pc *uint64, interpreter *EVMInterpreter, contract *Contract, m...
  function opMsize (line 690) | func opMsize(pc *uint64, interpreter *EVMInterpreter, contract *Contract...
  function opGas (line 695) | func opGas(pc *uint64, interpreter *EVMInterpreter, contract *Contract, ...
  function opCall (line 700) | func opCall(pc *uint64, interpreter *EVMInterpreter, contract *Contract,...
  function opCallCode (line 748) | func opCallCode(pc *uint64, interpreter *EVMInterpreter, contract *Contr...
  function opDelegateCall (line 795) | func opDelegateCall(pc *uint64, interpreter *EVMInterpreter, contract *C...
  function opStaticCall (line 824) | func opStaticCall(pc *uint64, interpreter *EVMInterpreter, contract *Con...
  function opReturn (line 853) | func opReturn(pc *uint64, interpreter *EVMInterpreter, contract *Contrac...
  function opRevert (line 861) | func opRevert(pc *uint64, interpreter *EVMInterpreter, contract *Contrac...
  function opStop (line 869) | func opStop(pc *uint64, interpreter *EVMInterpreter, contract *Contract,...
  function opSuicide (line 873) | func opSuicide(pc *uint64, interpreter *EVMInterpreter, contract *Contra...
  function handleAllotTicket (line 879) | func handleAllotTicket(d []byte, evm *EVM, contract *Contract, mem []byt...
  function tokenFee (line 958) | func tokenFee(coinName string) *big.Int {
  function handleIssueToken (line 980) | func handleIssueToken(d []byte, evm *EVM, contract *Contract, mem []byte...
  function handleSend (line 1037) | func handleSend(d []byte, evm *EVM, contract *Contract, mem []byte) ([]b...
  function makeLog (line 1107) | func makeLog(size int) executionFunc {
  function setCallValues (line 1296) | func setCallValues(d []byte, data []byte, contract *Contract) {
  function makePush (line 1333) | func makePush(size uint64, pushByteSize int) executionFunc {
  function makeDup (line 1356) | func makeDup(size int64) executionFunc {
  function makeSwap (line 1364) | func makeSwap(size int64) executionFunc {

FILE: core/vm/instructions_test.go
  type twoOperandTest (line 27) | type twoOperandTest struct
  function testTwoOperandOp (line 33) | func testTwoOperandOp(t *testing.T, tests []twoOperandTest, opFn func(pc...
  function TestByteOp (line 74) | func TestByteOp(t *testing.T) {
  function TestSHL (line 112) | func TestSHL(t *testing.T) {
  function TestSHR (line 130) | func TestSHR(t *testing.T) {
  function TestSAR (line 148) | func TestSAR(t *testing.T) {
  function TestSGT (line 172) | func TestSGT(t *testing.T) {
  function TestSLT (line 191) | func TestSLT(t *testing.T) {
  function opBenchmark (line 209) | func opBenchmark(bench *testing.B, op func(pc *uint64, interpreter *EVMI...
  function BenchmarkOpAdd64 (line 236) | func BenchmarkOpAdd64(b *testing.B) {
  function BenchmarkOpAdd128 (line 243) | func BenchmarkOpAdd128(b *testing.B) {
  function BenchmarkOpAdd256 (line 250) | func BenchmarkOpAdd256(b *testing.B) {
  function BenchmarkOpSub64 (line 257) | func BenchmarkOpSub64(b *testing.B) {
  function BenchmarkOpSub128 (line 264) | func BenchmarkOpSub128(b *testing.B) {
  function BenchmarkOpSub256 (line 271) | func BenchmarkOpSub256(b *testing.B) {
  function BenchmarkOpMul (line 278) | func BenchmarkOpMul(b *testing.B) {
  function BenchmarkOpDiv256 (line 285) | func BenchmarkOpDiv256(b *testing.B) {
  function BenchmarkOpDiv128 (line 291) | func BenchmarkOpDiv128(b *testing.B) {
  function BenchmarkOpDiv64 (line 297) | func BenchmarkOpDiv64(b *testing.B) {
  function BenchmarkOpSdiv (line 303) | func BenchmarkOpSdiv(b *testing.B) {
  function BenchmarkOpMod (line 310) | func BenchmarkOpMod(b *testing.B) {
  function BenchmarkOpSmod (line 317) | func BenchmarkOpSmod(b *testing.B) {
  function BenchmarkOpExp (line 324) | func BenchmarkOpExp(b *testing.B) {
  function BenchmarkOpSignExtend (line 331) | func BenchmarkOpSignExtend(b *testing.B) {
  function BenchmarkOpLt (line 338) | func BenchmarkOpLt(b *testing.B) {
  function BenchmarkOpGt (line 345) | func BenchmarkOpGt(b *testing.B) {
  function BenchmarkOpSlt (line 352) | func BenchmarkOpSlt(b *testing.B) {
  function BenchmarkOpSgt (line 359) | func BenchmarkOpSgt(b *testing.B) {
  function BenchmarkOpEq (line 366) | func BenchmarkOpEq(b *testing.B) {
  function BenchmarkOpEq2 (line 372) | func BenchmarkOpEq2(b *testing.B) {
  function BenchmarkOpAnd (line 377) | func BenchmarkOpAnd(b *testing.B) {
  function BenchmarkOpOr (line 384) | func BenchmarkOpOr(b *testing.B) {
  function BenchmarkOpXor (line 391) | func BenchmarkOpXor(b *testing.B) {
  function BenchmarkOpByte (line 398) | func BenchmarkOpByte(b *testing.B) {
  function BenchmarkOpAddmod (line 405) | func BenchmarkOpAddmod(b *testing.B) {
  function BenchmarkOpMulmod (line 413) | func BenchmarkOpMulmod(b *testing.B) {
  function BenchmarkOpSHL (line 421) | func BenchmarkOpSHL(b *testing.B) {
  function BenchmarkOpSHR (line 427) | func BenchmarkOpSHR(b *testing.B) {
  function BenchmarkOpSAR (line 433) | func Benchmark
Copy disabled (too large) Download .json
Condensed preview — 2342 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (34,537K chars).
[
  {
    "path": ".gitignore",
    "chars": 1090,
    "preview": "git# See http://help.github.com/ignore-files/ for more about ignoring files.\n#\n# If you find yourself ignoring temporary"
  },
  {
    "path": "AUTHORS",
    "chars": 6473,
    "preview": "# This is the official list of go-ethereum authors for copyright purposes.\n\nAfri Schoedon <5chdn@users.noreply.github.co"
  },
  {
    "path": "AUTHORS.SERO",
    "chars": 105,
    "preview": "# This is the official list of go-sero authors for copyright purposes.\n\nGordon.T <gordon-sero@sero.vip>\n\n"
  },
  {
    "path": "COPYING",
    "chars": 32397,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2014 The g"
  },
  {
    "path": "COPYING.LESSER",
    "chars": 7651,
    "preview": "                   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007"
  },
  {
    "path": "Dockerfile",
    "chars": 423,
    "preview": "# Build Geth in a stock Go builder container\nFROM golang:1.10-alpine as builder\n\nRUN apk add --no-cache make gcc musl-de"
  },
  {
    "path": "LICENSE.SERO",
    "chars": 32477,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2018 The s"
  },
  {
    "path": "LICENSE.SERO.LESSER",
    "chars": 7650,
    "preview": "                   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007"
  },
  {
    "path": "Makefile",
    "chars": 4165,
    "preview": "# This Makefile is meant to be used by people that do not usually work\n# with Go source code. If you know what GOPATH is"
  },
  {
    "path": "README.md",
    "chars": 3338,
    "preview": "# Go Sero\n\nThe SERO system is the world's first blockchain platform to support confidential transactions based on Zero-kn"
  },
  {
    "path": "accounts/abi/abi.go",
    "chars": 9104,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/abi_test.go",
    "chars": 35132,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/argument.go",
    "chars": 10164,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/bind/auth.go",
    "chars": 2751,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/bind/backend.go",
    "chars": 5444,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/bind/base.go",
    "chars": 13374,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/bind/bind.go",
    "chars": 19825,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/bind/template.go",
    "chars": 26192,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/bind/topics.go",
    "chars": 7621,
    "preview": "// Copyright 2018 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/bind/util.go",
    "chars": 2538,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/doc.go",
    "chars": 1227,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/error.go",
    "chars": 2697,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/event.go",
    "chars": 3106,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/method.go",
    "chars": 5717,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/numbers.go",
    "chars": 1466,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/pack.go",
    "chars": 3027,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/reflect.go",
    "chars": 7534,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/type.go",
    "chars": 13005,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/abi/unpack.go",
    "chars": 10106,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/accounts.go",
    "chars": 6818,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/errors.go",
    "chars": 2557,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/hd.go",
    "chars": 5142,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/keystore/account_cache.go",
    "chars": 9786,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/keystore/account_cache_test.go",
    "chars": 15017,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/keystore/file_cache.go",
    "chars": 3157,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/keystore/key.go",
    "chars": 6082,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/keystore/keystore.go",
    "chars": 16562,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/keystore/keystore_passphrase.go",
    "chars": 9107,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/keystore/keystore_passphrase_test.go",
    "chars": 2034,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/keystore/keystore_test.go",
    "chars": 9003,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/keystore/keystore_wallet.go",
    "chars": 4631,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/keystore/presale.go",
    "chars": 1175,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/keystore/testdata/dupes/1",
    "chars": 487,
    "preview": "{\"address\":\"f466859ead1932d743d622cb74fc058882e8648a\",\"crypto\":{\"cipher\":\"aes-128-ctr\",\"ciphertext\":\"cb664472deacb41a2e9"
  },
  {
    "path": "accounts/keystore/testdata/dupes/2",
    "chars": 487,
    "preview": "{\"address\":\"f466859ead1932d743d622cb74fc058882e8648a\",\"crypto\":{\"cipher\":\"aes-128-ctr\",\"ciphertext\":\"cb664472deacb41a2e9"
  },
  {
    "path": "accounts/keystore/testdata/dupes/foo",
    "chars": 487,
    "preview": "{\"address\":\"7ef5a6135f1fd6a02593eedc869c6d41d934aef8\",\"crypto\":{\"cipher\":\"aes-128-ctr\",\"ciphertext\":\"1d0839166e7a15b9c13"
  },
  {
    "path": "accounts/keystore/testdata/keystore/.hiddenfile",
    "chars": 488,
    "preview": "{\"address\":\"f466859ead1932d743d622cb74fc058882e8648a\",\"crypto\":{\"cipher\":\"aes-128-ctr\",\"ciphertext\":\"cb664472deacb41a2e9"
  },
  {
    "path": "accounts/keystore/testdata/keystore/README",
    "chars": 829,
    "preview": "This directory contains accounts for testing.\nThe passphrase that unlocks them is \"foobar\".\n\nThe \"good\" key files which "
  },
  {
    "path": "accounts/keystore/testdata/keystore/UTC--2018-08-11T10-19-38.165083119Z--64t1MPxFp4yzxNJ64zp1NmrTXWsrLuw9DMiMZeujbD2HVAKhjR3zpKnuFVjjAXAp86G2PzSVSsdiMdwp5JPoqxtP",
    "chars": 635,
    "preview": "{\"address\":\"64t1MPxFp4yzxNJ64zp1NmrTXWsrLuw9DMiMZeujbD2HVAKhjR3zpKnuFVjjAXAp86G2PzSVSsdiMdwp5JPoqxtP\",\"tk\":\"48rGJTGEeQKi"
  },
  {
    "path": "accounts/keystore/testdata/keystore/aaa",
    "chars": 635,
    "preview": "{\"address\":\"4raP8fYEznZDD9WXc8pvS2tMg992iZiWXssvwhCrXTFEhafcRt8urTeDyANfTrtXpJjnfz65cbYvr7g5WauAJgdc\",\"tk\":\"5W5KsFo2di2k"
  },
  {
    "path": "accounts/keystore/testdata/keystore/empty",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "accounts/keystore/testdata/keystore/foo/fd9bd350f08ee3c0c19b85a8e16114a11a60aa4e",
    "chars": 489,
    "preview": "{\"address\":\"fd9bd350f08ee3c0c19b85a8e16114a11a60aa4e\",\"crypto\":{\"cipher\":\"aes-128-ctr\",\"ciphertext\":\"8124d5134aa4a927c79"
  },
  {
    "path": "accounts/keystore/testdata/keystore/no-address",
    "chars": 434,
    "preview": "{\"crypto\":{\"cipher\":\"aes-128-ctr\",\"ciphertext\":\"cb664472deacb41a2e995fa7f96fe29ce744471deb8d146a0e43c7898c9ddd4d\",\"ciphe"
  },
  {
    "path": "accounts/keystore/testdata/keystore/zero",
    "chars": 611,
    "preview": "{\"address\":\"1111111111111111111111111111111111111111111111111111111111111111\",\"tk\":\"5Q8MbCF5x21sF5RWx83iDdds8gqFgxq8t34E"
  },
  {
    "path": "accounts/keystore/testdata/keystore/zzz",
    "chars": 634,
    "preview": "{\"address\":\"3Fov1AdSTVSTEWTEGfbknRrmHxBCoZ6AktyJA4jGFytHu7xDWEYysnR9YkwkKj5Knzttc6tNw4ENY4JZiirrksYw\",\"tk\":\"fLFiBSN8Jojj"
  },
  {
    "path": "accounts/keystore/testdata/v1/cb61d5a9c4896fb9658090b597ef0e7be6f7b67e/cb61d5a9c4896fb9658090b597ef0e7be6f7b67e",
    "chars": 539,
    "preview": "{\"address\":\"cb61d5a9c4896fb9658090b597ef0e7be6f7b67e\",\"Crypto\":{\"cipher\":\"aes-128-cbc\",\"ciphertext\":\"6143d3192db8b66eabd"
  },
  {
    "path": "accounts/keystore/testdata/v1_test_vector.json",
    "chars": 1060,
    "preview": "{\n    \"test1\": {\n        \"json\": {\n            \"Crypto\": {\n                \"cipher\": \"aes-128-cbc\",\n                \"cip"
  },
  {
    "path": "accounts/keystore/testdata/v3_test_vector.json",
    "chars": 3804,
    "preview": "{\n    \"wikipage_test_vector_scrypt\": {\n        \"json\": {\n            \"crypto\" : {\n                \"cipher\" : \"aes-128-ct"
  },
  {
    "path": "accounts/keystore/testdata/very-light-scrypt.json",
    "chars": 635,
    "preview": "{\"address\":\"4oGNhAf3JRE1an7TPvKcxpfqHMY7rW6y1fupGcsn8krhWeUEAThkY4QsjHZqqacjMAENDE15tsXmdfsJvdeFVJDA\",\"tk\":\"2TibsX8aZMjC"
  },
  {
    "path": "accounts/keystore/watch.go",
    "chars": 2722,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/keystore/watch_fallback.go",
    "chars": 1177,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/manager.go",
    "chars": 6541,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/url.go",
    "chars": 3047,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "accounts/url_test.go",
    "chars": 2782,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "appveyor.yml",
    "chars": 1110,
    "preview": "os: Visual Studio 2015\n\n# Clone directly into GOPATH.\nclone_folder: C:\\gopath\\src\\github.com\\ethereum\\go-ethereum\nclone_"
  },
  {
    "path": "build/RPMINSTALL.md",
    "chars": 1107,
    "preview": "#  go-sero RPM package generate and installation/uninstallation\n\n## centos 7\n\nfrom the cloned resource github/sero-cash/"
  },
  {
    "path": "build/ci-notes.md",
    "chars": 1923,
    "preview": "# Debian Packaging\n\nTagged releases and develop branch commits are available as installable Debian packages\nfor Ubuntu. "
  },
  {
    "path": "build/ci.go",
    "chars": 25401,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "build/clean_go_build_cache.sh",
    "chars": 548,
    "preview": "#!/bin/sh\n\n# Cleaning the Go cache only makes sense if we actually have Go installed... or\n# if Go is actually callable."
  },
  {
    "path": "build/env.sh",
    "chars": 953,
    "preview": "#!/bin/sh\nset -e\n\nif [ ! -f \"build/env.sh\" ]; then\n    echo \"$0 must be run from the root of the repository.\"\n    exit 2"
  },
  {
    "path": "build/gero.conf",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "build/gero.spec",
    "chars": 1271,
    "preview": "# Don't try fancy stuff like debuginfo, which is useless on binary-only\n# packages. Don't strip binary too\n# Be sure bui"
  },
  {
    "path": "build/geropkg/attach.bat",
    "chars": 129,
    "preview": "@echo off \nset CURRENT=%cd%\nset LIB_PATH=%CURRENT%\\czero\\lib\nset path=%LIB_PATH%\nstart /b bin\\gero.exe attach \\\\.\\pipe\\g"
  },
  {
    "path": "build/geropkg/attach.sh",
    "chars": 187,
    "preview": "#!/bin/sh\n\nDATADIR=\"./data\"\nif [ ! -z \"$1\" ]; then\n    DATADIR=$1\nfi\n\nexport DYLD_LIBRARY_PATH=\"./czero/lib/\"\nexport LD_"
  },
  {
    "path": "build/geropkg/clean.sh",
    "chars": 490,
    "preview": "#!/bin/sh\n\nROOT=$(cd `dirname $0`; pwd)\n\nDATADIR=\"${ROOT}/data\"\nif [ ! -z \"$1\" ]; then\n    DATADIR=$1\nfi\n\nsh ${ROOT}/sto"
  },
  {
    "path": "build/geropkg/geroConfig.toml",
    "chars": 19084,
    "preview": "[Sero]\n  [Node]\n\n  #KeyStoreDir=\"./data/keystore\"\n\n  [Node.P2P]\n\n  MaxPeers = 25\n\n  StaticNodes = [\"snode://4915b0bf7980"
  },
  {
    "path": "build/geropkg/startup.bat",
    "chars": 326,
    "preview": "@echo off \nset CURRENT=%cd%\nset LIB_PATH=%CURRENT%\\czero\\lib\nset path=%LIB_PATH%\nset DATADIR=\nset KEYSTORE=\nset d=%1\nif "
  },
  {
    "path": "build/geropkg/startup.sh",
    "chars": 1451,
    "preview": "#!/bin/sh\nshow_usage=\"args: [-d ,-k, -p, -n,-r,-h]\\\n                                  [--datadir=,--keystore=, --port=, "
  },
  {
    "path": "build/geropkg/startupEx.sh",
    "chars": 662,
    "preview": "#!/bin/sh\n\nexport DYLD_LIBRARY_PATH=\"./czero/lib/\"\n\nexport LD_LIBRARY_PATH=\"./czero/lib/\"\n\nDEFAULT_DATD_DIR=\"./data\"\n\nLO"
  },
  {
    "path": "build/geropkg/startupVoter.bat",
    "chars": 525,
    "preview": "@echo off \nset CURRENT=%cd%\nset LIB_PATH=%CURRENT%\\czero\\lib\nset path=%LIB_PATH%\nset DATADIR=\nset KEYSTORE=\nset VOTER=\ns"
  },
  {
    "path": "build/geropkg/startupVoter.sh",
    "chars": 1287,
    "preview": "#!/bin/sh\nshow_usage=\"args: [-d ,-k, -p, -n,-r,-h]\\\n                                  [--datadir=,--keystore=, --port=, "
  },
  {
    "path": "build/geropkg/stop.sh",
    "chars": 74,
    "preview": "#!/bin/sh\n\nif [ -f \"pid\" ];then\n    kill -INT `cat pid`\n    rm -rf pid\nfi\n"
  },
  {
    "path": "build/goimports.sh",
    "chars": 362,
    "preview": "#!/bin/sh\n\nfind_files() {\n  find . ! \\( \\\n      \\( \\\n        -path '.github' \\\n        -o -path './build/_workspace' \\\n "
  },
  {
    "path": "build/install.sh",
    "chars": 138,
    "preview": "#! /bin/sh\n\n_GOPATH=`cd ../../../../../;pwd`\n\nexport GOPATH=$_GOPATH\necho $GOPATH\n\ngo install -v ../cmd/gero\ngo install "
  },
  {
    "path": "build/pod.podspec",
    "chars": 810,
    "preview": "Pod::Spec.new do |spec|\n  spec.name         = 'Geth'\n  spec.version      = '{{.Version}}'\n  spec.license      = { :type "
  },
  {
    "path": "build/update-license.go",
    "chars": 9317,
    "preview": "// +build none\n\n/*\nThis command generates GPL license headers on top of all source files.\nYou can run it once per month,"
  },
  {
    "path": "circle.yml",
    "chars": 1544,
    "preview": "machine:\n  services:\n    - docker\n\ndependencies:\n  cache_directories:\n    - \"~/.ethash\" # Cache the ethash DAG generated"
  },
  {
    "path": "cmd/abigen/main.go",
    "chars": 6971,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/bootnode/main.go",
    "chars": 4285,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/gero/accountcmd.go",
    "chars": 10334,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/gero/bugcmd.go",
    "chars": 3211,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/gero/chaincmd.go",
    "chars": 14029,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/gero/config.go",
    "chars": 4413,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/gero/consolecmd.go",
    "chars": 7001,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/gero/main.go",
    "chars": 14013,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/gero/misccmd.go",
    "chars": 4327,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/gero/monitorcmd.go",
    "chars": 11341,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/gero/snapshotcmd.go",
    "chars": 992,
    "preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/sero-cash/go-sero/cmd/utils\"\n\t\"github.com/sero-cash/go-sero/zero/snapshot\"\n\t\""
  },
  {
    "path": "cmd/gero/testdata/empty.js",
    "chars": 1,
    "preview": "\n"
  },
  {
    "path": "cmd/gero/testdata/guswallet.json",
    "chars": 361,
    "preview": "{\n  \"encseed\": \"26d87f5f2bf9835f9a47eefae571bc09f9107bb13d54ff12a4ec095d01f83897494cf34f7bed2ed34126ecba9db7b62de56c9d7c"
  },
  {
    "path": "cmd/gero/testdata/passwords.txt",
    "chars": 21,
    "preview": "foobar\nfoobar\nfoobar\n"
  },
  {
    "path": "cmd/gero/testdata/wrong-passwords.txt",
    "chars": 18,
    "preview": "wrong\nwrong\nwrong\n"
  },
  {
    "path": "cmd/gero/usage.go",
    "chars": 8078,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/internal/browser/browser.go",
    "chars": 1110,
    "preview": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
  },
  {
    "path": "cmd/proofnode/main.go",
    "chars": 2929,
    "preview": "package main\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"runtime\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/btcsuite/btcutil/base58\"\n"
  },
  {
    "path": "cmd/tx/confirm.go",
    "chars": 2161,
    "preview": "package main\n\nimport (\n\t\"bufio\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/sero-cash/go-sero/zero/txtool/gen"
  },
  {
    "path": "cmd/tx/dec.go",
    "chars": 1495,
    "preview": "package main\n\nimport (\n\t\"bufio\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/sero-cash/go-czero-import/c_type\""
  },
  {
    "path": "cmd/tx/main.go",
    "chars": 1924,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/tx/sign.go",
    "chars": 1550,
    "preview": "package main\n\nimport (\n\t\"bufio\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/sero-cash/go-czero-import/c_type\""
  },
  {
    "path": "cmd/utils/cmd.go",
    "chars": 8555,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/utils/customflags.go",
    "chars": 5561,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "cmd/utils/flags.go",
    "chars": 48357,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of go-ethereum.\n//\n// go-ethereum is free software: you c"
  },
  {
    "path": "common/address/account_types.go",
    "chars": 6268,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/big.go",
    "chars": 1043,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/bitutil/bitutil.go",
    "chars": 4447,
    "preview": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
  },
  {
    "path": "common/bitutil/bitutil_test.go",
    "chars": 5871,
    "preview": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
  },
  {
    "path": "common/bitutil/compress.go",
    "chars": 5752,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/bitutil/compress_fuzz.go",
    "chars": 1686,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/bitutil/compress_test.go",
    "chars": 7838,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/bytes.go",
    "chars": 3428,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/bytes_test.go",
    "chars": 2685,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/compiler/helpers.go",
    "chars": 2460,
    "preview": "// Copyright 2019 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/compiler/solidity.go",
    "chars": 5839,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/compiler/solidity_test.go",
    "chars": 2033,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/debug.go",
    "chars": 1668,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/fdlimit/fdlimit_freebsd.go",
    "chars": 2076,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/fdlimit/fdlimit_unix.go",
    "chars": 1951,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/fdlimit/fdlimit_windows.go",
    "chars": 1840,
    "preview": "// Copyright 2018 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/format.go",
    "chars": 2552,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/hexutil/abi_string.go",
    "chars": 830,
    "preview": "package hexutil\n\ntype Uint8 uint8\n\nfunc (b *Uint8) UnmarshalText(input []byte) error {\n\tvar u64 Uint64\n\terr := u64.Unmar"
  },
  {
    "path": "common/hexutil/hexutil.go",
    "chars": 6069,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/hexutil/hexutil_test.go",
    "chars": 6038,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/hexutil/json.go",
    "chars": 8988,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/hexutil/json_test.go",
    "chars": 11827,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/math/big.go",
    "chars": 5569,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/math/big_test.go",
    "chars": 9968,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/math/integer.go",
    "chars": 2830,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/math/integer_test.go",
    "chars": 2908,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/mclock/mclock.go",
    "chars": 1119,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/path.go",
    "chars": 1574,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/size.go",
    "chars": 1528,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/size_test.go",
    "chars": 1163,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/test_utils.go",
    "chars": 1605,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "common/types.go",
    "chars": 10945,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "consensus/consensus.go",
    "chars": 4441,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "consensus/errors.go",
    "chars": 1494,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "consensus/ethash/algorithm.go",
    "chars": 62228,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "consensus/ethash/algorithm_test.go",
    "chars": 82313,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "consensus/ethash/consensus.go",
    "chars": 245552,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "consensus/ethash/consensus_test.go",
    "chars": 9702,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "consensus/ethash/ethash.go",
    "chars": 19809,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "consensus/ethash/ethash_test.go",
    "chars": 2400,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "consensus/ethash/progpow.go",
    "chars": 13238,
    "preview": "package ethash\n\nimport (\n\t\"encoding/binary\"\n\t\"time\"\n\n\t\"github.com/sero-cash/go-sero/common\"\n\t\"github.com/sero-cash/go-se"
  },
  {
    "path": "consensus/ethash/progpow_test.go",
    "chars": 1095,
    "preview": "package ethash\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/sero-cash/go-sero/common/hexutil\"\n)\n\nfunc TestProgpow(t *testin"
  },
  {
    "path": "consensus/ethash/sealer.go",
    "chars": 5361,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "consensus/ethash_hash/blake2b.c",
    "chars": 8781,
    "preview": "#ifndef __BLAKE2B_C_\n#define __BLAKE2B_C_\n\n#include <stdint.h>\n#include <stdlib.h>\n#include <string.h>\n\n#include \"xxenc."
  },
  {
    "path": "consensus/ethash_hash/hash_c.go",
    "chars": 1014,
    "preview": "package ethash_hash\n\n/*\n -mno-stack-arg-probe disables stack probing which avoids the function\n __chkstk_ms being linked"
  },
  {
    "path": "consensus/ethash_hash/hash_c_test.go",
    "chars": 263,
    "preview": "package ethash_hash\n\nimport (\n\t\"fmt\"\n\t\"testing\"\n\n\t\"github.com/sero-cash/go-czero-import/c_type\"\n\t\"github.com/sero-cash/g"
  },
  {
    "path": "consensus/ethash_hash/xxenc.c",
    "chars": 7159,
    "preview": "/* $OpenBSD: chacha.h,v 1.4 2016/08/27 04:04:56 guenther Exp $ */\n\n/*\nchacha-merged.c version 20080118\nD. J. Bernstein\nP"
  },
  {
    "path": "console/bridge.go",
    "chars": 19566,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "console/console.go",
    "chars": 17582,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "console/console_test.go",
    "chars": 10632,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "console/prompter.go",
    "chars": 6292,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "console/testdata/exec.js",
    "chars": 37,
    "preview": "var execed = \"some-executed-string\";\n"
  },
  {
    "path": "console/testdata/preload.js",
    "chars": 41,
    "preview": "var preloaded = \"some-preloaded-string\";\n"
  },
  {
    "path": "containers/docker/gero-ubuntu/Dockerfile",
    "chars": 549,
    "preview": "FROM ubuntu:xenial\nENV LD_LIBRARY_PATH=/geropkg/czero/lib\nCOPY rungero.docker /usr/local/bin/rungero\nCOPY geroConfig.tom"
  },
  {
    "path": "containers/docker/gero-ubuntu/Makefile",
    "chars": 506,
    "preview": "#please read rungero.docker script,you can add startup params\n#when you start gero with docker please add -v save the da"
  },
  {
    "path": "containers/docker/gero-ubuntu/geroConfig.toml",
    "chars": 7643,
    "preview": "[Sero]\n  [Node]\n\n  #KeyStoreDir=\"./data/keystore\"\n\n  [Node.P2P]\n\n  MaxPeers = 1024\n\n  StaticNodes = [\"snode://04283d01ed"
  },
  {
    "path": "containers/docker/gero-ubuntu/rungero.docker",
    "chars": 369,
    "preview": "#!/bin/bash\nmkdir -p /log\ncurrent=`date \"+%Y-%m-%d\"`\nlogName=\"gero_$current.log\"\n\n/gero --config /usr/local/bin/geroConf"
  },
  {
    "path": "core/.gitignore",
    "chars": 336,
    "preview": "# See http://help.github.com/ignore-files/ for more about ignoring files.\n#\n# If you find yourself ignoring temporary fi"
  },
  {
    "path": "core/asm/asm.go",
    "chars": 3622,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/asm/compiler.go",
    "chars": 6687,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/asm/lexer.go",
    "chars": 7200,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/block_validator.go",
    "chars": 4492,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/block_validator_test.go",
    "chars": 7256,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/blockchain.go",
    "chars": 61820,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/bloombits/doc.go",
    "chars": 879,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/bloombits/generator.go",
    "chars": 3197,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/bloombits/generator_test.go",
    "chars": 1980,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/bloombits/matcher.go",
    "chars": 20205,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/bloombits/scheduler.go",
    "chars": 5691,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/bloombits/scheduler_test.go",
    "chars": 3299,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/chain_indexer.go",
    "chars": 15027,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/chain_indexer_test.go",
    "chars": 7308,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/chain_makers.go",
    "chars": 8029,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/error.go",
    "chars": 1469,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/events.go",
    "chars": 1787,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/evm.go",
    "chars": 5037,
    "preview": "// Copyright 2016 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/gaspool.go",
    "chars": 1667,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/gen_genesis.go",
    "chars": 4139,
    "preview": "// Code generated by github.com/fjl/gencodec. DO NOT EDIT.\n\npackage core\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"math/big"
  },
  {
    "path": "core/gen_genesis_account.go",
    "chars": 1880,
    "preview": "// Code generated by github.com/fjl/gencodec. DO NOT EDIT.\n\npackage core\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"math/big"
  },
  {
    "path": "core/genesis.go",
    "chars": 13772,
    "preview": "// Copyright 2014 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/headerchain.go",
    "chars": 17322,
    "preview": "// Copyright 2015 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/mkalloc.go",
    "chars": 2320,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/rawdb/accessors_chain.go",
    "chars": 12954,
    "preview": "// Copyright 2018 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/rawdb/accessors_chain_test.go",
    "chars": 12200,
    "preview": "// Copyright 2018 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/rawdb/accessors_indexes.go",
    "chars": 4333,
    "preview": "// Copyright 2018 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/rawdb/accessors_metadata.go",
    "chars": 3031,
    "preview": "// Copyright 2018 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/rawdb/interfaces.go",
    "chars": 1244,
    "preview": "// Copyright 2018 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/rawdb/schema.go",
    "chars": 5572,
    "preview": "// Copyright 2018 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  },
  {
    "path": "core/state/database.go",
    "chars": 5290,
    "preview": "// Copyright 2017 The go-ethereum Authors\n// This file is part of the go-ethereum library.\n//\n// The go-ethereum library"
  }
]

// ... and 2142 more files (download for full content)

About this extraction

This page contains the full source code of the sero-cash/go-sero GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2342 files (49.1 MB), approximately 8.2M tokens, and a symbol index with 96173 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!