diff --git a/.gitignore b/.gitignore index 53c0e8ac65f..a3d0a3c9bd1 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,6 @@ parity-clib-examples/cpp/build/ .vscode rls/ /parity.* + +# cargo remote artifacts +remote-target diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d8ed96f22e0..2f2a3c3e0b4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,16 +5,15 @@ stages: - optional image: ${REGISTRY}/parity-ci-linux:latest + variables: GIT_STRATEGY: fetch GIT_SUBMODULE_STRATEGY: recursive CI_SERVER_NAME: "GitLab CI" CARGO_HOME: "/ci-cache/${CI_PROJECT_NAME}/cargo/${CI_JOB_NAME}" - SCCACHE_DIR: "/ci-cache/${CI_PROJECT_NAME}/sccache" CARGO_TARGET: x86_64-unknown-linux-gnu REGISTRY: registry.parity.io/parity/infrastructure/scripts - .releaseable_branches: # list of git refs for building GitLab artifacts (think "pre-release binaries") only: &releaseable_branches - stable @@ -38,22 +37,6 @@ variables: before_script: - rustup show - cargo --version - - SCCACHE_ERROR_LOG=/builds/parity/parity-ethereum/sccache_debug.log - RUST_LOG=sccache=debug - sccache --start-server - - sccache -s - after_script: - # sccache debug info - - if test -e sccache_debug.log; - then - echo "_____All crate-types:_____"; - grep 'parse_arguments.*--crate-type' sccache_debug.log | sed -re 's/.*"--crate-type", "([^"]+)".*/\1/' | sort | uniq -c; - echo "_____Non-cacheable reasons:_____"; - grep CannotCache sccache_debug.log | sed -re 's/.*CannotCache\((.+)\).*/\1/' | sort | uniq -c; - else - echo "_____No logs from sccache_____"; - exit 0; - fi tags: - linux-docker @@ -63,7 +46,6 @@ variables: <<: *collect_artifacts script: - scripts/gitlab/build-linux.sh - - sccache -s after_script: - mkdir -p tools - cp -r scripts/docker/hub/* ./tools @@ -81,20 +63,41 @@ cargo-check 0 3: <<: *docker-cache-status script: - time cargo check --target $CARGO_TARGET --locked --no-default-features --verbose --color=always - - sccache -s + - sccache --stop-server cargo-check 1 3: stage: test <<: *docker-cache-status script: - time cargo check --target $CARGO_TARGET --locked --manifest-path util/io/Cargo.toml --no-default-features --verbose --color=always - - sccache -s + - sccache --stop-server cargo-check 2 3: stage: test <<: *docker-cache-status script: - time cargo check --target $CARGO_TARGET --locked --manifest-path util/io/Cargo.toml --features "mio" --verbose --color=always + - sccache --stop-server + +cargo-check-evmbin: + stage: test + <<: *docker-cache-status + script: + - time cargo check -p evmbin --target $CARGO_TARGET --locked --verbose --color=always + - sccache -s + +cargo-check-evmbin: + stage: test + <<: *docker-cache-status + script: + - time cargo check -p evmbin --target $CARGO_TARGET --locked --verbose --color=always + - sccache -s + +cargo-check-benches: + stage: test + <<: *docker-cache-status + script: + - time cargo check --all --benches --target $CARGO_TARGET --locked --verbose --color=always - sccache -s cargo-audit: @@ -109,21 +112,18 @@ validate-chainspecs: <<: *docker-cache-status script: - ./scripts/gitlab/validate-chainspecs.sh - - sccache -s test-cpp: stage: build <<: *docker-cache-status script: - ./scripts/gitlab/test-cpp.sh - - sccache -s test-linux: stage: build <<: *docker-cache-status script: - ./scripts/gitlab/test-linux.sh stable - - sccache -s test-linux-beta: stage: build @@ -131,7 +131,6 @@ test-linux-beta: <<: *docker-cache-status script: - ./scripts/gitlab/test-linux.sh beta - - sccache -s test-linux-nightly: stage: build @@ -139,7 +138,6 @@ test-linux-nightly: <<: *docker-cache-status script: - ./scripts/gitlab/test-linux.sh nightly - - sccache -s allow_failure: true build-android: @@ -150,7 +148,7 @@ build-android: build-linux: <<: *build-on-linux - # only: *releaseable_branches + only: *releaseable_branches build-linux-i386: <<: *build-on-linux @@ -220,7 +218,7 @@ publish-docker: DOCKER_DRIVER: overlay2 GIT_STRATEGY: none # DOCKERFILE: tools/Dockerfile - # CONTAINER_IMAGE: parity/parity + # CONTAINER_IMAGE: parity/parity script: - ./tools/publish-docker.sh tags: @@ -336,7 +334,7 @@ publish-release-awss3-nightly: &publish-release-awss3 - linux-docker publish-release-awss3-manually: - <<: *publish-release-awss3 + <<: *publish-release-awss3 only: *releaseable_branches when: manual diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ba5eb20b1b..bd28ec7ccc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,50 @@ -## Parity-Ethereum [v2.5.9](https://github.com/paritytech/parity-ethereum/releases/tag/v2.5.8) +## Parity-Ethereum [v2.5.10](https://github.com/paritytech/parity-ethereum/releases/tag/2.5.10) + +Parity Ethereum v2.5.10-stable is a patch release that adds block numbers for +activating the Istanbul hardfork on mainnet, as well as a large number of +various bugfixes, QoL changes, some code cleanup/refactoring and other +miscellaenous changes. + +The full list of included changes: + +* ropsten #6631425 foundation #8798209 (#11201) +* [stable] builtin, istanbul and mordor testnet backports (#11234) + * ethcore-builtin (#10850) + * [builtin]: support `multiple prices and activations` in chain spec (#11039) + * [chain specs]: activate `Istanbul` on mainnet (#11228) + * ethcore/res: add mordor testnet configuration (#11200) +* Update list of bootnodes for xDai chain (#11236) +* ethcore: remove `test-helper feat` from build (#11047) +* Secret store: fix Instant::now() related race in net_keep_alive (#11155) (#11159) +* [stable]: backport #10691 and #10683 (#11143) + * Fix compiler warning (that will become an error) (#10683) + * Refactor Clique stepping (#10691) +* Add Constantinople eips to the dev (instant_seal) config (#10809) +* Add cargo-remote dir to .gitignore (?) +* Insert explicit warning into the panic hook (#11225) +* Fix docker centos build (#11226) +* Update MIX bootnodes. (#11203) +* Use provided usd-per-eth value if an endpoint is specified (#11209) +* Add new line after writing block to hex file. (#10984) +* Type annotation for next_key() matching of json filter options (#11192) (but no `FilterOption` in 2.5 so…) +* Upgrade jsonrpc to latest (#11206) +* [CI] check evmbin build (#11096) +* Correct EIP-712 encoding (#11092) +* [client]: Fix for incorrectly dropped consensus messages (#11086) +* Fix block detail updating (#11015) +* Switching sccache from local to Redis (#10971) +* Made ecrecover implementation trait public (#11188) +* [dependencies]: jsonrpc `14.0.1` (#11183) +* [receipt]: add `sender` & `receiver` to `RichReceipts` (#11179) +* [ethcore/builtin]: do not panic in blake2pricer on short input (#11180) +* util Host: fix a double Read Lock bug in fn Host::session_readable() (#11175) +* ethcore client: fix a double Read Lock bug in fn Client::logs() (#11172) +* Change how RPCs eth_call and eth_estimateGas handle "Pending" (#11127) +* Cleanup stratum a bit (#11161) +* Upgrade to jsonrpc v14 (#11151) +* SecretStore: expose restore_key_public in HTTP API (#10241) + +## Parity-Ethereum [v2.5.9](https://github.com/paritytech/parity-ethereum/releases/tag/v2.5.9) Parity Ethereum v2.5.9-stable is a patch release that adds the block numbers for activating the Istanbul hardfork on test networks: Ropsten, Görli, Rinkeby and Kovan. diff --git a/Cargo.lock b/Cargo.lock index 59e33349874..3fa3b744041 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,11 +1,60 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +[[package]] +name = "aes" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aes-ctr" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aes-soft" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aesni" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aho-corasick" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "aho-corasick" -version = "0.6.8" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -18,7 +67,7 @@ name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -29,7 +78,7 @@ dependencies = [ "ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -39,15 +88,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "arrayvec" -version = "0.4.7" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ascii" -version = "0.7.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -57,38 +106,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "atty" -version = "0.2.11" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "autocfg" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "backtrace" -version = "0.3.9" +version = "0.3.40" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "backtrace-sys" -version = "0.1.24" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "base-x" -version = "0.2.3" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -96,8 +148,8 @@ name = "base64" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -105,7 +157,7 @@ name = "base64" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -113,9 +165,9 @@ name = "bincode" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -143,7 +195,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bitflags" -version = "1.0.4" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -155,25 +207,75 @@ dependencies = [ "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "block-cipher-trait" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "block-modes" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "block-padding" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "blooms-db" version = "0.1.0" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethbloom 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bn" version = "0.4.4" -source = "git+https://github.com/paritytech/bn#2a71dbde5ca93451c8da2135767896a64483759e" +source = "git+https://github.com/paritytech/bn#6079255e65793038b9a6e5292203eab482737cc2" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bstr" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -181,18 +283,32 @@ name = "byte-tools" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "byteorder" -version = "1.2.6" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bytes" -version = "0.4.10" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "c2-chacha" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -202,7 +318,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cc" -version = "1.0.28" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -212,7 +328,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cfg-if" -version = "0.1.5" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -220,40 +336,41 @@ name = "chainspec" version = "0.1.0" dependencies = [ "ethjson 0.1.0", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "chrono" -version = "0.4.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cid" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "integer-encoding 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "integer-encoding 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "multibase 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "multihash 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "clap" -version = "2.32.0" +version = "2.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -262,7 +379,7 @@ name = "cli-signer" version = "1.4.0" dependencies = [ "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "parity-rpc 1.12.0", "parity-rpc-client 1.4.0", "rpassword 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -273,26 +390,26 @@ name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cmake" -version = "0.1.35" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "combine" -version = "3.6.1" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ascii 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ascii 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -305,56 +422,85 @@ dependencies = [ "ethkey 0.3.0", "heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlp_derive 0.1.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "unexpected 0.1.0", ] +[[package]] +name = "constant_time_eq" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "criterion" -version = "0.2.5" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", - "criterion-plot 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "criterion-stats 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "csv 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "handlebars 0.32.4 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools-num 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "simplelog 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion-plot 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "csv 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xoshiro 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon-core 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "tinytemplate 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "criterion" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion-plot 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "csv 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xoshiro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "tinytemplate 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "criterion-plot" -version = "0.2.5" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "criterion-stats" -version = "0.2.5" +name = "criterion-plot" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "thread-scoped 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -366,16 +512,25 @@ dependencies = [ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-deque" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-epoch" version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -387,18 +542,13 @@ dependencies = [ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "crossbeam-utils" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "crossbeam-utils" version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -408,24 +558,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "crunchy" -version = "0.2.1" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "crypto-mac" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crypto-mac" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "csv" -version = "1.0.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "csv-core 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "csv-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -436,23 +607,32 @@ dependencies = [ "sct 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ctr" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ctrlc" version = "1.1.1" source = "git+https://github.com/paritytech/rust-ctrlc.git#b523017108bb2d571a7a69bd97bc406e63bc7a9d" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "derive_more" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -470,31 +650,38 @@ dependencies = [ "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "dir" version = "0.1.2" dependencies = [ "app_dirs 1.2.1 (git+https://github.com/paritytech/app-dirs-rs)", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "home 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "home 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "journaldb 0.2.0", ] [[package]] name = "docopt" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "edit-distance" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -510,30 +697,29 @@ version = "0.1.0" dependencies = [ "ethabi 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lunarity-lexer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lunarity-lexer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "toolshed 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "validator 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "validator_derive 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "either" -version = "1.5.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "elastic-array" -version = "0.10.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)", @@ -552,30 +738,31 @@ name = "env_logger" version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "error-chain" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "eth-secp256k1" version = "0.5.7" -source = "git+https://github.com/paritytech/rust-secp256k1#ccc06e7480148b723eb44ac56cf4d20eec380b6f" +source = "git+https://github.com/paritytech/rust-secp256k1?rev=ccc06e7480148b723eb44ac56cf4d20eec380b6f#ccc06e7480148b723eb44ac56cf4d20eec380b6f" dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -583,13 +770,13 @@ name = "ethabi" version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -603,9 +790,9 @@ version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ethabi 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -613,17 +800,17 @@ dependencies = [ name = "ethash" version = "1.12.0" dependencies = [ - "criterion 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "primal 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -635,8 +822,8 @@ dependencies = [ "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types-serialize 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -645,14 +832,13 @@ version = "1.12.0" dependencies = [ "ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", "blooms-db 0.1.0", - "bn 0.4.4 (git+https://github.com/paritytech/bn)", - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "common-types 0.1.0", - "criterion 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "eip-152 0.1.0", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi-contract 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi-derive 6.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -660,6 +846,7 @@ dependencies = [ "ethcore-accounts 0.1.0", "ethcore-blockchain 0.1.0", "ethcore-bloom-journal 0.1.0", + "ethcore-builtin 0.1.0", "ethcore-call-contract 0.1.0", "ethcore-db 0.1.0", "ethcore-io 1.12.0", @@ -677,36 +864,34 @@ dependencies = [ "journaldb 0.2.0", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hasher 0.1.1", - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb-rocksdb 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "len-caching-lock 0.1.1", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "macros 0.1.0", "memory-cache 0.1.0", "memory-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-crypto 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-runtime 0.1.0", "parity-snappy 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie-ethereum 0.1.0", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlp_compress 0.1.0", "rlp_derive 0.1.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", "stats 0.1.0", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "time-utils 0.1.0", - "trace-time 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "trace-time 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "trie-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "trie-standardmap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "triehash-ethereum 0.2.0", @@ -726,11 +911,11 @@ dependencies = [ "ethstore 0.2.1", "fake-hardware-wallet 0.0.1", "hardware-wallet 1.12.0", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -748,13 +933,13 @@ dependencies = [ "heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)", "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlp_compress 0.1.0", "rlp_derive 0.1.0", @@ -770,13 +955,32 @@ dependencies = [ "siphasher 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ethcore-builtin" +version = "0.1.0" +dependencies = [ + "bn 0.4.4 (git+https://github.com/paritytech/bn)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "eip-152 0.1.0", + "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ethjson 0.1.0", + "ethkey 0.3.0", + "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "macros 0.1.0", + "num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-crypto 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ethcore-call-contract" version = "0.1.0" dependencies = [ "common-types 0.1.0", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -786,7 +990,7 @@ dependencies = [ "common-types 0.1.0", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)", - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlp_derive 0.1.0", @@ -798,15 +1002,15 @@ version = "1.12.0" dependencies = [ "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "timer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -815,36 +1019,36 @@ version = "1.12.0" dependencies = [ "bincode 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "common-types 0.1.0", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.12.0", "ethcore-blockchain 0.1.0", "ethcore-db 0.1.0", "ethcore-io 1.12.0", "ethcore-network 1.12.0", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "failsafe 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "failsafe 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "fastmap 0.1.0", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)", "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", "journaldb 0.2.0", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hasher 0.1.1", - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "memory-cache 0.1.0", "memory-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie-ethereum 0.1.0", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlp_derive 0.1.0", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "stats 0.1.0", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "trie-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -857,14 +1061,14 @@ name = "ethcore-logger" version = "1.12.0" dependencies = [ "ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -874,7 +1078,7 @@ dependencies = [ "ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", "common-types 0.1.0", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi-contract 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi-derive 6.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -883,20 +1087,20 @@ dependencies = [ "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethkey 0.3.0", "fetch 0.1.0", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-runtime 0.1.0", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "price-info 1.12.0", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trace-time 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "transaction-pool 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "trace-time 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "transaction-pool 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -904,19 +1108,19 @@ name = "ethcore-network" version = "1.12.0" dependencies = [ "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore-io 1.12.0", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethkey 0.3.0", "ipnetwork 0.12.8 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-crypto 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-crypto 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-snappy 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -925,35 +1129,35 @@ version = "1.12.0" dependencies = [ "ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore-io 1.12.0", "ethcore-network 1.12.0", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethkey 0.3.0", - "igd 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "igd 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "ipnetwork 0.12.8 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-crypto 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-path 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-crypto 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-path 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-snappy 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -961,7 +1165,7 @@ name = "ethcore-private-tx" version = "1.0.0" dependencies = [ "common-types 0.1.0", - "derive_more 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi-contract 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -974,32 +1178,32 @@ dependencies = [ "ethjson 0.1.0", "ethkey 0.3.0", "fetch 0.1.0", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-crypto 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-crypto 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie-ethereum 0.1.0", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlp_derive 0.1.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "transaction-pool 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "transaction-pool 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "trie-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ethcore-secretstore" version = "1.0.0" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "common-types 0.1.0", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1011,27 +1215,29 @@ dependencies = [ "ethcore-sync 1.12.0", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethkey 0.3.0", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-server-utils 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-crypto 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb-rocksdb 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-crypto 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-runtime 0.1.0", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1039,7 +1245,7 @@ name = "ethcore-service" version = "0.1.0" dependencies = [ "ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.12.0", "ethcore-blockchain 0.1.0", "ethcore-db 0.1.0", @@ -1047,11 +1253,11 @@ dependencies = [ "ethcore-private-tx 1.0.0", "ethcore-sync 1.12.0", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb-rocksdb 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "trace-time 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "trace-time 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1060,13 +1266,13 @@ version = "1.12.0" dependencies = [ "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-tcp-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-tcp-server 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1090,16 +1296,16 @@ dependencies = [ "heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hasher 0.1.1", - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "macros 0.1.0", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trace-time 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "trace-time 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "triehash-ethereum 0.2.0", ] @@ -1112,7 +1318,7 @@ dependencies = [ "ethbloom 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types-serialize 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1121,7 +1327,7 @@ name = "ethereum-types-serialize" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1129,44 +1335,45 @@ name = "ethjson" version = "0.1.0" dependencies = [ "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "macros 0.1.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ethkey" version = "0.3.0" dependencies = [ - "edit-distance 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)", + "edit-distance 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1?rev=ccc06e7480148b723eb44ac56cf4d20eec380b6f)", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "memzero 0.1.0", - "parity-crypto 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-crypto 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wordlist 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ethkey-cli" version = "0.1.0" dependencies = [ - "docopt 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "docopt 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethkey 0.3.0", "panic_hook 0.1.0", "parity-wordlist 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", "threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1178,22 +1385,22 @@ dependencies = [ "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethkey 0.3.0", "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-crypto 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-crypto 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wordlist 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1201,15 +1408,15 @@ name = "ethstore-cli" version = "0.1.1" dependencies = [ "dir 0.1.2", - "docopt 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "docopt 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethstore 0.2.1", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "panic_hook 0.1.0", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1218,16 +1425,16 @@ name = "evm" version = "0.1.0" dependencies = [ "bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "criterion 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)", "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "memory-cache 0.1.0", - "num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "vm 0.1.0", @@ -1238,51 +1445,52 @@ name = "evmbin" version = "0.1.0" dependencies = [ "common-types 0.1.0", - "docopt 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "criterion 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "docopt 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.12.0", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethjson 0.1.0", "evm 0.1.0", "panic_hook 0.1.0", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "vm 0.1.0", ] [[package]] name = "failsafe" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "failure" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "failure_derive" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1290,8 +1498,8 @@ name = "fake-fetch" version = "0.0.1" dependencies = [ "fetch 0.1.0", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1312,7 +1520,7 @@ name = "fastmap" version = "0.1.0" dependencies = [ "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "plain_hasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1320,21 +1528,21 @@ name = "fdlimit" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "fetch" version = "0.1.0" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper-rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper-rustls 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1343,8 +1551,8 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1363,10 +1571,10 @@ name = "fs-swap" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1374,12 +1582,17 @@ name = "fs_extra" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1390,7 +1603,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures" -version = "0.1.25" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1398,8 +1611,8 @@ name = "futures-cpupool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1407,7 +1620,7 @@ name = "fxhash" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1420,44 +1633,62 @@ name = "generic-array" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "generic-array" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "getopts" -version = "0.2.18" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "getrandom" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "globset" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "h2" -version = "0.1.12" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1465,21 +1696,6 @@ name = "hamming" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "handlebars" -version = "0.32.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "pest 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "pest_derive 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "hardware-wallet" version = "1.12.0" @@ -1488,7 +1704,7 @@ dependencies = [ "ethkey 0.3.0", "hidapi 0.3.1 (git+https://github.com/paritytech/hidapi-rs)", "libusb 0.3.0 (git+https://github.com/paritytech/libusb-rs)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "protobuf 1.7.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1504,18 +1720,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "heapsize" version = "0.4.2" -source = "git+https://github.com/cheme/heapsize.git?branch=ec-macfix#421df390a930cb523a09e5528e6fe57b534b3b26" +source = "git+https://github.com/cheme/heapsize.git?branch=ec-macfix#c07ffe843acb9da570682e290a48540741afdce1" dependencies = [ "jemallocator 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "heck" -version = "0.3.0" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-segmentation 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hermit-abi" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1529,7 +1753,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "hex-literal-impl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1537,7 +1761,7 @@ name = "hex-literal-impl" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1545,37 +1769,75 @@ name = "hidapi" version = "0.3.1" source = "git+https://github.com/paritytech/hidapi-rs#d4d323767d6f27cf5a3d73fbae0b0f2134d579bf" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hmac" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crypto-mac 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hmac" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "home" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "home" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "http" -version = "0.1.15" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "http-body" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "httparse" -version = "1.3.3" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "humantime" -version = "1.1.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1587,65 +1849,66 @@ version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "relay 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "want 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hyper" -version = "0.12.19" +version = "0.12.35" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hyper-rustls" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "ct-logs 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-rustls 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-rustls 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", "webpki 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)", "webpki-roots 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1657,22 +1920,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "if_chain" -version = "0.1.3" +name = "idna" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "if_chain" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "igd" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-retry 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1683,12 +1956,15 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.0.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "integer-encoding" -version = "1.0.5" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1698,11 +1974,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "iovec" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1715,28 +1990,28 @@ name = "itertools" version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "itertools" -version = "0.7.8" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "itertools-num" -version = "0.1.2" +name = "itertools" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "itoa" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1744,9 +2019,9 @@ name = "jemalloc-sys" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1755,7 +2030,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "jemalloc-sys 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1764,11 +2039,11 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cesu8 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "combine 3.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "combine 3.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "jni-sys 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1787,114 +2062,114 @@ dependencies = [ "heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hasher 0.1.1", - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "memory-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-core" -version = "10.0.1" +version = "14.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-derive" -version = "10.0.2" +version = "14.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-http-server" -version = "10.0.1" +version = "14.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-server-utils 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-server-utils 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-ipc-server" -version = "10.0.1" +version = "14.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-server-utils 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-tokio-ipc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-server-utils 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-tokio-ipc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-pubsub" -version = "10.0.1" +version = "14.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-server-utils" -version = "10.0.1" +version = "14.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-tcp-server" -version = "10.0.1" +version = "14.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-server-utils 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-server-utils 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-ws-server" -version = "10.0.1" +version = "14.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-server-utils 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-ws 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-server-utils 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ws 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1903,7 +2178,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1912,8 +2187,8 @@ version = "0.1.1" dependencies = [ "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "plain_hasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1927,11 +2202,11 @@ dependencies = [ [[package]] name = "kvdb" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1939,24 +2214,24 @@ name = "kvdb-memorydb" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kvdb-rocksdb" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", "fs-swap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "interleaved-ordered 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-rocksdb 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-rocksdb 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1966,12 +2241,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazy_static" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazycell" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1983,16 +2258,16 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.48" +version = "0.2.65" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libloading" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2001,22 +2276,22 @@ version = "0.3.0" source = "git+https://github.com/paritytech/libusb-rs#442708954a720bc89a9cf41e7be021a778bdbc27" dependencies = [ "bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "libusb-sys 0.2.4 (git+https://github.com/paritytech/libusb-sys)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "libusb-sys 0.2.5 (git+https://github.com/paritytech/libusb-sys)", ] [[package]] name = "libusb-sys" -version = "0.2.4" -source = "git+https://github.com/paritytech/libusb-sys#1d33d9840a82adaf4d6a1a0f5141f022e5676802" +version = "0.2.5" +source = "git+https://github.com/paritytech/libusb-sys#79e570b00379e1550fb728f2fbd2a083dc99bda6" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "linked-hash-map" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2031,27 +2306,48 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "log" -version = "0.3.9" +name = "lock_api" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "log" -version = "0.4.6" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "logos" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "logos-derive 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)", + "toolshed 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "logos-derive" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2059,15 +2355,15 @@ name = "lru-cache" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "lunarity-lexer" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "toolshed 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "logos 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2079,14 +2375,17 @@ name = "matches" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "memchr" -version = "2.1.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2094,13 +2393,13 @@ name = "memmap" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "memoffset" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2136,47 +2435,41 @@ version = "0.1.0" name = "migration-rocksdb" version = "0.1.0" dependencies = [ - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb-rocksdb 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "macros 0.1.0", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mime" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "mime_guess" -version = "2.0.0-alpha.6" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", - "phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_codegen 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mio" -version = "0.6.16" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2185,10 +2478,10 @@ name = "mio-extras" version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2196,10 +2489,10 @@ name = "mio-named-pipes" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2207,9 +2500,9 @@ name = "mio-uds" version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2228,8 +2521,8 @@ name = "miow" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2237,7 +2530,7 @@ name = "multibase" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "base-x 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "base-x 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2247,7 +2540,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "sha1 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2260,9 +2553,9 @@ name = "net2" version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2278,7 +2571,7 @@ dependencies = [ "ethcore-network-devp2p 1.12.0", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2286,7 +2579,7 @@ dependencies = [ [[package]] name = "nodrop" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2295,9 +2588,9 @@ version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)", - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2305,36 +2598,39 @@ name = "num-bigint" version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-bigint" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-integer" -version = "0.1.39" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-iter" -version = "0.1.37" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2342,20 +2638,24 @@ name = "num-traits" version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-traits" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "num_cpus" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2363,7 +2663,7 @@ name = "number_prefix" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2375,6 +2675,11 @@ dependencies = [ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "order-stat" version = "0.1.3" @@ -2396,7 +2701,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "owning_ref" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2406,35 +2711,62 @@ dependencies = [ name = "panic_hook" version = "0.1.0" dependencies = [ - "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-bytes" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "parity-clib" version = "1.12.0" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "jni 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "panic_hook 0.1.0", - "parity-ethereum 2.5.9", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-ethereum 2.5.10", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-crypto" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "aes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "block-modes 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.14.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ripemd160 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scrypt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-crypto" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "block-modes 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ripemd160 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scrypt 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2443,25 +2775,25 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-ethereum" -version = "2.5.9" +version = "2.5.10" dependencies = [ "ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "blooms-db 0.1.0", - "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "cli-signer 1.4.0", "common-types 0.1.0", "ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)", "dir 0.1.2", - "docopt 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "docopt 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.12.0", "ethcore-accounts 0.1.0", "ethcore-blockchain 0.1.0", @@ -2481,48 +2813,48 @@ dependencies = [ "ethstore 0.2.1", "fake-fetch 0.0.1", "fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "ipnetwork 0.12.8 (registry+https://github.com/rust-lang/crates.io-index)", "journaldb 0.2.0", - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb-rocksdb 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "migration-rocksdb 0.1.0", "node-filter 1.12.0", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "panic_hook 0.1.0", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-daemonize 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-hash-fetch 1.12.0", "parity-ipfs-api 1.12.0", "parity-local-store 0.1.0", - "parity-path 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-path 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-rpc 1.12.0", "parity-runtime 0.1.0", "parity-updater 1.12.0", - "parity-version 2.5.9", + "parity-version 2.5.10", "parity-whisper 0.1.0", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "registrar 0.0.1", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rpassword 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "term_size 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2535,15 +2867,15 @@ dependencies = [ "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "fake-fetch 0.0.1", "fetch 0.1.0", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)", - "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-runtime 0.1.0", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "registrar 0.0.1", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2552,15 +2884,15 @@ dependencies = [ name = "parity-ipfs-api" version = "1.12.0" dependencies = [ - "cid 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore 1.12.0", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-http-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-http-server 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "multihash 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2570,37 +2902,40 @@ dependencies = [ "common-types 0.1.0", "ethcore-io 1.12.0", "ethkey 0.3.0", - "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-path" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "home 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "parity-rocksdb" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "local-encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-rocksdb-sys 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-rocksdb-sys 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-rocksdb-sys" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "local-encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-snappy-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2610,7 +2945,7 @@ name = "parity-rpc" version = "1.12.0" dependencies = [ "ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "cid 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "common-types 0.1.0", "eip-712 0.1.0", "ethash 1.12.0", @@ -2630,38 +2965,38 @@ dependencies = [ "fake-fetch 0.0.1", "fastmap 0.1.0", "fetch 0.1.0", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-derive 10.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-http-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-ipc-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-pubsub 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-ws-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-derive 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-http-server 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-ipc-server 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-pubsub 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-ws-server 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "macros 0.1.0", "multihash 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "order-stat 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-crypto 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-crypto 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-runtime 0.1.0", "parity-updater 1.12.0", - "parity-version 2.5.9", + "parity-version 2.5.10", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "stats 0.1.0", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "transaction-pool 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "transaction-pool 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "transient-hashmap 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "vm 0.1.0", ] @@ -2671,25 +3006,25 @@ name = "parity-rpc-client" version = "1.4.0" dependencies = [ "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-ws-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-ws-server 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-rpc 1.12.0", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-runtime" version = "0.1.0" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2697,7 +3032,7 @@ name = "parity-snappy" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "parity-snappy-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2706,25 +3041,25 @@ name = "parity-snappy-sys" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-tokio-ipc" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-named-pipes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2739,15 +3074,15 @@ dependencies = [ "ethcore-sync 1.12.0", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-hash-fetch 1.12.0", - "parity-path 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-version 2.5.9", + "parity-path 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-version 2.5.10", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2755,9 +3090,9 @@ dependencies = [ [[package]] name = "parity-version" -version = "2.5.9" +version = "2.5.10" dependencies = [ - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2770,7 +3105,7 @@ name = "parity-wasm" version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2778,28 +3113,28 @@ name = "parity-whisper" version = "0.1.0" dependencies = [ "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore-network 1.12.0", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethkey 0.3.0", "hex 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-derive 10.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-pubsub 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-derive 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-pubsub 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "memzero 0.1.0", "ordered-float 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-crypto 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-crypto 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "time-utils 0.1.0", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2807,43 +3142,36 @@ name = "parity-wordlist" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "parity-ws" -version = "0.8.0" +name = "parking_lot" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parking_lot" -version = "0.6.4" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parking_lot" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2851,11 +3179,11 @@ name = "parking_lot_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2863,103 +3191,101 @@ name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "thread-id 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot_core" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "patricia-trie-ethereum" version = "0.1.0" dependencies = [ - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "journaldb 0.2.0", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hasher 0.1.1", "memory-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "trie-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "percent-encoding" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "pest" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "pest_derive" -version = "1.0.8" +name = "pbkdf2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "pest 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "petgraph" -version = "0.4.13" +name = "pbkdf2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "phf" -version = "0.7.23" +name = "percent-encoding" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "phf_codegen" -version = "0.7.23" +name = "percent-encoding" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "phf_generator" -version = "0.7.23" +name = "petgraph" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "phf_shared" -version = "0.7.23" +name = "plain_hasher" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "plain_hasher" -version = "0.2.0" +name = "ppv-lite86" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "pretty_assertions" @@ -2975,11 +3301,11 @@ version = "1.12.0" dependencies = [ "fake-fetch 0.0.1", "fetch 0.1.0", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-runtime 0.1.0", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3005,7 +3331,7 @@ name = "primal-check" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3021,22 +3347,30 @@ dependencies = [ "hamming 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "primal-bit 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "primal-estimate 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro-hack" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro2" -version = "0.4.20" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3044,7 +3378,7 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.3" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3060,32 +3394,32 @@ name = "pulldown-cmark" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "pwasm-run-test" version = "0.1.0" dependencies = [ - "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethjson 0.1.0", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "vm 0.1.0", "wasm 0.1.0", ] [[package]] name = "pwasm-utils" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3096,15 +3430,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "quote" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "quote" -version = "0.6.8" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3112,189 +3441,280 @@ name = "quote" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.3.22" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.6.1" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_chacha" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_chacha" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_core" -version = "0.2.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_core" -version = "0.3.0" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rand_core" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "rand_hc" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "rand_isaac" -version = "0.1.1" +name = "rand_hc" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "rand_pcg" +name = "rand_isaac" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "rand_xorshift" -version = "0.1.0" +name = "rand_jitter" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "rayon" -version = "1.1.0" +name = "rand_os" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "rayon-core" -version = "1.5.0" +name = "rand_os" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "redox_syscall" -version = "0.1.40" +name = "rand_pcg" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] -name = "redox_termios" +name = "rand_xorshift" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "regex" -version = "0.2.11" +name = "rand_xoshiro" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_xoshiro" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rayon" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon-core 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rayon-core" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_syscall" +version = "0.1.56" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "regex" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex" -version = "1.1.2" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "regex-syntax" -version = "0.5.6" +name = "regex-automata" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" -version = "0.6.2" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "regex-syntax" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "registrar" version = "0.0.1" @@ -3302,7 +3722,7 @@ dependencies = [ "ethabi 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi-contract 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethabi-derive 6.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3311,26 +3731,38 @@ name = "relay" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "remove_dir_all" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ring" -version = "0.14.3" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ripemd160" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3338,8 +3770,8 @@ name = "rlp" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3349,7 +3781,7 @@ name = "rlp" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3358,8 +3790,8 @@ dependencies = [ name = "rlp_compress" version = "0.1.0" dependencies = [ - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3367,8 +3799,8 @@ dependencies = [ name = "rlp_derive" version = "0.1.0" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3379,7 +3811,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "rprompt 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3395,15 +3827,15 @@ version = "0.2.36" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rustc-demangle" -version = "0.1.9" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -3431,12 +3863,12 @@ dependencies = [ [[package]] name = "rustls" -version = "0.15.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.14.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)", "sct 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "webpki 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3444,20 +3876,20 @@ dependencies = [ [[package]] name = "ryu" -version = "0.2.6" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "safemem" -version = "0.3.0" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "same-file" -version = "1.0.3" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3475,12 +3907,36 @@ name = "scopeguard" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "scrypt" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "pbkdf2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "scrypt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "sct" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ring 0.14.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3490,7 +3946,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3500,37 +3956,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.89" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "serde_derive" -version = "1.0.89" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.39" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "sha1" -version = "0.5.0" +name = "sha-1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "sha1" -version = "0.6.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -3545,22 +4010,23 @@ dependencies = [ ] [[package]] -name = "shell32-sys" -version = "0.1.2" +name = "sha2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "simplelog" -version = "0.5.3" +name = "shell32-sys" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "term 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3568,11 +4034,6 @@ name = "siphasher" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "siphasher" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "skeptic" version = "0.4.0" @@ -3594,25 +4055,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "slab" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "smallvec" -version = "0.6.10" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "socket2" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "stable_deref_trait" version = "1.1.1" @@ -3622,36 +4091,52 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "stats" version = "0.1.0" dependencies = [ - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "stream-cipher" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "string" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "strsim" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "syn" -version = "0.11.11" +name = "strsim" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "subtle" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "subtle" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", - "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "syn" version = "0.15.26" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3660,28 +4145,31 @@ name = "syn" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "synom" -version = "0.11.3" +name = "synstructure" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "synstructure" -version = "0.10.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3694,17 +4182,8 @@ name = "tempdir" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "term" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3713,26 +4192,16 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "termcolor" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "termion" -version = "1.5.1" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3740,15 +4209,15 @@ name = "textwrap" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "textwrap" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3756,22 +4225,17 @@ name = "thread-id" version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "thread-scoped" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "thread_local" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3779,17 +4243,17 @@ name = "threadpool" version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "time" -version = "0.1.40" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3801,36 +4265,57 @@ name = "timer" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tiny-keccak" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tinytemplate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio" -version = "0.1.11" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-buf" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3838,9 +4323,9 @@ name = "tokio-codec" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3848,54 +4333,55 @@ name = "tokio-core" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-current-thread" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" -version = "0.1.5" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-fs" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-io" -version = "0.1.9" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3903,28 +4389,29 @@ name = "tokio-named-pipes" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-reactor" -version = "0.1.6" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3932,20 +4419,20 @@ name = "tokio-retry" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-rustls" -version = "0.9.0" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "rustls 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "webpki 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3954,34 +4441,45 @@ name = "tokio-service" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-sync" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-tcp" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-threadpool" -version = "0.1.7" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3989,49 +4487,50 @@ name = "tokio-timer" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-timer" -version = "0.2.7" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-udp" -version = "0.1.2" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-uds" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4039,12 +4538,20 @@ name = "toml" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "toml" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "toolshed" -version = "0.4.0" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4052,20 +4559,20 @@ dependencies = [ [[package]] name = "trace-time" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "transaction-pool" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", - "trace-time 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "trace-time 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4086,10 +4593,10 @@ name = "trie-db" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4099,7 +4606,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4133,12 +4640,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "typenum" -version = "1.10.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "ucd-util" -version = "0.1.1" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -4146,7 +4653,7 @@ name = "uint" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4158,15 +4665,7 @@ version = "0.1.0" [[package]] name = "unicase" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "unicase" -version = "2.2.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4182,22 +4681,20 @@ dependencies = [ [[package]] name = "unicode-normalization" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "unicode-segmentation" -version = "1.2.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unicode-width" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "unicode-xid" -version = "0.0.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -4225,7 +4722,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "url" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4233,13 +4730,23 @@ dependencies = [ "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "url" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "using_queue" version = "0.1.0" [[package]] name = "utf8-ranges" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -4248,12 +4755,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4262,10 +4769,10 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "if_chain 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", "validator 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4281,7 +4788,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4296,7 +4803,7 @@ dependencies = [ "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "ethjson 0.1.0", "keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie-ethereum 0.1.0", "rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4308,12 +4815,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "walkdir" -version = "2.2.5" +version = "2.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "same-file 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4321,32 +4828,37 @@ name = "want" version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "try-lock 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "want" -version = "0.0.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "wasi" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "wasm" version = "0.1.0" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", - "pwasm-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pwasm-utils 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "vm 0.1.0", "wasmi 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4356,7 +4868,7 @@ name = "wasmi" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4367,7 +4879,7 @@ name = "webpki" version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ring 0.14.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4384,20 +4896,20 @@ dependencies = [ name = "whisper-cli" version = "0.1.0" dependencies = [ - "docopt 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "docopt 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore-network 1.12.0", "ethcore-network-devp2p 1.12.0", "ethkey 0.3.0", - "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-http-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-pubsub 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-http-server 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-pubsub 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "panic_hook 0.1.0", "parity-whisper 0.1.0", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4407,7 +4919,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4426,10 +4938,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4439,11 +4951,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "wincolor" -version = "1.0.1" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ws" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4457,7 +4986,7 @@ dependencies = [ [[package]] name = "xdg" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -4465,7 +4994,7 @@ name = "xml-rs" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4476,19 +5005,44 @@ dependencies = [ "xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "zeroize" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "zeroize_derive 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "zeroize_derive" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [metadata] -"checksum aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "68f56c7353e5a9547cbd76ed90f7bb5ffc3ba09d4ea9bd1d8c06c8b1142eeb5a" +"checksum aes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "54eb1d8fe354e5fc611daf4f2ea97dd45a765f4f1e4512306ec183ae2e8f20c9" +"checksum aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee" +"checksum aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d" +"checksum aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100" +"checksum aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "81ce3d38065e618af2d7b77e10c5ad9a069859b4be3c2250f674af3840d9c8a5" +"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" "checksum ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6b3568b48b7cefa6b8ce125f9bb4989e52fbcc29ebea88df04cc7c5f12f70455" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum app_dirs 1.2.1 (git+https://github.com/paritytech/app-dirs-rs)" = "" "checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" -"checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" -"checksum ascii 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae7d751998c189c1d4468cf0a39bb2eae052a9c58d50ebb3b9591ee3813ad50" +"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" +"checksum ascii 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" "checksum assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7deb0a829ca7bcfaf5da70b073a8d128619259a7be8216a355e23f00763059e5" -"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" -"checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a" -"checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" -"checksum base-x 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5cda5d0f5584d129112ad8bf4775b9fd2b9f1e30738c7b1a25314ba2244d6a51" +"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" +"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" +"checksum backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea" +"checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491" +"checksum base-x 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1b20b618342cf9891c292c4f5ac2cde7287cc5c87e87e9c769d617793607dec1" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" "checksum bincode 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e103c8b299b28a9c6990458b7013dc4a8356a9b854c51b9883241f5866fac36e" @@ -4496,56 +5050,69 @@ dependencies = [ "checksum bit-vec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "02b4ff8b16e6076c3e14220b39fbc1fabb6737522281a388998046859400895f" "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" "checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" -"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" "checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" +"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +"checksum block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774" +"checksum block-modes 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "31aa8410095e39fdb732909fb5730a48d5bd7c2e3cd76bd1b07b3dbea130c529" +"checksum block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4dc3af3ee2e12f3e5d224e5e1e3d73668abbeb69e566d361f7d5563a4fdf09" "checksum bn 0.4.4 (git+https://github.com/paritytech/bn)" = "" +"checksum bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8d6c2c5b58ab920a4f5aeaaca34b4488074e8cc7596af94e6f8c6ff247c60245" "checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" -"checksum byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "90492c5858dd7d2e78691cfb89f90d273a2800fc11d98f60786e5d87e2f83781" -"checksum bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0ce55bd354b095246fc34caf4e9e242f5297a7fd938b090cadfea6eee614aa62" +"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" +"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" +"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +"checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" "checksum cast 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "926013f2860c46252efceabb19f4a6b308197505082c609025aa6706c011d427" -"checksum cc 1.0.28 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4a8b715cb4597106ea87c7c84b2f1d452c7492033765df7f32651e66fcf749" +"checksum cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)" = "aa87058dce70a3ff5621797f1506cb837edd02ac4c0ae642b4542dce802908b8" "checksum cesu8 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" -"checksum cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4e7bb64a8ebb0d856483e1e682ea3422f883c5f5615a90d51a2c82fe87fdd3" -"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" -"checksum cid 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0e37fba0087d9f3f4e269827a55dc511abf3e440cc097a0c154ff4e6584f988" -"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" +"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +"checksum chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e8493056968583b0193c1bb04d6f7684586f3726992d6c573261941a895dbd68" +"checksum cid 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6908948032561f2550467a477f659cdc358320a805237b9b5035c0350c441def" +"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "6ec65ee4f9c9d16f335091d23693457ed4928657ba4982289d7fafee03bc614a" -"checksum combine 3.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fc1d011beeed29187b8db2ac3925c8dd4d3e87db463dc9d2d2833985388fc5bc" -"checksum criterion 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c47d2b548c5647e1a436dc0cb78d4ebf51b6bf7ab101ed76662828bdd4d3a24a" -"checksum criterion-plot 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6e649d6aacdbbdb94ec659561a309a71336fc5655ed408f3afd28df2fc0c4f4f" -"checksum criterion-stats 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ff43cac80562f91ead0b617c1be74edf350adfaa195809d355de98dfc8f9237d" +"checksum cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "81fb25b677f8bf1eb325017cb6bb8452f87969db0fedb4f757b297bee78a7c62" +"checksum combine 3.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +"checksum constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120" +"checksum criterion 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0363053954f3e679645fc443321ca128b7b950a6fe288cf5f9335cc22ee58394" +"checksum criterion 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "938703e165481c8d612ea3479ac8342e5615185db37765162e762ec3523e2fc6" +"checksum criterion-plot 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76f9212ddf2f4a9eb2d401635190600656a1f88a932ef53d06e7fa4c7e02fb8e" +"checksum criterion-plot 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eccdc6ce8bbe352ca89025bee672aa6d24f4eb8c53e3a8b5d1bc58011da072a2" "checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" +"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" "checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" -"checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" "checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" "checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" -"checksum crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c240f247c278fa08a6d4820a6a222bfc6e0d999e51ba67be94f44c905b2161f2" -"checksum csv 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d54f6b0fd69128a2894b1a3e57af5849a0963c1cc77b165d30b896e40296452" -"checksum csv-core 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4dd8e6d86f7ba48b4276ef1317edc8cc36167546d8972feb4a2b5fec0b374105" +"checksum crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +"checksum crypto-mac 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7afa06d05a046c7a47c3a849907ec303504608c927f4e85f7bfff22b7180d971" +"checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" +"checksum csv 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "37519ccdfd73a75821cac9319d4fce15a81b9fcf75f951df5b9988aa3a0af87d" +"checksum csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9b5cadb6b25c77aeff80ba701712494213f4a8418fcda2ee11b6560c3ad0bf4c" "checksum ct-logs 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1b4660f8b07a560a88c02d76286edb9f0d5d64e495d2b0f233186155aa51be1f" +"checksum ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736" "checksum ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)" = "" -"checksum derive_more 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fbe9f11be34f800b3ecaaed0ec9ec2e015d1d0ba0c8644c1310f73d6e8994615" +"checksum derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6d944ac6003ed268757ef1ee686753b57efc5fcf0ebe7b64c9fc81e7e32ff839" "checksum difference 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b3304d19798a8e067e48d8e69b2c37f0b5e9b4e462504ad9e27e9f3fce02bba8" "checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" -"checksum docopt 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "db2906c2579b5b7207fc1e328796a9a8835dc44e22dbe8e460b1d636f9a7b225" -"checksum edit-distance 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3bd26878c3d921f89797a4e1a1711919f999a9f6946bb6f5a4ffda126d297b7e" -"checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" -"checksum elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88d4851b005ef16de812ea9acdb7bece2f0a40dd86c07b85631d7dafa54537bb" +"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +"checksum docopt 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f525a586d310c87df72ebcd98009e57f1cc030c8c268305287a476beb653969" +"checksum edit-distance 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bbbaaaf38131deb9ca518a274a45bfdb8771f139517b073b16c2d3d32ae5037b" +"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" +"checksum elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "073be79b6538296faf81c631872676600616073817dd9a440c477ad09b408983" "checksum enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "be4551092f4d519593039259a9ed8daedf0da12e5109c5280338073eaeb81180" "checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" -"checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02" -"checksum eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)" = "" +"checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9" +"checksum eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1?rev=ccc06e7480148b723eb44ac56cf4d20eec380b6f)" = "" "checksum ethabi 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8eb362fde43ed0b50b258bb0c72b72b3dccfd29f8de9506295eaf9251c49ca31" "checksum ethabi-contract 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "795e25fd868e12a59ca235dbe1f6cc8f1eba8f67d6a39438b29535e0126e0c27" "checksum ethabi-derive 6.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "66a587250c8190be9d6ae28d67b8957ed97cb9eee2e272173a20593ab054a075" "checksum ethbloom 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a93a43ce2e9f09071449da36bfa7a1b20b950ee344b6904ff23de493b03b386" "checksum ethereum-types 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e742184dc63a01c8ea0637369f8faa27c40f537949908a237f95c05e68d2c96" "checksum ethereum-types-serialize 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1873d77b32bc1891a79dad925f2acbc318ee942b38b9110f9dbc5fbeffcea350" -"checksum failsafe 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad3bf1642583ea2f1fa38a1e8546613a7488816941b33e5f0fccceac61879118" -"checksum failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6dd377bcc1b1b7ce911967e3ec24fa19c3224394ec05b54aa7b083d498341ac7" -"checksum failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "64c2d913fe8ed3b6c6518eedf4538255b989945c14c2a7d5cbff62a5e2120596" +"checksum failsafe 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf04c6ffd217a68c73fdf40eb3331c484fd7a9fa4fd1028fcf74456ef889ca12" +"checksum failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9" +"checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa" "checksum fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d5ec8112f00ea8a483e04748a85522184418fd1cf02890b626d8fc28683f7de" @@ -4553,84 +5120,95 @@ dependencies = [ "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum fs-swap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "921d332c89b3b61a826de38c61ee5b6e02c56806cade1b0e5d81bd71f57a71bb" "checksum fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" +"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" +"checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" "checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" "checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" +"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" "checksum generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef25c5683767570c2bbd7deba372926a55eaae9982d7726ee2a1050239d45b9d" -"checksum getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "0a7292d30132fb5424b354f5dc02512a86e4c516fe544bb7a25e7f266951b797" -"checksum globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4743617a7464bbda3c8aec8558ff2f9429047e025771037df561d383337ff865" -"checksum h2 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "a27e7ed946e8335bdf9a191bc1b9b14a03ba822d013d2f58437f4fabcbd7fc2c" +"checksum getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +"checksum getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e7db7ca94ed4cd01190ceee0d8a8052f08a247aa1b469a7f68c6a3b71afcf407" +"checksum globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "925aa2cac82d8834e2b2a4415b6f6879757fb5c0928fc445ae76461a12eed8f2" +"checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" "checksum hamming 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "65043da274378d68241eb9a8f8f8aa54e349136f7b8e12f63e3ef44043cc30e1" -"checksum handlebars 0.32.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d89ec99d1594f285d4590fc32bac5f75cdab383f1123d504d27862c644a807dd" "checksum hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1b03501f6e1a2a97f1618879aba3156f14ca2847faa530c4e28859638bd11483" "checksum heapsize 0.4.2 (git+https://github.com/cheme/heapsize.git?branch=ec-macfix)" = "" -"checksum heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea04fa3ead4e05e51a7c806fc07271fdbde4e246a6c6d1efd52e72230b771b82" +"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" +"checksum hermit-abi 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "307c3c9f937f38e3534b1d6447ecf090cafcc9744e4a6360e8b037b2cf5af120" "checksum hex 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d6a22814455d41612f41161581c2883c0c6a1c41852729b17d5ed88f01e153aa" "checksum hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "961de220ec9a91af2e1e5bd80d02109155695e516771762381ef8581317066e0" "checksum hex-literal-impl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9d4c5c844e2fee0bf673d54c2c177f1713b3d2af2ff6e666b49cb7572e6cf42d" "checksum hidapi 0.3.1 (git+https://github.com/paritytech/hidapi-rs)" = "" -"checksum home 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "80dff82fb58cfbbc617fb9a9184b010be0529201553cda50ad04372bc2333aff" -"checksum http 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "1a10e5b573b9a0146545010f50772b9e8b1dd0a256564cc4307694c68832a2f5" -"checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" -"checksum humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0484fda3e7007f2a4a0d9c3a703ca38c71c54c55602ce4660c419fd32e188c9e" +"checksum hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "733e1b3ac906631ca01ebb577e9bb0f5e37a454032b9036b5eaea4013ed6f99a" +"checksum hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" +"checksum home 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "29302b90cfa76231a757a887d1e3153331a63c7f80b6c75f86366334cbe70708" +"checksum home 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a3753954f7bd71f0e671afb8b5a992d1724cf43b7f95a563cd4a0bde94659ca8" +"checksum http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "d7e06e336150b178206af098a055e3621e8336027e2b4d126bda0bc64824baaf" +"checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" +"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" "checksum hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)" = "34a590ca09d341e94cddf8e5af0bbccde205d5fbc2fa3c09dd67c7f85cea59d7" -"checksum hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)" = "f1ebec079129e43af5e234ef36ee3d7e6085687d145b7ea653b262d16c6b65f1" -"checksum hyper-rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff2c61fbda2bc72e793e329190a3e8f0ae74cb896905c8b301304c4c93f2755" +"checksum hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)" = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" +"checksum hyper-rustls 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "15b66d1bd4864ef036adf2363409caa3acd63ebb4725957b66e621c8a36631a3" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" "checksum if_chain 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4bac95d9aa0624e7b78187d6fb8ab012b41d9f6f54b1bcb61e61c4845f8357ec" -"checksum igd 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8a254e265e8810deb357a9de757f784787ec415d056ededf410c0aa460afee9e" -"checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" -"checksum integer-encoding 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "26746cbc2e680af687e88d717f20ff90079bd10fc984ad57d277cd0e37309fa5" +"checksum igd 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c8aef7814a769f156ef3a86169a8b04c066e3aebc324f522c159978466e32a1c" +"checksum indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2" +"checksum integer-encoding 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1aec89c15e2cfa0f0eae8ca60e03cb10b30d25ea2c0ad7d6be60a95e32729994" "checksum interleaved-ordered 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "141340095b15ed7491bd3d4ced9d20cebfb826174b6bb03386381f62b01e3d77" -"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" +"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" "checksum ipnetwork 0.12.8 (registry+https://github.com/rust-lang/crates.io-index)" = "70783119ac90828aaba91eae39db32c6c1b8838deea3637e5238efa0130801ab" "checksum itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4833d6978da405305126af4ac88569b5d71ff758581ce5a987dbfa3755f694fc" -"checksum itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)" = "f58856976b776fedd95533137617a02fb25719f40e7d9b01c7043cd65474f450" -"checksum itertools-num 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "83ca7b70b838f2e34bc6c2f367a1ed1cfe34fb82464adecadd31cdcc7da882fc" -"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" +"checksum itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0d47946d458e94a1b7bcabbf6521ea7c037062c81f534615abcad76e84d4970d" +"checksum itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "87fa75c9dea7b07be3138c49abbb83fd4bea199b5cdc76f9804458edc5da0d6e" +"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" "checksum jemalloc-sys 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "bfc62c8e50e381768ce8ee0428ee53741929f7ebd73e4d83f669bcf7693e00ae" "checksum jemallocator 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9f0cd42ac65f758063fea55126b0148b1ce0a6354ff78e07a4d6806bc65c4ab3" "checksum jni 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "294eca097d1dc0bf59de5ab9f7eafa5f77129e9f6464c957ed3ddeb705fb4292" "checksum jni-sys 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" -"checksum jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a5152c3fda235dfd68341b3edf4121bc4428642c93acbd6de88c26bf95fc5d7" -"checksum jsonrpc-derive 10.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c14be84e86c75935be83a34c6765bf31f97ed6c9163bb0b83007190e9703940a" -"checksum jsonrpc-http-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "99e1ce36c7cc9dcab398024d76849ab2cb917ee812653bce6f74fc9eb7c82d16" -"checksum jsonrpc-ipc-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fac6b8682243740a32bfb288880c71cc06eca29616cdf551e4136a190b11b96d" -"checksum jsonrpc-pubsub 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "56608ed54b1b2a69f4357cb8bdfbcbd99fe1179383c03a09bb428931bd35f592" -"checksum jsonrpc-server-utils 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5521613b31ea22d36d9f95ad642058dccec846a94ed8690957652d479f620707" -"checksum jsonrpc-tcp-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c873dac37a601fb88d40ba49eeac3f1aa60953c06b2e99ddbf0569b6f8028478" -"checksum jsonrpc-ws-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20b8333a5a6e6ccbcf5c90f90919de557cba4929efa164e9bd0e8e497eb20e46" +"checksum jsonrpc-core 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "34651edf3417637cc45e70ed0182ecfa9ced0b7e8131805fccf7400d989845ca" +"checksum jsonrpc-derive 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d5d5c31575cc70a8b21542599028472c80a9248394aeea4d8918a045a0ab08a3" +"checksum jsonrpc-http-server 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "aa54c4c2d88cb5e04b251a5031ba0f2ee8c6ef30970e31228955b89a80c3b611" +"checksum jsonrpc-ipc-server 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b579cd0840d7db3ebaadf52f6f31ec601a260e78d610e44f68634f919e34497a" +"checksum jsonrpc-pubsub 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ee1b8da0b9219a231c4b7cbc7110bfdb457cbcd8d90a6224d0b3cab8aae8443" +"checksum jsonrpc-server-utils 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "87bc3c0a9a282211b2ec14abb3e977de33016bbec495332e9f7be858de7c5117" +"checksum jsonrpc-tcp-server 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9c7807563cd721401285b59b54358f5b2325b4de6ff6f1de5494a5879e890fc1" +"checksum jsonrpc-ws-server 14.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "af36a129cef77a9db8028ac7552d927e1bb7b6928cd96b23dd25cc38bff974ab" "checksum keccak-hash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "253bbe643c32c816bf58fa5a88248fafedeebb139705ad17a62add3517854a86" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "72ae89206cea31c32014b39d5a454b96135894221610dbfd19cf4d2d044fa546" +"checksum kvdb 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c1b2f251f01a7224426abdb2563707d856f7de995d821744fd8fa8e2874f69e3" "checksum kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "45bcdf5eb083602cff61a6f8438dce2a7900d714e893fc48781c39fb119d37aa" -"checksum kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "06cf755dc587839ba34d3cbe3f12b6ad55850fbcdfe67336157a021a1a5c43ae" +"checksum kvdb-rocksdb 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d5c5f57ad492ecfb9e2a91614ff0204bda82e41f832bebd64cd03ffecb74e02b" "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" -"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" -"checksum lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddba4c30a78328befecec92fc94970e53b3ae385827d28620f0f5bb2493081e0" -"checksum libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "e962c7641008ac010fa60a7dfdc1712449f29c44ef2d4702394aea943ee75047" -"checksum libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3ad660d7cb8c5822cd83d10897b0f1f1526792737a179e73896152f85b88c2" +"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" +"checksum libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)" = "1a31a0627fdf1f6a39ec0dd577e101440b7db22672c0901fe00a9a6fbb5c24e8" +"checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" "checksum libusb 0.3.0 (git+https://github.com/paritytech/libusb-rs)" = "" -"checksum libusb-sys 0.2.4 (git+https://github.com/paritytech/libusb-sys)" = "" -"checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" +"checksum libusb-sys 0.2.5 (git+https://github.com/paritytech/libusb-sys)" = "" +"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" "checksum local-encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e1ceb20f39ff7ae42f3ff9795f3986b1daad821caaa1e1732a0944103a5a1a66" -"checksum lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775751a3e69bde4df9b38dd00a1b5d6ac13791e4223d4a0506577f0dd27cfb7a" -"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" +"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" +"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" +"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +"checksum logos 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" = "60ca690691528b32832c7e8aaae8ae1edcdee4e9ffde55b2d31a4795bc7a12d0" +"checksum logos-derive 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" = "917dccdd529d5681f3d28b26bcfdafd2ed67fe4f26d15b5ac679f67b55279f3d" "checksum lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -"checksum lunarity-lexer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8a1670671f305792567116d4660e6e5bd785d6fa973e817c3445c0a7a54cecb6" +"checksum lunarity-lexer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "28a5446c03ed5bd4ae2cca322c4c84d9bd9741b6788f75c404719474cb63d3b7" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4b3629fe9fdbff6daa6c33b90f7c08355c1aca05a3d01fa8063b822fcf185f3b" +"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" +"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" "checksum memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2ffa2c986de11a9df78620c01eeaaf27d94d3ff02bf81bfcca953102dd0c6ff" -"checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" +"checksum memoffset 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a85c1a8c329f11437034d7313dca647c79096523533a1c79e86f1d0f657c7cc" "checksum memory-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94da53143d45f6bad3753f532e56ad57a6a26c0ca6881794583310c7cb4c885f" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" -"checksum mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)" = "0a907b83e7b9e987032439a387e187119cddafc92d5c2aaeb1d92580a793f630" -"checksum mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30de2e4613efcba1ec63d8133f344076952090c122992a903359be5a4f99c3ed" -"checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" +"checksum mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "dd1d63acd1b78403cc0c325605908475dd9b9a3acbf65ed8bcab97e27014afcf" +"checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599" +"checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" "checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" "checksum mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e374eff525ce1c5b7687c4cef63943e7686524a387933ad27ca7ec43779cb3" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" @@ -4640,165 +5218,183 @@ dependencies = [ "checksum multihash 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c62469025f45dee2464ef9fc845f4683c543993792c1993e7d903c17a4546b74" "checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" +"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" "checksum num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e" "checksum num-bigint 0.1.44 (registry+https://github.com/rust-lang/crates.io-index)" = "e63899ad0da84ce718c14936262a41cee2c79c981fc0a0e7c7beb47d5a07e8c1" -"checksum num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "57450397855d951f1a41305e54851b1a7b8f5d2e349543a02a2effe25459f718" -"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" -"checksum num-iter 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "af3fdbbc3291a5464dc57b03860ec37ca6bf915ed6ee385e7c6c052c422b2124" +"checksum num-bigint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f9c3f34cdd24f334cb265d9bf8bfa8a241920d026916785747a92f0e55541a1a" +"checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" +"checksum num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "76bd5272412d173d6bf9afdf98db8612bbabc9a7a830b7bfc9c188911716132e" "checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" -"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" -"checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" +"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" +"checksum num_cpus 1.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "155394f924cdddf08149da25bfb932d226b4a593ca7468b08191ff6335941af5" "checksum number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dbf9993e59c894e3c08aa1c2712914e9e6bf1fcbfc6bef283e2183df345a4fee" "checksum ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" +"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" "checksum order-stat 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "efa535d5117d3661134dbf1719b6f0ffe06f2375843b13935db186cd094105eb" "checksum ordered-float 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7eb5259643245d3f292c7a146b2df53bba24d7eab159410e648eb73dc164669d" "checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" -"checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" -"checksum parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa5168b4cf41f3835e4bc6ffb32f51bc9365dc50cb351904595b3931d917fd0c" -"checksum parity-crypto 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b9db194dfbcfe3b398d63d765437a5c7232d59906e203055f0e993f6458ff1" +"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" +"checksum parity-bytes 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0c276d76c5333b8c2579e02d49a06733a55b8282d2d9b13e8d53b6406bd7e30a" +"checksum parity-crypto 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1b9c063d87e1507cb3807493c8d21859ef23b5414b39f81c53f0ba267d64c1" +"checksum parity-crypto 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "27a9c2b525c93d717a234eb220c26474f8d97b08ac50d79faeac4cb6c74bf0b9" "checksum parity-daemonize 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "69b1910b2793ff52713fca0a4ee92544ebec59ccd218ea74560be6f947b4ca77" -"checksum parity-path 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5962540f99d3895d9addf535f37ab1397886bc2c68e59efd040ef458e5f8c3f7" -"checksum parity-rocksdb 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cd55d2d6d6000ec99f021cf52c9acc7d2a402e14f95ced4c5de230696fabe00b" -"checksum parity-rocksdb-sys 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "5bbb241262c768522f6460f0e2672dee185c8504d4d0a5a5bab45c1147981c4f" +"checksum parity-path 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7b027aab22527061b7005cecf7805e8f42eed94ce89e76bac3a6035394b56627" +"checksum parity-rocksdb 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d17caf6640e24b70242f3f48615e3f0764f98871e8c7aea25584e29833eb5a8" +"checksum parity-rocksdb-sys 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9581e6b8c63f3808500638372ee56faaaffb57c4d349974bff591606b94d5f57" "checksum parity-snappy 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2c5f9d149b13134b8b354d93a92830efcbee6fe5b73a2e6e540fe70d4dd8a63" "checksum parity-snappy-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1a413d51e5e1927320c9de992998e4a279dffb8c8a7363570198bd8383e66f1b" -"checksum parity-tokio-ipc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eb002c2d3539ccd3b82bd915ec060028d4ab350ad203dbffa20028c1e483af5b" +"checksum parity-tokio-ipc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8281bf4f1d6429573f89589bf68d89451c46750977a8264f8ea3edbabeba7947" "checksum parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)" = "511379a8194230c2395d2f5fa627a5a7e108a9f976656ce723ae68fca4097bfc" "checksum parity-wordlist 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "573d08f0d3bc8a6ffcdac1de2725b5daeed8db26345a9c12d91648e2d6457f3e" -"checksum parity-ws 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2fec5048fba72a2e01baeb0d08089db79aead4b57e2443df172fb1840075a233" "checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" +"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" "checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" +"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" +"checksum pbkdf2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0c09cddfbfc98de7f76931acf44460972edb4023eb14d0c6d4018800e552d8e0" +"checksum pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" -"checksum pest 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0fce5d8b5cc33983fc74f78ad552b5522ab41442c4ca91606e4236eb4b5ceefc" -"checksum pest_derive 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3294f437119209b084c797604295f40227cffa35c57220b1e99a6ff3bf8ee4" +"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" "checksum petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" -"checksum phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "cec29da322b242f4c3098852c77a0ca261c9c01b806cae85a5572a1eb94db9a6" -"checksum phf_codegen 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "7d187f00cd98d5afbcd8898f6cf181743a449162aeb329dcd2f3849009e605ad" -"checksum phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "03dc191feb9b08b0dc1330d6549b795b9d81aec19efe6b4a45aec8d4caee0c4b" -"checksum phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)" = "b539898d22d4273ded07f64a05737649dc69095d92cb87c7097ec68e3f150b93" -"checksum plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "95fa6386b1d34aaf0adb9b7dd2885dbe7c34190e6263785e5a7ec2b19044a90f" +"checksum plain_hasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8f1c24f5061a6a53aaa21b0aaaa2e1beb5271a9ecc8c5bd7ae9ac92969070a2a" +"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" "checksum pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2412f3332a07c7a2a50168988dcc184f32180a9758ad470390e5f55e089f6b6e" "checksum primal 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0e31b86efadeaeb1235452171a66689682783149a6249ff334a2c5d8218d00a4" "checksum primal-bit 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "686a64e2f50194c64942992af5799e6b6e8775b8f88c607d72ed0a2fd58b9b21" "checksum primal-check 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8e65f96c0a171f887198c274392c99a116ef65aa7f53f3b6d4902f493965c2d1" "checksum primal-estimate 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "56ea4531dde757b56906493c8604641da14607bf9cdaa80fb9c9cabd2429f8d5" "checksum primal-sieve 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "da2d6ed369bb4b0273aeeb43f07c105c0117717cbae827b20719438eb2eb798c" -"checksum proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e688f31d92ffd7c1ddc57a1b4e6d773c0f2a14ee437a4b0a4f5a69c80eb221c8" -"checksum proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "3d7b7eaaa90b4a90a932a9ea6666c95a389e424eff347f0f793979289429feee" -"checksum proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e98a83a9f9b331f54b924e68a66acb1bb35cb01fb0a23645139967abefb697e8" +"checksum proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" +"checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" +"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +"checksum proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9c9e470a8dc4aeae2dee2f335e8f533e2d4b347e1434e5671afc49b054592f27" "checksum protobuf 1.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e14ccd6b79ec748412d4f2dfde1a80fa363a67def4062969f8aed3d790a30f28" "checksum pulldown-cmark 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8361e81576d2e02643b04950e487ec172b687180da65c731c03cf336784e6c07" -"checksum pwasm-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e9135bed7b452e20dbb395a2d519abaf0c46d60e7ecc02daeeab447d29bada1" +"checksum pwasm-utils 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "efb0dcbddbb600f47a7098d33762a00552c671992171637f5bb310b37fe1f0e4" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" -"checksum quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dd636425967c33af890042c483632d33fa7a18f19ad1d7ea72e8998c6ef8dea5" +"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" "checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" -"checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd" -"checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" -"checksum rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae9d223d52ae411a33cf7e54ec6034ec165df296ccd23533d671a28252b6f66a" -"checksum rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "771b009e3a508cb67e8823dda454aaa5368c7bc1c16829fb77d3e980440dd34a" -"checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" -"checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db" +"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" +"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +"checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" +"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +"checksum rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412" +"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" +"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" +"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" -"checksum rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effa3fcaa47e18db002bdde6060944b6d2f9cfd8db471c30e873448ad9187be3" -"checksum rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4b0186e22767d5b9738a05eab7c6ac90b15db17e5b5f9bd87976dd7d89a10a4" -"checksum rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbe0df8435ac0c397d467b6cad6d25543d06e8a019ef3f6af3c384597515bd2" -"checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" -"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" +"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" +"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" +"checksum rand_os 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a788ae3edb696cfcba1c19bfd388cc4b8c21f8a408432b199c072825084da58a" +"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" +"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +"checksum rand_xoshiro 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "03b418169fb9c46533f326efd6eed2576699c44ca92d3052a066214a8d828929" +"checksum rand_xoshiro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0e18c91676f670f6f0312764c759405f13afb98d5d73819840cf72a518487bff" +"checksum rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "83a27732a533a1be0a0035a111fe76db89ad312f6f0347004c220c57f209a123" +"checksum rayon-core 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "98dcf634205083b17d0861252431eb2acbfb698ab7478a2d20de07954f47ec7b" +"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384" -"checksum regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53ee8cfdddb2e0291adfb9f13d31d3bbe0a03c9a402c01b1e24188d86c35b24f" +"checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" +"checksum regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9" "checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7" -"checksum regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "747ba3b235651f6e2f67dfa8bcdcd073ddb7c243cb21c442fc12395dfcac212d" +"checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" "checksum relay 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1576e382688d7e9deecea24417e350d3062d97e32e45d70b1cde65994ff1489a" -"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum ring 0.14.3 (registry+https://github.com/rust-lang/crates.io-index)" = "be5386a5f59e5f5bcaea38b50ad26c09e3918a0abc0610640b3be5cfd85d6894" +"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" +"checksum ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)" = "426bc186e3e95cac1e4a4be125a4aca7e84c2d616ffc02244eef36e2a60a093c" +"checksum ripemd160 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad5112e0dbbb87577bfbc56c42450235e3012ce336e29c5befd7807bd626da4a" "checksum rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "524c5ad554859785dfc8469df3ed5e0b5784d4d335877ed47c8d90fc0eb238fe" "checksum rlp 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "16d1effe9845d54f90e7be8420ee49e5c94623140b97ee4bc6fb5bfddb745720" "checksum rpassword 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b273c91bd242ca03ad6d71c143b6f17a48790e61f21a6c78568fa2b6774a24a4" "checksum rprompt 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1601f32bc5858aae3cbfa1c645c96c4d820cc5c16be0194f089560c00b6eb625" "checksum rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a" -"checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395" +"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" "checksum rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0ceb8ce7a5e520de349e1fa172baeba4a9e8d5ef06c47471863530bc4972ee1e" "checksum rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "403bb3a286107a04825a5f82e1270acc1e14028d3d554d7a1e08914549575ab8" "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum rustls 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "38af00e78b66109e7184a0ee16940f41583161b7ec0518af258e4bcaed15db25" -"checksum ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7153dd96dade874ab973e098cb62fcdbb89a03682e46b144fd09550998d4a4a7" -"checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" -"checksum same-file 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "10f7794e2fda7f594866840e95f5c5962e886e228e68b6505885811a94dd728c" +"checksum rustls 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f271e3552cd835fa28c541c34a7e8fdd8cdff09d77fe4eb8f6c42e87a11b096e" +"checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" +"checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" +"checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421" "checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" +"checksum scrypt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8570c5e2fa69cb29d492fd4e9974b6b5facb5a888e1c6da630d4a3cd7ebfef4a" +"checksum scrypt 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "656c79d0e90d0ab28ac86bf3c3d10bfbbac91450d3f190113b4e76d9fec3cfdd" "checksum sct 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f5adf8fbd58e1b1b52699dc8bed2630faecb6d8c7bee77d009d6bbe4af569b9" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -"checksum serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "92514fb95f900c9b5126e32d020f5c6d40564c27a5ea6d1d7d9f157a96623560" -"checksum serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6eabf4b5914e88e24eea240bb7c9f9a2cbc1bbbe8d961d381975ec3c6b806c" -"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" +"checksum serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4b39bd9b0b087684013a792c59e3e07a46a01d2322518d8a1104641a0b1be0" +"checksum serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)" = "ca13fc1a832f793322228923fbb3aba9f3f44444898f835d31ad1b74fa0a2bf8" +"checksum serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)" = "2f72eb2a68a7dc3f9a691bfda9305a1c017a6215e5a4545c258500d2099a37c2" +"checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" "checksum sha1 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "171698ce4ec7cbb93babeb3190021b4d72e96ccb98e33d277ae4ea959d6f2d9e" -"checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" "checksum sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9eb6be24e4c23a84d7184280d2722f7f2731fcdd4a9d886efbfe4413e4847ea0" +"checksum sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d" "checksum shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c" -"checksum simplelog 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e95345f185d5adeb8ec93459d2dc99654e294cc6ccf5b75414d8ea262de9a13" "checksum siphasher 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "833011ca526bd88f16778d32c699d325a9ad302fa06381cd66f7be63351d3f6d" -"checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" "checksum skeptic 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24ebf8a06f5f8bae61ae5bbc7af7aac4ef6907ae975130faba1199e5fe82256a" "checksum slab 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6dbdd334bd28d328dad1c41b0ea662517883d8880d8533895ef96c8003dec9c4" "checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" -"checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d" -"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" -"checksum socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c4d11a52082057d87cb5caa31ad812f4504b97ab44732cd8359df2e9ff9f48e7" +"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" +"checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85" +"checksum spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00caf261d6f90f588f8450b8e1230fa0d5be49ee6140fdfbcb55335aff350970" -"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" -"checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" +"checksum stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c" +"checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" +"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +"checksum strsim 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "032c03039aae92b350aad2e3779c352e104d919cb192ba2fabbd7b831ce4f0f6" +"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" +"checksum subtle 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "01dca13cf6c3b179864ab3292bd794e757618d35a7766b7c46050c614ba00829" "checksum syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)" = "f92e629aa1d9c827b2bb8297046c1ccffc57c99b947a680d3ccff1f136a3bee9" "checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" -"checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" +"checksum synstructure 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "575be94ccb86e8da37efb894a87e2b660be299b41d8ef347f9d6d79fbe61b1ba" "checksum target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe" "checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" -"checksum term 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5e6b677dd1e8214ea1ef4297f85dbcbed8e8cdddb561040cc998ca2551c37561" "checksum term_size 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9e5b9a66db815dcfd2da92db471106457082577c3c278d4138ab3e3b4e189327" -"checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" -"checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" -"checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" +"checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" +"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" "checksum textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0b59b6b4b44d867f1370ef1bd91bfb262bf07bf0ae65c202ea2fbc16153b693" "checksum thread-id 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c7fbf4c9d56b320106cd64fd024dadfa0be7cb4706725fc44a7d7ce952d820c1" -"checksum thread-scoped 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bcbb6aa301e5d3b0b5ef639c9a9c7e2f1c944f177b460c04dc24c69b1fa2bd99" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865" -"checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" +"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" "checksum timer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "31d42176308937165701f50638db1c31586f183f1aab416268216577aec7306b" -"checksum tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e9175261fbdb60781fcd388a4d6cc7e14764a2b629a7ad94abb439aed223a44f" -"checksum tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6e93c78d23cc61aa245a8acd2c4a79c4d7fa7fb5c3ca90d5737029f043a84895" +"checksum tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" +"checksum tinytemplate 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4574b75faccaacddb9b284faecdf0b544b80b6b294f3d062d325c5726a209c20" +"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" +"checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" "checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71" -"checksum tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f90fcd90952f0a496d438a976afba8e5c205fb12123f813d8ab3aa1c8436638c" -"checksum tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c117b6cf86bb730aab4834f10df96e4dd586eff2c3c27d3781348da49e255bde" -"checksum tokio-fs 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b5cbe4ca6e71cb0b62a66e4e6f53a8c06a6eefe46cc5f665ad6f274c9906f135" -"checksum tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "8b8a85fffbec3c5ab1ab62324570230dcd37ee5996a7859da5caf7b9d45e3e8c" +"checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" +"checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" +"checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" +"checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" "checksum tokio-named-pipes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d282d483052288b2308ba5ee795f5673b159c9bdf63c385a05609da782a5eae" -"checksum tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4b26fd37f1125738b2170c80b551f69ff6fecb277e6e5ca885e53eec2b005018" +"checksum tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "c56391be9805bc80163151c0b9e5164ee64f4b0200962c346fea12773158f22d" "checksum tokio-retry 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f05746ae87dca83a2016b4f5dba5b237b897dd12fd324f60afe282112f16969a" -"checksum tokio-rustls 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7223fa02f4b2d9f3736f13cc3dea3723aaec57ca4b3dded922126ebbb2cb8ce9" +"checksum tokio-rustls 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "95a199832a67452c60bed18ed951d28d5755ff57b02b3d2d535d9f13a81ea6c9" "checksum tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" -"checksum tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ad235e9dadd126b2d47f6736f65aa1fdcd6420e66ca63f44177bc78df89f912" -"checksum tokio-threadpool 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "bbd8a8b911301c60cbfaa2a6588fb210e5c1038375b8bdecc47aa09a94c3c05f" +"checksum tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d06554cce1ae4a50f42fba8023918afa931413aded705b560e29600ccf7c6d76" +"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" +"checksum tokio-threadpool 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2bd2c6a3885302581f4401c82af70d792bb9df1700e7437b0aeb4ada94d5388c" "checksum tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6131e780037787ff1b3f8aad9da83bca02438b72277850dd6ad0d455e0e20efc" -"checksum tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3a52f00c97fedb6d535d27f65cccb7181c8dd4c6edc3eda9ea93f6d45d05168e" -"checksum tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "da941144b816d0dcda4db3a1ba87596e4df5e860a72b70783fe435891f80601c" -"checksum tokio-uds 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "22e3aa6d1fcc19e635418dc0a30ab5bd65d347973d6f43f1a37bf8d9d1335fc9" +"checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" +"checksum tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f02298505547f73e60f568359ef0d016d5acd6e830ab9bc7c4a5b3403440121b" +"checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" "checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" -"checksum toolshed 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "450441e131c7663af72e63a33c02a6a1fbaaa8601dc652ed6757813bb55aeec7" -"checksum trace-time 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe82f2f0bf1991e163e757baf044282823155dd326e70f44ce2186c3c320cc9" -"checksum transaction-pool 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "454adc482e32785c3beab9415dd0f3c689f29cc2d16717eb62f6a784d53544b4" +"checksum toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "01d1404644c8b12b16bfcffa4322403a91a451584daaaa7c28d3152e6cbc98cf" +"checksum toolshed 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "54a272adbf14cfbb486774d09ee3e00c38d488cd390084a528f70e10e3a184a8" +"checksum trace-time 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c9adf04084eeb9a1ea91be6c3f8ef3df392391c91fc7d8f696d4875f6754e715" +"checksum transaction-pool 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d8bbee24c711a878e7d8f89460569034cacf2d8c58dde785b5ffa06ed6b59663" "checksum transient-hashmap 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aeb4b191d033a35edfce392a38cdcf9790b6cebcb30fa690c312c29da4dc433e" "checksum trezor-sys 1.0.0 (git+https://github.com/paritytech/trezor-sys)" = "" "checksum trie-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c7319e28ca295f27359d944a682f7f65b419158bf1590c92cadc0000258d788" @@ -4806,42 +5402,45 @@ dependencies = [ "checksum triehash 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d26efb4ddf87870fc08dc9a6580dc3061be350d7b9d0eb30aef1c8b4227aa46" "checksum try-lock 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee2aa4715743892880f70885373966c83d73ef1b0838a664ef0c76fffd35e7c2" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" -"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" -"checksum ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd2be2d6639d0f8fe6cdda291ad456e23629558d466e2789d2c3e9892bda285d" +"checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" +"checksum ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa9b3b49edd3468c0e6565d85783f51af95212b6fa3986a5500954f00b460874" "checksum uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "754ba11732b9161b94c41798e5197e5e75388d012f760c42adb5000353e98646" -"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" -"checksum unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3218ea14b4edcaccfa0df0a64a3792a2c32cc706f1b336e48867f9d3147f90" +"checksum unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2e2e6bd1e59e56598518beb94fd6db628ded570326f0a98c679a304bd9f00150" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -"checksum unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0180bc61fc5a987082bfa111f4cc95c4caff7f9799f3e46df09163a937aa25" -"checksum unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa6024fc12ddfd1c6dbc14a80fa2324d4568849869b779f6bd37e5e4c03344d1" -"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" -"checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" +"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" +"checksum unicode-segmentation 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49f5526225fd8b77342d5986ab5f6055552e9c0776193b5b63fd53b46debfad7" +"checksum unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" "checksum untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" -"checksum url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2a321979c09843d272956e73700d12c4e7d3d92b2ee112b31548aef0d4efc5a6" -"checksum utf8-ranges 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd70f467df6810094968e2fce0ee1bd0e87157aceb026a8c083bcf5e25b9efe4" +"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +"checksum url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61" +"checksum utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b4ae116fef2b7fea257ed6440d3cfcff7f190865f170cdad00bb6465bf18ecba" "checksum validator 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "236a5eda3df2c877872e98dbc55d497d943792e6405d8fc65bd4f8a5e3b53c99" "checksum validator_derive 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d360d6f5754972c0c1da14fb3d5580daa31aee566e1e45e2f8d3bf5950ecd3e9" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum vergen 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c3365f36c57e5df714a34be40902b27a992eeddb9996eca52d0584611cf885d" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum walkdir 2.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "af464bc7be7b785c7ac72e266a6b67c4c9070155606f51655a650a6686204e35" +"checksum walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e" "checksum want 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a05d9d966753fa4b5c8db73fcab5eed4549cfe0e1e4e66911e5564a0085c35d1" -"checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" +"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" +"checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" "checksum wasmi 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b4a6d379e9332b1b1f52c5a87f2481c85c7c931d8ec411963dfb8f26b1ec1e3" "checksum webpki 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4f7e1cd7900a3a6b65a3e8780c51a3e6b59c0e2c55c6dc69578c288d69f7d082" "checksum webpki-roots 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c10fa4212003ba19a564f25cd8ab572c6791f99a03cc219c13ed35ccab00de0e" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" +"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "afc5508759c5bf4285e61feb862b6083c8480aec864fa17a81fdec6f69b461ab" +"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" +"checksum wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9" +"checksum ws 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a2c47b5798ccc774ffb93ff536aec7c4275d722fd9c740c83cdd1af1f2d94" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -"checksum xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a66b7c2281ebde13cf4391d70d4c7e5946c3c25e72a7b859ca8f677dcd0b0c61" +"checksum xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" "checksum xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c1cb601d29fe2c2ac60a2b2e5e293994d87a1f6fa9687a31a15270f909be9c2" "checksum xmltree 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9cfb54ca6b8f17d2377219ce485b134d53561b77e1393c7ea416f543a527431" +"checksum zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "45af6a010d13e4cf5b54c94ba5a2b2eba5596b9e46bf5875612d332a1f2b3f86" +"checksum zeroize_derive 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "080616bd0e31f36095288bb0acdf1f78ef02c2fa15527d7e993f2a6c7591643e" diff --git a/Cargo.toml b/Cargo.toml index 560512b346e..1f034240b95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ description = "Parity Ethereum client" name = "parity-ethereum" # NOTE Make sure to update util/version/Cargo.toml as well -version = "2.5.9" +version = "2.5.10" license = "GPL-3.0" authors = ["Parity Technologies "] @@ -29,7 +29,7 @@ serde_derive = "1.0" futures = "0.1" fdlimit = "0.1" ctrlc = { git = "https://github.com/paritytech/rust-ctrlc.git" } -jsonrpc-core = "10.0.1" +jsonrpc-core = "14.0.0" parity-bytes = "0.1" common-types = { path = "ethcore/types" } ethcore = { path = "ethcore", features = ["parity"] } diff --git a/README.md b/README.md index b2442567257..6594b46377b 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,12 @@ 3.2 [Building from Source Code](#chapter-0032)
3.3 [Simple One-Line Installer for Mac and Linux](#chapter-0033)
3.4 [Starting Parity Ethereum](#chapter-0034) -4. [Documentation](#chapter-004) -5. [Toolchain](#chapter-005) -6. [Community](#chapter-006) -7. [Contributing](#chapter-007) -8. [License](#chapter-008) +4. [Testing](#chapter-004) +5. [Documentation](#chapter-005) +6. [Toolchain](#chapter-006) +7. [Community](#chapter-007) +8. [Contributing](#chapter-008) +9. [License](#chapter-009) ## 1. Description @@ -41,7 +42,7 @@ By default, Parity Ethereum runs a JSON-RPC HTTP server on port `:8545` and a We If you run into problems while using Parity Ethereum, check out the [wiki for documentation](https://wiki.parity.io/), feel free to [file an issue in this repository](https://github.com/paritytech/parity-ethereum/issues/new), or hop on our [Gitter](https://gitter.im/paritytech/parity) or [Riot](https://riot.im/app/#/group/+parity:matrix.parity.io) chat room to ask a question. We are glad to help! **For security-critical issues**, please refer to the security policy outlined in [SECURITY.md](SECURITY.md). -Parity Ethereum's current beta-release is 2.1. You can download it at [the releases page](https://github.com/paritytech/parity-ethereum/releases) or follow the instructions below to build from source. Please, mind the [CHANGELOG.md](CHANGELOG.md) for a list of all changes between different versions. +Parity Ethereum's current beta-release is 2.6. You can download it at [the releases page](https://github.com/paritytech/parity-ethereum/releases) or follow the instructions below to build from source. Please, mind the [CHANGELOG.md](CHANGELOG.md) for a list of all changes between different versions. ## 3. Building @@ -65,7 +66,7 @@ We recommend installing Rust through [rustup](https://www.rustup.rs/). If you do `clang` is required. It comes with Xcode command line tools or can be installed with homebrew. -- Windows +- Windows: Make sure you have Visual Studio 2015 with C++ support installed. Next, download and run the `rustup` installer from https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe, start "VS2015 x64 Native Tools Command Prompt", and use the following command to install and set up the `msvc` toolchain: ```bash @@ -148,7 +149,25 @@ To start Parity Ethereum as a regular user using `systemd` init: 2. Copy release to bin folder, write `sudo install ./target/release/parity /usr/bin/parity` 3. To configure Parity Ethereum, write a `/etc/parity/config.toml` config file, see [Configuring Parity Ethereum](https://paritytech.github.io/wiki/Configuring-Parity) for details. -## 4. Documentation +## 4. Testing + +Download the required test files: `git submodule update --init --recursive`. You can run tests with the following commands: + +* **All** packages + ``` + cargo test --all + ``` + +* Specific package + ``` + cargo test --package + ``` + +Replace `` with one of the packages from the [package list](#package-list) (e.g. `cargo test --package evmbin`). + +You can show your logs in the test output by passing `--nocapture` (i.e. `cargo test --package evmbin -- --nocapture`) + +## 5. Documentation Official website: https://parity.io @@ -160,16 +179,20 @@ You can generate documentation for Parity Ethereum Rust packages that automatica * **All** packages ``` - cargo doc --open + cargo doc --document-private-items --open ``` * Specific package ``` - cargo doc --package --open + cargo doc --package -- --document-private-items --open ``` +Use`--document-private-items` to also view private documentation and `--no-deps` to exclude building documentation for dependencies. + Replacing `` with one of the following from the details section below (i.e. `cargo doc --package parity-ethereum --open`): + +**Package List**

* Parity Ethereum (EthCore) Client Application @@ -330,7 +353,7 @@ Example (generic documentation comment): /// ``` -## 5. Toolchain +## 6. Toolchain In addition to the Parity Ethereum client, there are additional tools in this repository available: @@ -342,7 +365,7 @@ In addition to the Parity Ethereum client, there are additional tools in this re The following tool is available in a separate repository: - [ethabi](https://github.com/paritytech/ethabi) - Parity Ethereum Encoding of Function Calls. [Docs here](https://crates.io/crates/ethabi) -## 6. Community +## 7. Community ### Join the chat! @@ -355,7 +378,7 @@ Questions? Get in touch with us on Gitter: Alternatively, join our community on Matrix: [![Riot: +Parity](https://img.shields.io/badge/riot-%2Bparity%3Amatrix.parity.io-orange.svg)](https://riot.im/app/#/group/+parity:matrix.parity.io) -## 7. Contributing +## 8. Contributing An introduction has been provided in the ["So You Want to be a Core Developer" presentation slides by Hernando Castano](http://tiny.cc/contrib-to-parity-eth). Additional guidelines are provided in [CONTRIBUTING](./.github/CONTRIBUTING.md). @@ -363,6 +386,6 @@ An introduction has been provided in the ["So You Want to be a Core Developer" p [CODE_OF_CONDUCT](./.github/CODE_OF_CONDUCT.md) -## 8. License +## 9. License [LICENSE](./LICENSE) diff --git a/accounts/ethkey/Cargo.toml b/accounts/ethkey/Cargo.toml index c10949622c9..e432a118203 100644 --- a/accounts/ethkey/Cargo.toml +++ b/accounts/ethkey/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Parity Technologies "] [dependencies] edit-distance = "2.0" parity-crypto = "0.3.0" -eth-secp256k1 = { git = "https://github.com/paritytech/rust-secp256k1" } +eth-secp256k1 = { git = "https://github.com/paritytech/rust-secp256k1", rev = "ccc06e7480148b723eb44ac56cf4d20eec380b6f" } ethereum-types = "0.4" lazy_static = "1.0" log = "0.4" diff --git a/cli-signer/rpc-client/Cargo.toml b/cli-signer/rpc-client/Cargo.toml index 50565c0b34d..2e38f834e60 100644 --- a/cli-signer/rpc-client/Cargo.toml +++ b/cli-signer/rpc-client/Cargo.toml @@ -12,10 +12,10 @@ futures = "0.1" log = "0.4" serde = "1.0" serde_json = "1.0" -url = "1.2.0" +url = "2" matches = "0.1" -parking_lot = "0.7" -jsonrpc-core = "10.0.1" -jsonrpc-ws-server = "10.0.1" +parking_lot = "0.9" +jsonrpc-core = "14.0.3" +jsonrpc-ws-server = "14.0.3" parity-rpc = { path = "../../rpc" } keccak-hash = "0.1" diff --git a/ethash/Cargo.toml b/ethash/Cargo.toml index 59d26e128ec..06ee93f8892 100644 --- a/ethash/Cargo.toml +++ b/ethash/Cargo.toml @@ -27,7 +27,9 @@ bench = [] [[bench]] name = "basic" harness = false +required-features = ['bench'] [[bench]] name = "progpow" harness = false +required-features = ['bench'] diff --git a/ethcore/Cargo.toml b/ethcore/Cargo.toml index 16013d54795..c3761ba9fce 100644 --- a/ethcore/Cargo.toml +++ b/ethcore/Cargo.toml @@ -9,7 +9,6 @@ authors = ["Parity Technologies "] [dependencies] ansi_term = "0.10" blooms-db = { path = "../util/blooms-db", optional = true } -bn = { git = "https://github.com/paritytech/bn", default-features = false } byteorder = "1.0" common-types = { path = "types" } crossbeam-utils = "0.6" @@ -22,6 +21,7 @@ ethabi-derive = "6.0" ethash = { path = "../ethash" } ethcore-blockchain = { path = "./blockchain" } ethcore-bloom-journal = { path = "../util/bloom" } +ethcore-builtin = { path = "./builtin" } ethcore-call-contract = { path = "./call-contract" } ethcore-db = { path = "./db" } ethcore-io = { path = "../util/io" } @@ -46,11 +46,9 @@ log = "0.4" lru-cache = "0.1" macros = { path = "../util/macros" } memory-cache = { path = "../util/memory-cache" } -memory-db = "0.11.0" -num = { version = "0.1", default-features = false, features = ["bigint"] } +memory-db = "0.11" num_cpus = "1.2" parity-bytes = "0.1" -parity-crypto = "0.3.0" parity-snappy = "0.1" parking_lot = "0.7" trie-db = "0.11.0" @@ -91,7 +89,8 @@ parity = ["work-notify", "price-info", "stratum"] # but might be omitted for other dependent crates. work-notify = ["ethcore-miner/work-notify"] price-info = ["ethcore-miner/price-info"] -stratum = ["ethcore-stratum"] +stratum = [ "ethcore-stratum" ] + # Disables seal verification for mined blocks. # This allows you to submit any seal via RPC to test and benchmark diff --git a/ethcore/benches/builtin.rs b/ethcore/benches/builtin.rs index d7ed483dd03..e3e56eb7e19 100644 --- a/ethcore/benches/builtin.rs +++ b/ethcore/benches/builtin.rs @@ -19,7 +19,7 @@ extern crate criterion; #[macro_use] extern crate lazy_static; - +extern crate ethcore_builtin; extern crate ethcore; extern crate ethereum_types; extern crate parity_bytes as bytes; @@ -27,7 +27,7 @@ extern crate rustc_hex; use criterion::{Criterion, Bencher}; use bytes::BytesRef; -use ethcore::builtin::Builtin; +use ethcore_builtin::Builtin; use ethcore::machine::EthereumMachine; use ethereum_types::U256; use ethcore::ethereum::new_byzantium_test_machine; @@ -56,10 +56,6 @@ impl<'a> BuiltinBenchmark<'a> { } } - fn gas_cost(&self) -> U256 { - self.builtin.cost(&self.input) - } - fn run(&self, b: &mut Bencher) { let mut output = vec![0; self.expected.len()]; diff --git a/ethcore/blockchain/src/blockchain.rs b/ethcore/blockchain/src/blockchain.rs index c5759d3462e..1ff1f71f817 100644 --- a/ethcore/blockchain/src/blockchain.rs +++ b/ethcore/blockchain/src/blockchain.rs @@ -195,6 +195,12 @@ pub trait BlockProvider { where F: Fn(&LogEntry) -> bool + Send + Sync, Self: Sized; } +/// Interface for querying blocks with pending db transaction by hash and by number. +trait InTransactionBlockProvider { + /// Get the familial details concerning a block. + fn uncommitted_block_details(&self, hash: &H256) -> Option; +} + #[derive(Debug, Hash, Eq, PartialEq, Clone)] enum CacheId { BlockHeader(H256), @@ -424,6 +430,19 @@ impl BlockProvider for BlockChain { } } +impl InTransactionBlockProvider for BlockChain { + fn uncommitted_block_details(&self, hash: &H256) -> Option { + let result = self.db.key_value().read_with_two_layer_cache( + db::COL_EXTRA, + &self.pending_block_details, + &self.block_details, + hash + )?; + self.cache_man.lock().note_used(CacheId::BlockDetails(*hash)); + Some(result) + } +} + /// An iterator which walks the blockchain towards the genesis. #[derive(Clone)] pub struct AncestryIter<'a> { @@ -592,7 +611,7 @@ impl BlockChain { let best_block_rlp = bc.block(&best_block_hash) .expect("Best block is from a known block hash; qed"); - // and write them + // and write them to the cache. let mut best_block = bc.best_block.write(); *best_block = BestBlock { total_difficulty: best_block_total_difficulty, @@ -795,7 +814,7 @@ impl BlockChain { batch.put(db::COL_HEADERS, &hash, &compressed_header); batch.put(db::COL_BODIES, &hash, &compressed_body); - let maybe_parent = self.block_details(&block_parent_hash); + let maybe_parent = self.uncommitted_block_details(&block_parent_hash); if let Some(parent_details) = maybe_parent { // parent known to be in chain. @@ -858,12 +877,31 @@ impl BlockChain { } } - /// clears all caches for testing purposes + /// clears all caches, re-loads best block from disk for testing purposes pub fn clear_cache(&self) { self.block_bodies.write().clear(); self.block_details.write().clear(); self.block_hashes.write().clear(); self.block_headers.write().clear(); + // Fetch best block details from disk + let best_block_hash = self.db.key_value().get(db::COL_EXTRA, b"best") + .expect("Low-level database error when fetching 'best' block. Some issue with disk?") + .as_ref() + .map(|r| H256::from_slice(r)) + .unwrap(); + let best_block_total_difficulty = self.block_details(&best_block_hash) + .expect("Best block is from a known block hash; a known block hash always comes with a known block detail; qed") + .total_difficulty; + let best_block_rlp = self.block(&best_block_hash) + .expect("Best block is from a known block hash; qed"); + + // and write them to the cache + let mut best_block = self.best_block.write(); + *best_block = BestBlock { + total_difficulty: best_block_total_difficulty, + header: best_block_rlp.decode_header(), + block: best_block_rlp, + }; } /// Update the best ancient block to the given hash, after checking that @@ -1033,7 +1071,7 @@ impl BlockChain { /// /// Used in snapshots to glue the chunks together at the end. pub fn add_child(&self, batch: &mut DBTransaction, block_hash: H256, child_hash: H256) { - let mut parent_details = self.block_details(&block_hash) + let mut parent_details = self.uncommitted_block_details(&block_hash) .unwrap_or_else(|| panic!("Invalid block hash: {:?}", block_hash)); parent_details.children.push(child_hash); @@ -1140,7 +1178,7 @@ impl BlockChain { /// Mark a block to be considered finalized. Returns `Some(())` if the operation succeeds, and `None` if the block /// hash is not found. pub fn mark_finalized(&self, batch: &mut DBTransaction, block_hash: H256) -> Option<()> { - let mut block_details = self.block_details(&block_hash)?; + let mut block_details = self.uncommitted_block_details(&block_hash)?; block_details.is_finalized = true; self.update_block_details(batch, block_hash, block_details); @@ -1333,7 +1371,7 @@ impl BlockChain { /// Uses the given parent details or attempts to load them from the database. fn prepare_block_details_update(&self, parent_hash: H256, info: &BlockInfo, is_finalized: bool) -> HashMap { // update parent - let mut parent_details = self.block_details(&parent_hash).unwrap_or_else(|| panic!("Invalid parent hash: {:?}", parent_hash)); + let mut parent_details = self.uncommitted_block_details(&parent_hash).unwrap_or_else(|| panic!("Invalid parent hash: {:?}", parent_hash)); parent_details.children.push(info.hash); // create current block details. @@ -1638,7 +1676,7 @@ mod tests { let fork_choice = { let header = block.header_view(); let parent_hash = header.parent_hash(); - let parent_details = bc.block_details(&parent_hash).unwrap_or_else(|| panic!("Invalid parent hash: {:?}", parent_hash)); + let parent_details = bc.uncommitted_block_details(&parent_hash).unwrap_or_else(|| panic!("Invalid parent hash: {:?}", parent_hash)); let block_total_difficulty = parent_details.total_difficulty + header.difficulty(); if block_total_difficulty > bc.best_block_total_difficulty() { common_types::engines::ForkChoice::New diff --git a/ethcore/builtin/Cargo.toml b/ethcore/builtin/Cargo.toml new file mode 100644 index 00000000000..00623cc9ed2 --- /dev/null +++ b/ethcore/builtin/Cargo.toml @@ -0,0 +1,23 @@ +[package] +description = "ethereum vm builtin" +name = "ethcore-builtin" +version = "0.1.0" +authors = ["Parity Technologies "] +edition = "2018" + +[dependencies] +bn = { git = "https://github.com/paritytech/bn", default-features = false } +byteorder = "1.3.2" +eip-152 = { path = "../../util/EIP-152" } +ethereum-types = "0.4" +ethjson = { path = "../../json" } +ethkey = { path = "../../accounts/ethkey" } +keccak-hash = "0.1.0" +log = "0.4" +macros = { path = "../../util/macros" } +num = { version = "0.1", default-features = false, features = ["bigint"] } +parity-bytes = "0.1" +parity-crypto = "0.4.0" + +[dev-dependencies] +hex-literal = "0.2.1" diff --git a/ethcore/src/builtin.rs b/ethcore/builtin/src/lib.rs similarity index 75% rename from ethcore/src/builtin.rs rename to ethcore/builtin/src/lib.rs index bca2aeeaac1..f03e85d0f00 100644 --- a/ethcore/src/builtin.rs +++ b/ethcore/builtin/src/lib.rs @@ -16,51 +16,38 @@ //! Standard built-in contracts. +#![warn(missing_docs)] + use std::{ cmp::{max, min}, + collections::BTreeMap, + convert::{TryFrom, TryInto}, io::{self, Read, Cursor}, mem::size_of, + str::FromStr }; -use bn; -use byteorder::{BigEndian, LittleEndian, ByteOrder, ReadBytesExt}; +use byteorder::{BigEndian, LittleEndian, ReadBytesExt}; use ethereum_types::{H256, U256}; use ethjson; use ethkey::{Signature, recover as ec_recover}; -use hash::keccak; +use eip_152::compress; +use keccak_hash::keccak; use log::{warn, trace}; use num::{BigUint, Zero, One}; -use bytes::BytesRef; +use parity_bytes::BytesRef; use parity_crypto::digest; -use eip_152::compress; - -/// Execution error. -#[derive(Debug, PartialEq)] -pub struct Error(pub &'static str); - -impl From<&'static str> for Error { - fn from(val: &'static str) -> Self { - Error(val) - } -} - -impl Into<::vm::Error> for Error { - fn into(self) -> ::vm::Error { - ::vm::Error::BuiltIn(self.0) - } -} /// Native implementation of a built-in contract. -pub trait Impl: Send + Sync { +pub trait Implementation: Send + Sync { /// execute this built-in on the given input, writing to the given output. - fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), Error>; + fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), &'static str>; } /// A gas pricing scheme for built-in contracts. -// TODO: refactor this trait, see https://github.com/paritytech/parity-ethereum/issues/11014 trait Pricer: Send + Sync { /// The gas cost of running this built-in for the given input data at block number `at` - fn cost(&self, input: &[u8], at: u64) -> U256; + fn cost(&self, input: &[u8]) -> U256; } /// Pricing for the Blake2 compression function (aka "F"). @@ -69,79 +56,94 @@ trait Pricer: Send + Sync { pub type Blake2FPricer = u64; impl Pricer for Blake2FPricer { - fn cost(&self, input: &[u8], _at: u64) -> U256 { - use std::convert::TryInto; - let (rounds_bytes, _) = input.split_at(std::mem::size_of::()); + fn cost(&self, input: &[u8]) -> U256 { + const FOUR: usize = std::mem::size_of::(); // Returning zero if the conversion fails is fine because `execute()` will check the length // and bail with the appropriate error. + if input.len() < FOUR { + return U256::zero(); + } + let (rounds_bytes, _) = input.split_at(FOUR); let rounds = u32::from_be_bytes(rounds_bytes.try_into().unwrap_or([0u8; 4])); -// U256::from(*self as u128 * rounds as u128) U256::from(*self as u64 * rounds as u64) } } +/// Pricing model +#[derive(Debug)] +enum Pricing { + AltBn128Pairing(AltBn128PairingPricer), + AltBn128ConstOperations(AltBn128ConstOperations), + Blake2F(Blake2FPricer), + Linear(Linear), + Modexp(ModexpPricer), +} + +impl Pricer for Pricing { + fn cost(&self, input: &[u8]) -> U256 { + match self { + Pricing::AltBn128Pairing(inner) => inner.cost(input), + Pricing::AltBn128ConstOperations(inner) => inner.cost(input), + Pricing::Blake2F(inner) => inner.cost(input), + Pricing::Linear(inner) => inner.cost(input), + Pricing::Modexp(inner) => inner.cost(input), + } + } +} + /// A linear pricing model. This computes a price using a base cost and a cost per-word. +#[derive(Debug)] struct Linear { - base: usize, - word: usize, + base: u64, + word: u64, } /// A special pricing model for modular exponentiation. +#[derive(Debug)] struct ModexpPricer { - divisor: usize, + divisor: u64, } impl Pricer for Linear { - fn cost(&self, input: &[u8], _at: u64) -> U256 { + fn cost(&self, input: &[u8]) -> U256 { U256::from(self.base) + U256::from(self.word) * U256::from((input.len() + 31) / 32) } } -/// alt_bn128 constant operations (add and mul) pricing model. -struct AltBn128ConstOperations { - price: usize, - eip1108_transition_at: u64, - eip1108_transition_price: usize, -} - -impl Pricer for AltBn128ConstOperations { - fn cost(&self, _input: &[u8], at: u64) -> U256 { - if at >= self.eip1108_transition_at { - self.eip1108_transition_price.into() - } else { - self.price.into() - } - } -} - /// alt_bn128 pairing price #[derive(Debug, Copy, Clone)] struct AltBn128PairingPrice { - base: usize, - pair: usize, + base: u64, + pair: u64, } /// alt_bn128_pairing pricing model. This computes a price using a base cost and a cost per pair. +#[derive(Debug)] struct AltBn128PairingPricer { price: AltBn128PairingPrice, - eip1108_transition_at: u64, - eip1108_transition_price: AltBn128PairingPrice, } -impl Pricer for AltBn128PairingPricer { - fn cost(&self, input: &[u8], at: u64) -> U256 { - let price = if at >= self.eip1108_transition_at { - self.eip1108_transition_price - } else { - self.price - }; +/// Pricing for constant alt_bn128 operations (ECADD and ECMUL) +#[derive(Debug, Copy, Clone)] +pub struct AltBn128ConstOperations { + /// Fixed price. + pub price: u64, +} - U256::from(price.base) + U256::from(price.pair) * U256::from(input.len() / 192) +impl Pricer for AltBn128ConstOperations { + fn cost(&self, _input: &[u8]) -> U256 { + self.price.into() + } +} + +impl Pricer for AltBn128PairingPricer { + fn cost(&self, input: &[u8]) -> U256 { + U256::from(self.price.base) + U256::from(self.price.pair) * U256::from(input.len() / 192) } } impl Pricer for ModexpPricer { - fn cost(&self, input: &[u8], _at: u64) -> U256 { + fn cost(&self, input: &[u8]) -> U256 { let mut reader = input.chain(io::repeat(0)); let mut buf = [0; 32]; @@ -166,8 +168,10 @@ impl Pricer for ModexpPricer { let m = max(mod_len, base_len); // read fist 32-byte word of the exponent. - let exp_low = if base_len + 96 >= input.len() as u64 { U256::zero() } else { - let mut buf = [0; 32]; + let exp_low = if base_len + 96 >= input.len() as u64 { + U256::zero() + } else { + buf.iter_mut().for_each(|b| *b = 0); let mut reader = input[(96 + base_len as usize)..].chain(io::repeat(0)); let len = min(exp_len, 32) as usize; reader.read_exact(&mut buf[(32 - len)..]).expect("reading from zero-extended memory cannot fail; qed"); @@ -198,7 +202,7 @@ impl ModexpPricer { match x { x if x <= 64 => x * x, x if x <= 1024 => (x * x) / 4 + 96 * x - 3072, - x => (x * x) / 16 + 480 * x - 199680, + x => (x * x) / 16 + 480 * x - 199_680, } } } @@ -207,147 +211,189 @@ impl ModexpPricer { /// /// Call `cost` to compute cost for the given input, `execute` to execute the contract /// on the given input, and `is_active` to determine whether the contract is active. -/// -/// Unless `is_active` is true, pub struct Builtin { - pricer: Box, - native: Box, - activate_at: u64, + pricer: BTreeMap, + native: EthereumBuiltin, } impl Builtin { /// Simple forwarder for cost. + /// + /// Return the cost of the most recently activated pricer at the current block number. + /// + /// If no pricer is actived `zero` is returned + /// + /// If multiple `activation_at` has the same block number the last one is used + /// (follows `BTreeMap` semantics). + #[inline] pub fn cost(&self, input: &[u8], at: u64) -> U256 { - self.pricer.cost(input, at) + if let Some((_, pricer)) = self.pricer.range(0..=at).last() { + pricer.cost(input) + } else { + U256::zero() + } } /// Simple forwarder for execute. - pub fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), Error> { + #[inline] + pub fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), &'static str> { self.native.execute(input, output) } /// Whether the builtin is activated at the given block number. + #[inline] pub fn is_active(&self, at: u64) -> bool { - at >= self.activate_at + self.pricer.range(0..=at).last().is_some() } } -impl From for Builtin { - fn from(b: ethjson::spec::Builtin) -> Self { - let pricer: Box = match b.pricing { - ethjson::spec::Pricing::Blake2F { gas_per_round } => { - Box::new(gas_per_round) - }, - ethjson::spec::Pricing::Linear(linear) => { - Box::new(Linear { +impl TryFrom for Builtin { + type Error = String; + + fn try_from(b: ethjson::spec::builtin::Builtin) -> Result { + let native = EthereumBuiltin::from_str(&b.name)?; + let mut pricer = BTreeMap::new(); + + for (activate_at, p) in b.pricing { + pricer.insert(activate_at, p.price.into()); + } + + Ok(Self { pricer, native }) + } +} + +impl From for Pricing { + fn from(pricing: ethjson::spec::builtin::Pricing) -> Self { + match pricing { + ethjson::spec::builtin::Pricing::Blake2F { gas_per_round } => { + Pricing::Blake2F(gas_per_round) + } + ethjson::spec::builtin::Pricing::Linear(linear) => { + Pricing::Linear(Linear { base: linear.base, word: linear.word, }) } - ethjson::spec::Pricing::Modexp(exp) => { - Box::new(ModexpPricer { + ethjson::spec::builtin::Pricing::Modexp(exp) => { + Pricing::Modexp(ModexpPricer { divisor: if exp.divisor == 0 { - warn!(target: "builtin", "Zero modexp divisor specified. Falling back to default."); + warn!(target: "builtin", "Zero modexp divisor specified. Falling back to default: 10."); 10 } else { exp.divisor } }) } - ethjson::spec::Pricing::AltBn128Pairing(pricer) => { - Box::new(AltBn128PairingPricer { + ethjson::spec::builtin::Pricing::AltBn128Pairing(pricer) => { + Pricing::AltBn128Pairing(AltBn128PairingPricer { price: AltBn128PairingPrice { base: pricer.base, pair: pricer.pair, }, - eip1108_transition_at: b.eip1108_transition.map_or(u64::max_value(), Into::into), - eip1108_transition_price: AltBn128PairingPrice { - base: pricer.eip1108_transition_base, - pair: pricer.eip1108_transition_pair, - }, }) } - ethjson::spec::Pricing::AltBn128ConstOperations(pricer) => { - Box::new(AltBn128ConstOperations { - price: pricer.price, - eip1108_transition_price: pricer.eip1108_transition_price, - eip1108_transition_at: b.eip1108_transition.map_or(u64::max_value(), Into::into) + ethjson::spec::builtin::Pricing::AltBn128ConstOperations(pricer) => { + Pricing::AltBn128ConstOperations(AltBn128ConstOperations { + price: pricer.price }) } - }; - - Builtin { - pricer, - native: ethereum_builtin(&b.name), - activate_at: b.activate_at.map_or(0, Into::into), } } } -/// Ethereum built-in factory. -pub fn ethereum_builtin(name: &str) -> Box { - match name { - "identity" => Box::new(Identity) as Box, - "ecrecover" => Box::new(EcRecover) as Box, - "sha256" => Box::new(Sha256) as Box, - "ripemd160" => Box::new(Ripemd160) as Box, - "modexp" => Box::new(ModexpImpl) as Box, - "alt_bn128_add" => Box::new(Bn128AddImpl) as Box, - "alt_bn128_mul" => Box::new(Bn128MulImpl) as Box, - "alt_bn128_pairing" => Box::new(Bn128PairingImpl) as Box, - "blake2_f" => Box::new(Blake2F) as Box, - _ => panic!("invalid builtin name: {}", name), +/// Ethereum builtins: +enum EthereumBuiltin { + /// The identity function + Identity(Identity), + /// ec recovery + EcRecover(EcRecover), + /// sha256 + Sha256(Sha256), + /// ripemd160 + Ripemd160(Ripemd160), + /// modexp (EIP 198) + Modexp(Modexp), + /// alt_bn128_add + Bn128Add(Bn128Add), + /// alt_bn128_mul + Bn128Mul(Bn128Mul), + /// alt_bn128_pairing + Bn128Pairing(Bn128Pairing), + /// blake2_f (The Blake2 compression function F, EIP-152) + Blake2F(Blake2F) +} + +impl FromStr for EthereumBuiltin { + type Err = String; + + fn from_str(name: &str) -> Result { + match name { + "identity" => Ok(EthereumBuiltin::Identity(Identity)), + "ecrecover" => Ok(EthereumBuiltin::EcRecover(EcRecover)), + "sha256" => Ok(EthereumBuiltin::Sha256(Sha256)), + "ripemd160" => Ok(EthereumBuiltin::Ripemd160(Ripemd160)), + "modexp" => Ok(EthereumBuiltin::Modexp(Modexp)), + "alt_bn128_add" => Ok(EthereumBuiltin::Bn128Add(Bn128Add)), + "alt_bn128_mul" => Ok(EthereumBuiltin::Bn128Mul(Bn128Mul)), + "alt_bn128_pairing" => Ok(EthereumBuiltin::Bn128Pairing(Bn128Pairing)), + "blake2_f" => Ok(EthereumBuiltin::Blake2F(Blake2F)), + _ => return Err(format!("invalid builtin name: {}", name)), + } } } -// Ethereum builtins: -// -// - The identity function -// - ec recovery -// - sha256 -// - ripemd160 -// - modexp (EIP198) -// - alt_bn128_add -// - alt_bn128_mul -// - alt_bn128_pairing -// - blake2_f (The Blake2 compression function F, EIP-152) +impl Implementation for EthereumBuiltin { + fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), &'static str> { + match self { + EthereumBuiltin::Identity(inner) => inner.execute(input, output), + EthereumBuiltin::EcRecover(inner) => inner.execute(input, output), + EthereumBuiltin::Sha256(inner) => inner.execute(input, output), + EthereumBuiltin::Ripemd160(inner) => inner.execute(input, output), + EthereumBuiltin::Modexp(inner) => inner.execute(input, output), + EthereumBuiltin::Bn128Add(inner) => inner.execute(input, output), + EthereumBuiltin::Bn128Mul(inner) => inner.execute(input, output), + EthereumBuiltin::Bn128Pairing(inner) => inner.execute(input, output), + EthereumBuiltin::Blake2F(inner) => inner.execute(input, output), + } + } +} #[derive(Debug)] -struct Identity; +pub struct Identity; #[derive(Debug)] -struct EcRecover; +pub struct EcRecover; #[derive(Debug)] -struct Sha256; +pub struct Sha256; #[derive(Debug)] -struct Ripemd160; +pub struct Ripemd160; #[derive(Debug)] -struct ModexpImpl; +pub struct Modexp; #[derive(Debug)] -struct Bn128AddImpl; +pub struct Bn128Add; #[derive(Debug)] -struct Bn128MulImpl; +pub struct Bn128Mul; #[derive(Debug)] -struct Bn128PairingImpl; +pub struct Bn128Pairing; #[derive(Debug)] -struct Blake2F; +pub struct Blake2F; -impl Impl for Identity { -fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), Error> { +impl Implementation for Identity { + fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), &'static str> { output.write(0, input); Ok(()) } } -impl Impl for EcRecover { - fn execute(&self, i: &[u8], output: &mut BytesRef) -> Result<(), Error> { +impl Implementation for EcRecover { + fn execute(&self, i: &[u8], output: &mut BytesRef) -> Result<(), &'static str> { let len = min(i.len(), 128); let mut input = [0; 128]; @@ -359,7 +405,7 @@ impl Impl for EcRecover { let s = H256::from_slice(&input[96..128]); let bit = match v[31] { - 27 | 28 if &v.0[..31] == &[0; 31] => v[31] - 27, + 27 | 28 if v.0[..31] == [0; 31] => v[31] - 27, _ => { return Ok(()); }, }; @@ -376,18 +422,18 @@ impl Impl for EcRecover { } } -impl Impl for Sha256 { - fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), Error> { +impl Implementation for Sha256 { + fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), &'static str> { let d = digest::sha256(input); output.write(0, &*d); Ok(()) } } -impl Impl for Blake2F { +impl Implementation for Blake2F { /// Format of `input`: /// [4 bytes for rounds][64 bytes for h][128 bytes for m][8 bytes for t_0][8 bytes for t_1][1 byte for f] - fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), Error> { + fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), &'static str> { const BLAKE2_F_ARG_LEN: usize = 213; const PROOF: &str = "Checked the length of the input above; qed"; @@ -401,13 +447,13 @@ impl Impl for Blake2F { // state vector, h let mut h = [0u64; 8]; - for state_word in h.iter_mut() { + for state_word in &mut h { *state_word = cursor.read_u64::().expect(PROOF); } // message block vector, m let mut m = [0u64; 16]; - for msg_word in m.iter_mut() { + for msg_word in &mut m { *msg_word = cursor.read_u64::().expect(PROOF); } @@ -438,8 +484,8 @@ impl Impl for Blake2F { } } -impl Impl for Ripemd160 { - fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), Error> { +impl Implementation for Ripemd160 { + fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), &'static str> { let hash = digest::ripemd160(input); output.write(0, &[0; 12][..]); output.write(12, &hash); @@ -460,7 +506,7 @@ fn modexp(mut base: BigUint, exp: Vec, modulus: BigUint) -> BigUint { let mut exp = exp.into_iter().skip_while(|d| *d == 0).peekable(); // n^0 % m - if let None = exp.peek() { + if exp.peek().is_none() { return BigUint::one(); } @@ -469,7 +515,7 @@ fn modexp(mut base: BigUint, exp: Vec, modulus: BigUint) -> BigUint { return BigUint::zero(); } - base = base % &modulus; + base %= &modulus; // Fast path for base divisible by modulus. if base.is_zero() { return BigUint::zero() } @@ -495,8 +541,8 @@ fn modexp(mut base: BigUint, exp: Vec, modulus: BigUint) -> BigUint { result } -impl Impl for ModexpImpl { - fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), Error> { +impl Implementation for Modexp { + fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), &'static str> { let mut reader = input.chain(io::repeat(0)); let mut buf = [0; 32]; @@ -505,7 +551,9 @@ impl Impl for ModexpImpl { // but so would running out of addressable memory! let mut read_len = |reader: &mut io::Chain<&[u8], io::Repeat>| { reader.read_exact(&mut buf[..]).expect("reading from zero-extended memory cannot fail; qed"); - BigEndian::read_u64(&buf[24..]) as usize + let mut len_bytes = [0u8; 8]; + len_bytes.copy_from_slice(&buf[24..]); + u64::from_be_bytes(len_bytes) as usize }; let base_len = read_len(&mut reader); @@ -547,35 +595,35 @@ impl Impl for ModexpImpl { } } -fn read_fr(reader: &mut io::Chain<&[u8], io::Repeat>) -> Result<::bn::Fr, Error> { +fn read_fr(reader: &mut io::Chain<&[u8], io::Repeat>) -> Result { let mut buf = [0u8; 32]; reader.read_exact(&mut buf[..]).expect("reading from zero-extended memory cannot fail; qed"); - ::bn::Fr::from_slice(&buf[0..32]).map_err(|_| Error::from("Invalid field element")) + bn::Fr::from_slice(&buf[0..32]).map_err(|_| "Invalid field element") } -fn read_point(reader: &mut io::Chain<&[u8], io::Repeat>) -> Result<::bn::G1, Error> { +fn read_point(reader: &mut io::Chain<&[u8], io::Repeat>) -> Result { use bn::{Fq, AffineG1, G1, Group}; let mut buf = [0u8; 32]; reader.read_exact(&mut buf[..]).expect("reading from zero-extended memory cannot fail; qed"); - let px = Fq::from_slice(&buf[0..32]).map_err(|_| Error::from("Invalid point x coordinate"))?; + let px = Fq::from_slice(&buf[0..32]).map_err(|_| "Invalid point x coordinate")?; reader.read_exact(&mut buf[..]).expect("reading from zero-extended memory cannot fail; qed"); - let py = Fq::from_slice(&buf[0..32]).map_err(|_| Error::from("Invalid point y coordinate"))?; + let py = Fq::from_slice(&buf[0..32]).map_err(|_| "Invalid point y coordinate")?; Ok( if px == Fq::zero() && py == Fq::zero() { G1::zero() } else { - AffineG1::new(px, py).map_err(|_| Error::from("Invalid curve point"))?.into() + AffineG1::new(px, py).map_err(|_| "Invalid curve point")?.into() } ) } -impl Impl for Bn128AddImpl { +impl Implementation for Bn128Add { // Can fail if any of the 2 points does not belong the bn128 curve - fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), Error> { + fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), &'static str> { use bn::AffineG1; let mut padded_input = input.chain(io::repeat(0)); @@ -594,9 +642,9 @@ impl Impl for Bn128AddImpl { } } -impl Impl for Bn128MulImpl { +impl Implementation for Bn128Mul { // Can fail if first paramter (bn128 curve point) does not actually belong to the curve - fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), Error> { + fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), &'static str> { use bn::AffineG1; let mut padded_input = input.chain(io::repeat(0)); @@ -614,12 +662,12 @@ impl Impl for Bn128MulImpl { } } -impl Impl for Bn128PairingImpl { +impl Implementation for Bn128Pairing { /// Can fail if: /// - input length is not a multiple of 192 /// - any of odd points does not belong to bn128 curve /// - any of even points does not belong to the twisted bn128 curve over the field F_p^2 = F_p[i] / (i^2 + 1) - fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), Error> { + fn execute(&self, input: &[u8], output: &mut BytesRef) -> Result<(), &'static str> { if input.len() % 192 != 0 { return Err("Invalid input length, must be multiple of 192 (3 * (32*2))".into()) } @@ -632,45 +680,46 @@ impl Impl for Bn128PairingImpl { } } -impl Bn128PairingImpl { - fn execute_with_error(&self, input: &[u8], output: &mut BytesRef) -> Result<(), Error> { +impl Bn128Pairing { + fn execute_with_error(&self, input: &[u8], output: &mut BytesRef) -> Result<(), &'static str> { use bn::{AffineG1, AffineG2, Fq, Fq2, pairing, G1, G2, Gt, Group}; - let elements = input.len() / 192; // (a, b_a, b_b - each 64-byte affine coordinates) - let ret_val = if input.len() == 0 { + let ret_val = if input.is_empty() { U256::one() } else { + // (a, b_a, b_b - each 64-byte affine coordinates) + let elements = input.len() / 192; let mut vals = Vec::new(); for idx in 0..elements { let a_x = Fq::from_slice(&input[idx*192..idx*192+32]) - .map_err(|_| Error::from("Invalid a argument x coordinate"))?; + .map_err(|_| "Invalid a argument x coordinate")?; let a_y = Fq::from_slice(&input[idx*192+32..idx*192+64]) - .map_err(|_| Error::from("Invalid a argument y coordinate"))?; + .map_err(|_| "Invalid a argument y coordinate")?; let b_a_y = Fq::from_slice(&input[idx*192+64..idx*192+96]) - .map_err(|_| Error::from("Invalid b argument imaginary coeff x coordinate"))?; + .map_err(|_| "Invalid b argument imaginary coeff x coordinate")?; let b_a_x = Fq::from_slice(&input[idx*192+96..idx*192+128]) - .map_err(|_| Error::from("Invalid b argument imaginary coeff y coordinate"))?; + .map_err(|_| "Invalid b argument imaginary coeff y coordinate")?; let b_b_y = Fq::from_slice(&input[idx*192+128..idx*192+160]) - .map_err(|_| Error::from("Invalid b argument real coeff x coordinate"))?; + .map_err(|_| "Invalid b argument real coeff x coordinate")?; let b_b_x = Fq::from_slice(&input[idx*192+160..idx*192+192]) - .map_err(|_| Error::from("Invalid b argument real coeff y coordinate"))?; + .map_err(|_| "Invalid b argument real coeff y coordinate")?; let b_a = Fq2::new(b_a_x, b_a_y); let b_b = Fq2::new(b_b_x, b_b_y); let b = if b_a.is_zero() && b_b.is_zero() { G2::zero() } else { - G2::from(AffineG2::new(b_a, b_b).map_err(|_| Error::from("Invalid b argument - not on curve"))?) + G2::from(AffineG2::new(b_a, b_b).map_err(|_| "Invalid b argument - not on curve")?) }; let a = if a_x.is_zero() && a_y.is_zero() { G1::zero() } else { - G1::from(AffineG1::new(a_x, a_y).map_err(|_| Error::from("Invalid a argument - not on curve"))?) + G1::from(AffineG1::new(a_x, a_y).map_err(|_| "Invalid a argument - not on curve")?) }; vals.push((a, b)); }; @@ -694,19 +743,26 @@ impl Bn128PairingImpl { #[cfg(test)] mod tests { + use std::convert::TryFrom; use ethereum_types::U256; - use ethjson::uint::Uint; + use ethjson::spec::builtin::{ + Builtin as JsonBuiltin, Linear as JsonLinearPricing, + PricingAt, AltBn128Pairing as JsonAltBn128PairingPricing, Pricing as JsonPricing, + }; + use hex_literal::hex; + use macros::map; use num::{BigUint, Zero, One}; - use bytes::BytesRef; -use hex_literal::hex; - use super::{Builtin, Linear, ethereum_builtin, Pricer, ModexpPricer, modexp as me}; + use parity_bytes::BytesRef; + use super::{ + BTreeMap, Builtin, EthereumBuiltin, FromStr, Implementation, Linear, + ModexpPricer, modexp as me, Pricing + }; #[test] fn blake2f_cost() { let f = Builtin { - pricer: Box::new(123), - native: ethereum_builtin("blake2_f"), - activate_at: 0, + pricer: map![0 => Pricing::Blake2F(123)], + native: EthereumBuiltin::from_str("blake2_f").unwrap(), }; // 5 rounds let input = hex!("0000000548c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001"); @@ -716,45 +772,57 @@ use hex_literal::hex; assert_eq!(f.cost(&input[..], 0), U256::from(123*5)); } + #[test] + fn blake2f_cost_on_invalid_length() { + let f = Builtin { + pricer: map![0 => Pricing::Blake2F(123)], + native: EthereumBuiltin::from_str("blake2_f").expect("known builtin"), + }; + // invalid input (too short) + let input = hex!("00"); + + assert_eq!(f.cost(&input[..], 0), U256::from(0)); + } + #[test] fn blake2_f_is_err_on_invalid_length() { - let blake2 = ethereum_builtin("blake2_f"); + let blake2 = EthereumBuiltin::from_str("blake2_f").unwrap(); // Test vector 1 and expected output from https://github.com/ethereum/EIPs/blob/master/EIPS/eip-152.md#test-vector-1 let input = hex!("00000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001"); let mut out = [0u8; 64]; let result = blake2.execute(&input[..], &mut BytesRef::Fixed(&mut out[..])); assert!(result.is_err()); - assert_eq!(result.unwrap_err(), "input length for Blake2 F precompile should be exactly 213 bytes".into()); + assert_eq!(result.unwrap_err(), "input length for Blake2 F precompile should be exactly 213 bytes"); } #[test] fn blake2_f_is_err_on_invalid_length_2() { - let blake2 = ethereum_builtin("blake2_f"); + let blake2 = EthereumBuiltin::from_str("blake2_f").unwrap(); // Test vector 2 and expected output from https://github.com/ethereum/EIPs/blob/master/EIPS/eip-152.md#test-vector-2 let input = hex!("000000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001"); let mut out = [0u8; 64]; let result = blake2.execute(&input[..], &mut BytesRef::Fixed(&mut out[..])); assert!(result.is_err()); - assert_eq!(result.unwrap_err(), "input length for Blake2 F precompile should be exactly 213 bytes".into()); + assert_eq!(result.unwrap_err(), "input length for Blake2 F precompile should be exactly 213 bytes"); } #[test] fn blake2_f_is_err_on_bad_finalization_flag() { - let blake2 = ethereum_builtin("blake2_f"); + let blake2 = EthereumBuiltin::from_str("blake2_f").unwrap(); // Test vector 3 and expected output from https://github.com/ethereum/EIPs/blob/master/EIPS/eip-152.md#test-vector-3 let input = hex!("0000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000002"); let mut out = [0u8; 64]; let result = blake2.execute(&input[..], &mut BytesRef::Fixed(&mut out[..])); assert!(result.is_err()); - assert_eq!(result.unwrap_err(), "incorrect final block indicator flag".into()); + assert_eq!(result.unwrap_err(), "incorrect final block indicator flag"); } #[test] fn blake2_f_zero_rounds_is_ok_test_vector_4() { - let blake2 = ethereum_builtin("blake2_f"); + let blake2 = EthereumBuiltin::from_str("blake2_f").unwrap(); // Test vector 4 and expected output from https://github.com/ethereum/EIPs/blob/master/EIPS/eip-152.md#test-vector-4 let input = hex!("0000000048c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001"); let expected = hex!("08c9bcf367e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d282e6ad7f520e511f6c3e2b8c68059b9442be0454267ce079217e1319cde05b"); @@ -765,7 +833,7 @@ use hex_literal::hex; #[test] fn blake2_f_test_vector_5() { - let blake2 = ethereum_builtin("blake2_f"); + let blake2 = EthereumBuiltin::from_str("blake2_f").unwrap(); // Test vector 5 and expected output from https://github.com/ethereum/EIPs/blob/master/EIPS/eip-152.md#test-vector-5 let input = hex!("0000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001"); let expected = hex!("ba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923"); @@ -776,7 +844,7 @@ use hex_literal::hex; #[test] fn blake2_f_test_vector_6() { - let blake2 = ethereum_builtin("blake2_f"); + let blake2 = EthereumBuiltin::from_str("blake2_f").unwrap(); // Test vector 6 and expected output from https://github.com/ethereum/EIPs/blob/master/EIPS/eip-152.md#test-vector-6 let input = hex!("0000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000"); let expected = hex!("75ab69d3190a562c51aef8d88f1c2775876944407270c42c9844252c26d2875298743e7f6d5ea2f2d3e8d226039cd31b4e426ac4f2d3d666a610c2116fde4735"); @@ -787,7 +855,7 @@ use hex_literal::hex; #[test] fn blake2_f_test_vector_7() { - let blake2 = ethereum_builtin("blake2_f"); + let blake2 = EthereumBuiltin::from_str("blake2_f").unwrap(); // Test vector 7 and expected output from https://github.com/ethereum/EIPs/blob/master/EIPS/eip-152.md#test-vector-7 let input = hex!("0000000148c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001"); let expected = hex!("b63a380cb2897d521994a85234ee2c181b5f844d2c624c002677e9703449d2fba551b3a8333bcdf5f2f7e08993d53923de3d64fcc68c034e717b9293fed7a421"); @@ -799,7 +867,7 @@ use hex_literal::hex; #[ignore] #[test] fn blake2_f_test_vector_8() { - let blake2 = ethereum_builtin("blake2_f"); + let blake2 = EthereumBuiltin::from_str("blake2_f").unwrap(); // Test vector 8 and expected output from https://github.com/ethereum/EIPs/blob/master/EIPS/eip-152.md#test-vector-8 // Note this test is slow, 4294967295/0xffffffff rounds take a while. let input = hex!("ffffffff48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001"); @@ -844,8 +912,7 @@ use hex_literal::hex; #[test] fn identity() { - let f = ethereum_builtin("identity"); - + let f = EthereumBuiltin::from_str("identity").unwrap(); let i = [0u8, 1, 2, 3]; let mut o2 = [255u8; 2]; @@ -864,8 +931,7 @@ use hex_literal::hex; #[test] fn sha256() { - let f = ethereum_builtin("sha256"); - + let f = EthereumBuiltin::from_str("sha256").unwrap(); let i = [0u8; 0]; let mut o = [255u8; 32]; @@ -887,8 +953,7 @@ use hex_literal::hex; #[test] fn ripemd160() { - let f = ethereum_builtin("ripemd160"); - + let f = EthereumBuiltin::from_str("ripemd160").unwrap(); let i = [0u8; 0]; let mut o = [255u8; 32]; @@ -906,7 +971,7 @@ use hex_literal::hex; #[test] fn ecrecover() { - let f = ethereum_builtin("ecrecover"); + let f = EthereumBuiltin::from_str("ecrecover").unwrap(); let i = hex!("47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad000000000000000000000000000000000000000000000000000000000000001b650acf9d3f5f0a2c799776a1254355d5f4061762a237396a99a0e0e3fc2bcd6729514a0dacb2e623ac4abd157cb18163ff942280db4d5caad66ddf941ba12e03"); @@ -956,18 +1021,16 @@ use hex_literal::hex; #[test] fn modexp() { - let f = Builtin { - pricer: Box::new(ModexpPricer { divisor: 20 }), - native: ethereum_builtin("modexp"), - activate_at: 0, + pricer: map![0 => Pricing::Modexp(ModexpPricer { divisor: 20 })], + native: EthereumBuiltin::from_str("modexp").unwrap(), }; // test for potential gas cost multiplication overflow { let input = hex!("0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b27bafd00000000000000000000000000000000000000000000000000000000503c8ac3"); let expected_cost = U256::max_value(); - assert_eq!(f.cost(&input[..], 0), expected_cost.into()); + assert_eq!(f.cost(&input[..], 0), expected_cost); } // test for potential exp len overflow @@ -984,7 +1047,7 @@ use hex_literal::hex; f.execute(&input[..], &mut BytesRef::Fixed(&mut output[..])).expect("Builtin should fail"); assert_eq!(output, expected); - assert_eq!(f.cost(&input[..], 0), expected_cost.into()); + assert_eq!(f.cost(&input[..], 0), expected_cost); } // fermat's little theorem example. @@ -1069,9 +1132,8 @@ use hex_literal::hex; fn bn128_add() { let f = Builtin { - pricer: Box::new(Linear { base: 0, word: 0 }), - native: ethereum_builtin("alt_bn128_add"), - activate_at: 0, + pricer: map![0 => Pricing::Linear(Linear { base: 0, word: 0 })], + native: EthereumBuiltin::from_str("alt_bn128_add").unwrap(), }; // zero-points additions @@ -1126,11 +1188,9 @@ use hex_literal::hex; #[test] fn bn128_mul() { - let f = Builtin { - pricer: Box::new(Linear { base: 0, word: 0 }), - native: ethereum_builtin("alt_bn128_mul"), - activate_at: 0, + pricer: map![0 => Pricing::Linear(Linear { base: 0, word: 0 })], + native: EthereumBuiltin::from_str("alt_bn128_mul").unwrap(), }; // zero-point multiplication @@ -1168,9 +1228,8 @@ use hex_literal::hex; fn builtin_pairing() -> Builtin { Builtin { - pricer: Box::new(Linear { base: 0, word: 0 }), - native: ethereum_builtin("alt_bn128_pairing"), - activate_at: 0, + pricer: map![0 => Pricing::Linear(Linear { base: 0, word: 0 })], + native: EthereumBuiltin::from_str("alt_bn128_pairing").unwrap(), } } @@ -1189,8 +1248,8 @@ use hex_literal::hex; let res = f.execute(input, &mut BytesRef::Fixed(&mut output[..])); if let Some(msg) = msg_contains { if let Err(e) = res { - if !e.0.contains(msg) { - panic!("There should be error containing '{}' here, but got: '{}'", msg, e.0); + if !e.contains(msg) { + panic!("There should be error containing '{}' here, but got: '{}'", msg, e); } } } else { @@ -1241,16 +1300,15 @@ use hex_literal::hex; #[test] #[should_panic] fn from_unknown_linear() { - let _ = ethereum_builtin("foo"); + let _ = EthereumBuiltin::from_str("foo").unwrap(); } #[test] fn is_active() { - let pricer = Box::new(Linear { base: 10, word: 20} ); + let pricer = Pricing::Linear(Linear { base: 10, word: 20 }); let b = Builtin { - pricer: pricer as Box, - native: ethereum_builtin("identity"), - activate_at: 100_000, + pricer: map![100_000 => pricer], + native: EthereumBuiltin::from_str("identity").unwrap(), }; assert!(!b.is_active(99_999)); @@ -1260,11 +1318,10 @@ use hex_literal::hex; #[test] fn from_named_linear() { - let pricer = Box::new(Linear { base: 10, word: 20 }); + let pricer = Pricing::Linear(Linear { base: 10, word: 20 }); let b = Builtin { - pricer: pricer as Box, - native: ethereum_builtin("identity"), - activate_at: 1, + pricer: map![0 => pricer], + native: EthereumBuiltin::from_str("identity").unwrap(), }; assert_eq!(b.cost(&[0; 0], 0), U256::from(10)); @@ -1280,15 +1337,15 @@ use hex_literal::hex; #[test] fn from_json() { - let b = Builtin::from(ethjson::spec::Builtin { + let b = Builtin::try_from(ethjson::spec::Builtin { name: "identity".to_owned(), - pricing: ethjson::spec::Pricing::Linear(ethjson::spec::Linear { - base: 10, - word: 20, - }), - activate_at: None, - eip1108_transition: None, - }); + pricing: map![ + 0 => PricingAt { + info: None, + price: JsonPricing::Linear(JsonLinearPricing { base: 10, word: 20 }) + } + ] + }).expect("known builtin"); assert_eq!(b.cost(&[0; 0], 0), U256::from(10)); assert_eq!(b.cost(&[0; 1], 0), U256::from(30)); @@ -1303,17 +1360,25 @@ use hex_literal::hex; #[test] fn bn128_pairing_eip1108_transition() { - let b = Builtin::from(ethjson::spec::Builtin { + let b = Builtin::try_from(JsonBuiltin { name: "alt_bn128_pairing".to_owned(), - pricing: ethjson::spec::Pricing::AltBn128Pairing(ethjson::spec::builtin::AltBn128Pairing { - base: 100_000, - pair: 80_000, - eip1108_transition_base: 45_000, - eip1108_transition_pair: 34_000, - }), - activate_at: Some(Uint(U256::from(10))), - eip1108_transition: Some(Uint(U256::from(20))), - }); + pricing: map![ + 10 => PricingAt { + info: None, + price: JsonPricing::AltBn128Pairing(JsonAltBn128PairingPricing { + base: 100_000, + pair: 80_000, + }), + }, + 20 => PricingAt { + info: None, + price: JsonPricing::AltBn128Pairing(JsonAltBn128PairingPricing { + base: 45_000, + pair: 34_000, + }), + } + ], + }).unwrap(); assert_eq!(b.cost(&[0; 192 * 3], 10), U256::from(340_000), "80 000 * 3 + 100 000 == 340 000"); assert_eq!(b.cost(&[0; 192 * 7], 20), U256::from(283_000), "34 000 * 7 + 45 000 == 283 000"); @@ -1321,15 +1386,25 @@ use hex_literal::hex; #[test] fn bn128_add_eip1108_transition() { - let b = Builtin::from(ethjson::spec::Builtin { + let b = Builtin::try_from(JsonBuiltin { name: "alt_bn128_add".to_owned(), - pricing: ethjson::spec::Pricing::AltBn128ConstOperations(ethjson::spec::builtin::AltBn128ConstOperations { - price: 500, - eip1108_transition_price: 150, - }), - activate_at: Some(Uint(U256::from(10))), - eip1108_transition: Some(Uint(U256::from(20))), - }); + pricing: map![ + 10 => PricingAt { + info: None, + price: JsonPricing::Linear(JsonLinearPricing { + base: 500, + word: 0, + }), + }, + 20 => PricingAt { + info: None, + price: JsonPricing::Linear(JsonLinearPricing { + base: 150, + word: 0, + }), + } + ], + }).unwrap(); assert_eq!(b.cost(&[0; 192], 10), U256::from(500)); assert_eq!(b.cost(&[0; 10], 20), U256::from(150), "after istanbul hardfork gas cost for add should be 150"); @@ -1337,17 +1412,99 @@ use hex_literal::hex; #[test] fn bn128_mul_eip1108_transition() { - let b = Builtin::from(ethjson::spec::Builtin { + let b = Builtin::try_from(JsonBuiltin { name: "alt_bn128_mul".to_owned(), - pricing: ethjson::spec::Pricing::AltBn128ConstOperations(ethjson::spec::builtin::AltBn128ConstOperations { - price: 40_000, - eip1108_transition_price: 6000, - }), - activate_at: Some(Uint(U256::from(10))), - eip1108_transition: Some(Uint(U256::from(20))), - }); + pricing: map![ + 10 => PricingAt { + info: None, + price: JsonPricing::Linear(JsonLinearPricing { + base: 40_000, + word: 0, + }), + }, + 20 => PricingAt { + info: None, + price: JsonPricing::Linear(JsonLinearPricing { + base: 6_000, + word: 0, + }), + } + ], + }).unwrap(); assert_eq!(b.cost(&[0; 192], 10), U256::from(40_000)); assert_eq!(b.cost(&[0; 10], 20), U256::from(6_000), "after istanbul hardfork gas cost for mul should be 6 000"); } + + + #[test] + fn multimap_use_most_recent_on_activate() { + let b = Builtin::try_from(JsonBuiltin { + name: "alt_bn128_mul".to_owned(), + pricing: map![ + 10 => PricingAt { + info: None, + price: JsonPricing::Linear(JsonLinearPricing { + base: 40_000, + word: 0, + }), + }, + 20 => PricingAt { + info: None, + price: JsonPricing::Linear(JsonLinearPricing { + base: 6_000, + word: 0, + }) + }, + 100 => PricingAt { + info: None, + price: JsonPricing::Linear(JsonLinearPricing { + base: 1_337, + word: 0, + }) + } + ] + }).unwrap(); + + assert_eq!(b.cost(&[0; 2], 0), U256::zero(), "not activated yet; should be zero"); + assert_eq!(b.cost(&[0; 3], 10), U256::from(40_000), "use price #1"); + assert_eq!(b.cost(&[0; 4], 20), U256::from(6_000), "use price #2"); + assert_eq!(b.cost(&[0; 1], 99), U256::from(6_000), "use price #2"); + assert_eq!(b.cost(&[0; 1], 100), U256::from(1_337), "use price #3"); + assert_eq!(b.cost(&[0; 1], u64::max_value()), U256::from(1_337), "use price #3 indefinitely"); + } + + + #[test] + fn multimap_use_last_with_same_activate_at() { + let b = Builtin::try_from(JsonBuiltin { + name: "alt_bn128_mul".to_owned(), + pricing: map![ + 1 => PricingAt { + info: None, + price: JsonPricing::Linear(JsonLinearPricing { + base: 40_000, + word: 0, + }), + }, + 1 => PricingAt { + info: None, + price: JsonPricing::Linear(JsonLinearPricing { + base: 6_000, + word: 0, + }), + }, + 1 => PricingAt { + info: None, + price: JsonPricing::Linear(JsonLinearPricing { + base: 1_337, + word: 0, + }), + } + ], + }).unwrap(); + + assert_eq!(b.cost(&[0; 1], 0), U256::from(0), "not activated yet"); + assert_eq!(b.cost(&[0; 1], 1), U256::from(1_337)); + } } diff --git a/ethcore/db/src/db.rs b/ethcore/db/src/db.rs index c00f63eac23..192bb75a847 100644 --- a/ethcore/db/src/db.rs +++ b/ethcore/db/src/db.rs @@ -188,6 +188,21 @@ pub trait Readable { }) } + /// Returns value for given key either in two-layered cache or in database. + fn read_with_two_layer_cache(&self, col: Option, l1_cache: &RwLock, l2_cache: &RwLock, key: &K) -> Option where + K: Key + Eq + Hash + Clone, + T: Clone + rlp::Decodable, + C: Cache { + { + let read = l1_cache.read(); + if let Some(v) = read.get(key) { + return Some(v.clone()); + } + } + + self.read_with_cache(col, l2_cache, key) + } + /// Returns true if given value exists. fn exists(&self, col: Option, key: &Key) -> bool where R: Deref; diff --git a/ethcore/light/src/client/mod.rs b/ethcore/light/src/client/mod.rs index 8205ae2ab3b..ee42e6829d5 100644 --- a/ethcore/light/src/client/mod.rs +++ b/ethcore/light/src/client/mod.rs @@ -18,7 +18,7 @@ use std::sync::{Weak, Arc}; -use ethcore::client::{ClientReport, EnvInfo, ClientIoMessage}; +use ethcore::client::{ClientReport, EnvInfo, ClientIoMessage, traits::ForceUpdateSealing}; use ethcore::engines::{epoch, EthEngine, EpochChange, EpochTransition, Proof}; use ethcore::machine::EthereumMachine; use ethcore::error::{Error, EthcoreResult}; @@ -620,7 +620,7 @@ impl ::ethcore::client::ChainInfo for Client { } impl ::ethcore::client::EngineClient for Client { - fn update_sealing(&self) { } + fn update_sealing(&self, _force: ForceUpdateSealing) {} fn submit_seal(&self, _block_hash: H256, _seal: Vec>) { } fn broadcast_consensus_message(&self, _message: Vec) { } diff --git a/ethcore/private-tx/Cargo.toml b/ethcore/private-tx/Cargo.toml index ae8f83d8720..0ae156dfbb1 100644 --- a/ethcore/private-tx/Cargo.toml +++ b/ethcore/private-tx/Cargo.toml @@ -37,7 +37,7 @@ serde_derive = "1.0" serde_json = "1.0" tiny-keccak = "1.4" transaction-pool = "2.0.1" -url = "1" +url = "2" [dev-dependencies] env_logger = "0.5" diff --git a/ethcore/private-tx/src/lib.rs b/ethcore/private-tx/src/lib.rs index d487b4d835b..6ff35a4be6d 100644 --- a/ethcore/private-tx/src/lib.rs +++ b/ethcore/private-tx/src/lib.rs @@ -272,7 +272,7 @@ impl Provider { let mut state_buf = [0u8; 64]; state_buf[..32].clone_from_slice(&state_hash); state_buf[32..].clone_from_slice(&H256::from(nonce)); - keccak(&state_buf.as_ref()) + keccak(AsRef::<[u8]>::as_ref(&state_buf[..])) } fn pool_client<'a>(&'a self, nonce_cache: &'a NonceCache, local_accounts: &'a HashSet

) -> miner::pool_client::PoolClient<'a, Client> { diff --git a/ethcore/res/authority_round.json b/ethcore/res/authority_round.json index 33afa45871c..292760444d6 100644 --- a/ethcore/res/authority_round.json +++ b/ethcore/res/authority_round.json @@ -50,12 +50,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_add", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -64,12 +65,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_mul", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -78,14 +80,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_pairing", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/authority_round_block_reward_contract.json b/ethcore/res/authority_round_block_reward_contract.json index 73893d44d1d..4adb9a8d43c 100644 --- a/ethcore/res/authority_round_block_reward_contract.json +++ b/ethcore/res/authority_round_block_reward_contract.json @@ -53,12 +53,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_add", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -67,12 +68,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_mul", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -81,14 +83,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_pairing", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/basic_authority.json b/ethcore/res/basic_authority.json index 2d92355e3af..463b14afca8 100644 --- a/ethcore/res/basic_authority.json +++ b/ethcore/res/basic_authority.json @@ -42,12 +42,12 @@ "balance": "1", "builtin": { "name": "alt_bn128_add", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0x0": { + "price": { "linear": { "base": 500, "word": 0 }} + }, + "0x7fffffffffffff": { + "price": { "linear": { "base": 150, "word": 0 }} } } } @@ -56,12 +56,12 @@ "balance": "1", "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0x0": { + "price": { "linear": { "base": 40000, "word": 0 }} + }, + "0x7fffffffffffff": { + "price": { "linear": { "base": 6000, "word": 0 }} } } } @@ -70,14 +70,12 @@ "balance": "1", "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0x0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/constructor.json b/ethcore/res/constructor.json index 1383337351a..2e64335b58a 100644 --- a/ethcore/res/constructor.json +++ b/ethcore/res/constructor.json @@ -38,12 +38,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_add", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "linear": { "base": 500, "word": 0 }} + }, + "0x7fffffffffffff": { + "info": "EIP1108 transition", + "price": { "linear": { "base": 150, "word": 0 }} } } } @@ -52,12 +53,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_mul", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "linear": {"base": 40000, "word": 0 }} + }, + "0x7fffffffffffff": { + "info": "EIP1108 transition", + "price": { "linear": { "base": 6000, "word": 0 }} } } } @@ -66,14 +68,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_pairing", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/builtin_multi_bench.json b/ethcore/res/ethereum/builtin_multi_bench.json new file mode 100644 index 00000000000..a37273936fb --- /dev/null +++ b/ethcore/res/ethereum/builtin_multi_bench.json @@ -0,0 +1,112 @@ +{ + "name": "ecrecover legacy", + "engine": { + "Ethash": { + "params": { + "minimumDifficulty": "0x020000", + "difficultyBoundDivisor": "0x0800", + "durationLimit": "0x0d", + "blockReward": "0x4563918244F40000", + "homesteadTransition": "0x0" + } + } + }, + "params": { + "gasLimitBoundDivisor": "0x0400", + "registrar" : "0xc6d9d2cd449a754c494264e1809c50e34d64562b", + "accountStartNonce": "0x00", + "maximumExtraDataSize": "0x20", + "minGasLimit": "0x1388", + "networkID" : "0x1", + "eip150Transition": "0x0", + "eip160Transition": "0x7fffffffffffffff", + "eip161abcTransition": "0x7fffffffffffffff", + "eip161dTransition": "0x7fffffffffffffff", + "eip155Transition": "0x7fffffffffffffff", + "maxCodeSize": 24576, + "maxCodeSizeTransition": "0x7fffffffffffffff" + }, + "genesis": { + "seal": { + "ethereum": { + "nonce": "0x0000000000000042", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + }, + "difficulty": "0x400000000", + "author": "0x0000000000000000000000000000000000000000", + "timestamp": "0x00", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", + "gasLimit": "0x1388" + }, + "accounts": { + "0000000000000000000000000000000000000001": { + "balance": "1", + "builtin": { + "name": "ecrecover", + "pricing": { + "0": {"price": {"linear": { "base": 1, "word": 0 }}}, + "1": {"price": {"linear": { "base": 2, "word": 0 }}}, + "2": {"price": {"linear": { "base": 3, "word": 0 }}}, + "3": {"price": {"linear": { "base": 4, "word": 0 }}}, + "4": {"price": {"linear": { "base": 5, "word": 0 }}}, + "5": {"price": {"linear": { "base": 6, "word": 0 }}}, + "6": {"price": {"linear": { "base": 7, "word": 0 }}}, + "7": {"price": {"linear": { "base": 8, "word": 0 }}}, + "8": {"price": {"linear": { "base": 9, "word": 0 }}}, + "9": {"price": {"linear": { "base": 1, "word": 0 }}}, + "10": {"price": {"linear": { "base": 2, "word": 0 }}} + } + } + }, + "0000000000000000000000000000000000000002": { + "balance": "1", + "builtin": { + "name": "sha256", + "pricing": { + "0": {"price": {"linear": { "base": 1, "word": 0 }}}, + "1": {"price": {"linear": { "base": 2, "word": 0 }}}, + "2": {"price": {"linear": { "base": 3, "word": 0 }}}, + "3": {"price": {"linear": { "base": 4, "word": 0 }}}, + "4": {"price": {"linear": { "base": 5, "word": 0 }}}, + "5": {"price": {"linear": { "base": 6, "word": 0 }}}, + "6": {"price": {"linear": { "base": 7, "word": 0 }}}, + "7": {"price": {"linear": { "base": 8, "word": 0 }}}, + "8": {"price": {"linear": { "base": 9, "word": 0 }}}, + "9": {"price": {"linear": { "base": 1, "word": 0 }}}, + "10": {"price": {"linear": { "base": 2, "word": 0 }}}, + "11": {"price": {"linear": { "base": 3, "word": 0 }}}, + "12": {"price": {"linear": { "base": 4, "word": 0 }}}, + "13": {"price": {"linear": { "base": 5, "word": 0 }}}, + "14": {"price": {"linear": { "base": 6, "word": 0 }}}, + "15": {"price": {"linear": { "base": 7, "word": 0 }}}, + "16": {"price": {"linear": { "base": 8, "word": 0 }}}, + "17": {"price": {"linear": { "base": 9, "word": 0 }}}, + "18": {"price": {"linear": { "base": 1, "word": 0 }}}, + "19": {"price": {"linear": { "base": 2, "word": 0 }}}, + "20": {"price": {"linear": { "base": 3, "word": 0 }}}, + "21": {"price": {"linear": { "base": 4, "word": 0 }}}, + "22": {"price": {"linear": { "base": 5, "word": 0 }}}, + "23": {"price": {"linear": { "base": 6, "word": 0 }}}, + "24": {"price": {"linear": { "base": 7, "word": 0 }}}, + "25": {"price": {"linear": { "base": 8, "word": 0 }}}, + "26": {"price": {"linear": { "base": 9, "word": 0 }}}, + "27": {"price": {"linear": { "base": 1, "word": 0 }}}, + "28": {"price": {"linear": { "base": 2, "word": 0 }}}, + "29": {"price": {"linear": { "base": 3, "word": 0 }}}, + "30": {"price": {"linear": { "base": 4, "word": 0 }}}, + "31": {"price": {"linear": { "base": 5, "word": 0 }}}, + "32": {"price": {"linear": { "base": 6, "word": 0 }}}, + "33": {"price": {"linear": { "base": 7, "word": 0 }}}, + "34": {"price": {"linear": { "base": 8, "word": 0 }}}, + "35": {"price": {"linear": { "base": 9, "word": 0 }}}, + "36": {"price": {"linear": { "base": 10, "word": 0 }}}, + "37": {"price": {"linear": { "base": 10, "word": 0 }}}, + "38": {"price": {"linear": { "base": 10, "word": 0 }}}, + "39": {"price": {"linear": { "base": 10, "word": 0 }}} + } + } + } + } +} diff --git a/ethcore/res/ethereum/builtin_one_activation_bench.json b/ethcore/res/ethereum/builtin_one_activation_bench.json new file mode 100644 index 00000000000..e746d7b2a12 --- /dev/null +++ b/ethcore/res/ethereum/builtin_one_activation_bench.json @@ -0,0 +1,54 @@ +{ + "name": "ecrecover legacy chain spec for benchmarking", + "engine": { + "Ethash": { + "params": { + "minimumDifficulty": "0x020000", + "difficultyBoundDivisor": "0x0800", + "durationLimit": "0x0d", + "blockReward": "0x4563918244F40000", + "homesteadTransition": "0x0" + } + } + }, + "params": { + "gasLimitBoundDivisor": "0x0400", + "registrar" : "0xc6d9d2cd449a754c494264e1809c50e34d64562b", + "accountStartNonce": "0x00", + "maximumExtraDataSize": "0x20", + "minGasLimit": "0x1388", + "networkID" : "0x1", + "eip150Transition": "0x0", + "eip160Transition": "0x7fffffffffffffff", + "eip161abcTransition": "0x7fffffffffffffff", + "eip161dTransition": "0x7fffffffffffffff", + "eip155Transition": "0x7fffffffffffffff", + "maxCodeSize": 24576, + "maxCodeSizeTransition": "0x7fffffffffffffff" + }, + "genesis": { + "seal": { + "ethereum": { + "nonce": "0x0000000000000042", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + }, + "difficulty": "0x400000000", + "author": "0x0000000000000000000000000000000000000000", + "timestamp": "0x00", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", + "gasLimit": "0x1388" + }, + "accounts": { + "0000000000000000000000000000000000000001": { + "balance": "1", + "builtin": { + "name": "ecrecover", + "pricing": { + "linear": { "base": 3000, "word": 0 } + } + } + } + } +} diff --git a/ethcore/res/ethereum/byzantium_test.json b/ethcore/res/ethereum/byzantium_test.json index b4df953739b..bc5ac30207e 100644 --- a/ethcore/res/ethereum/byzantium_test.json +++ b/ethcore/res/ethereum/byzantium_test.json @@ -57,12 +57,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "0x00", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -70,12 +71,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x00", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -83,14 +85,13 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x00", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/callisto.json b/ethcore/res/ethereum/callisto.json index 02dc3d27638..a1cae6f3c5a 100644 --- a/ethcore/res/ethereum/callisto.json +++ b/ethcore/res/ethereum/callisto.json @@ -76,12 +76,12 @@ "balance": "1", "builtin": { "name": "alt_bn128_add", - "activate_at": 20, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "20": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -90,12 +90,12 @@ "balance": "1", "builtin": { "name": "alt_bn128_mul", - "activate_at": 20, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "20": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -104,14 +104,12 @@ "balance": "1", "builtin": { "name": "alt_bn128_pairing", - "activate_at": 20, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "20": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/classic.json b/ethcore/res/ethereum/classic.json index f824f7667d4..200fa823c47 100644 --- a/ethcore/res/ethereum/classic.json +++ b/ethcore/res/ethereum/classic.json @@ -3916,12 +3916,12 @@ "0x0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "0x85d9a0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0x85d9a0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -3929,12 +3929,12 @@ "0x0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x85d9a0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0x85d9a0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -3942,14 +3942,12 @@ "0x0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x85d9a0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0x85d9a0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/constantinople_test.json b/ethcore/res/ethereum/constantinople_test.json index c61711e7a7f..cc5690e0d3d 100644 --- a/ethcore/res/ethereum/constantinople_test.json +++ b/ethcore/res/ethereum/constantinople_test.json @@ -61,12 +61,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "0x00", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -74,12 +75,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x00", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -87,14 +89,13 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x00", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/eip210_test.json b/ethcore/res/ethereum/eip210_test.json index 782e99e5e9e..2cfeb7c61c2 100644 --- a/ethcore/res/ethereum/eip210_test.json +++ b/ethcore/res/ethereum/eip210_test.json @@ -49,12 +49,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "0x00", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -62,12 +63,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x00", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -75,14 +77,13 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x00", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/ellaism.json b/ethcore/res/ethereum/ellaism.json index d1333fb7f3a..77fa6e347d0 100644 --- a/ethcore/res/ethereum/ellaism.json +++ b/ethcore/res/ethereum/ellaism.json @@ -69,12 +69,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": 2000000, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "2000000": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -82,12 +83,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": 2000000, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "2000000": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -95,14 +97,13 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": 2000000, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "2000000": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/ewc.json b/ethcore/res/ethereum/ewc.json index 1290526504b..f281e6533d4 100644 --- a/ethcore/res/ethereum/ewc.json +++ b/ethcore/res/ethereum/ewc.json @@ -1,213 +1,955 @@ { - "name": "EnergyWebChain", - "engine": { - "authorityRound": { - "params": { - "stepDuration": "5", - "validators": { - "contract": "0x1204700000000000000000000000000000000000" - }, - "maximumUncleCountTransition": "0", - "maximumUncleCount": "0", - "blockRewardContractAddress": "0x1204700000000000000000000000000000000002", - "blockRewardContractTransition": "0" - } - } - }, - "params": { - "networkID": "0xF6", - "maximumExtraDataSize": "0x20", - "gasLimitBoundDivisor": "0x400", - "minGasLimit": "0x1388", - "maxCodeSize": "0x6000", - "eip140Transition": "0x0", - "eip211Transition": "0x0", - "eip214Transition": "0x0", - "eip658Transition": "0x0", - "eip145Transition": "0x0", - "eip1014Transition": "0x0", - "eip1052Transition": "0x0", - "registrar": "0x1204700000000000000000000000000000000006" - }, - "genesis": { - "seal": { - "authorityRound": { - "step": "0x0", - "signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - } - }, - "difficulty": "0x20000", - "gasLimit": "0x5B8D80" - }, - "accounts": { - "0x0000000000000000000000000000000000000001": { - "balance": "1", - "builtin": { - "name": "ecrecover", - "activate_at": "0", - "pricing": { - "linear": { - "base": 3000, - "word": 0 - } - } - } - }, - "0x0000000000000000000000000000000000000002": { - "balance": "1", - "builtin": { - "name": "sha256", - "activate_at": "0", - "pricing": { - "linear": { - "base": 60, - "word": 12 - } - } - } - }, - "0x0000000000000000000000000000000000000003": { - "balance": "1", - "builtin": { - "name": "ripemd160", - "activate_at": "0", - "pricing": { - "linear": { - "base": 600, - "word": 120 - } - } - } - }, - "0x0000000000000000000000000000000000000004": { - "balance": "1", - "builtin": { - "name": "identity", - "activate_at": "0", - "pricing": { - "linear": { - "base": 15, - "word": 3 - } - } - } - }, - "0x0000000000000000000000000000000000000005": { - "balance": "1", - "builtin": { - "name": "modexp", - "activate_at": "0", - "pricing": { - "modexp": { - "divisor": 20 - } - } - } - }, - "0x0000000000000000000000000000000000000006": { - "balance": "1", - "builtin": { - "name": "alt_bn128_add", - "activate_at": "0", - "eip1108_transition": "0x7fffffffffffff", - "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 - } - } - } - }, - "0x0000000000000000000000000000000000000007": { - "balance": "1", - "builtin": { - "name": "alt_bn128_mul", - "activate_at": "0", - "eip1108_transition": "0x7fffffffffffff", - "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 - } - } - } - }, - "0x0000000000000000000000000000000000000008": { - "balance": "1", - "builtin": { - "name": "alt_bn128_pairing", - "activate_at": "0", - "eip1108_transition": "0x7fffffffffffff", - "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 - } - } - } - }, - "0x1204700000000000000000000000000000000005": { - "constructor": "0x60806040523480156200001157600080fd5b50604051620024c8380380620024c883398101806040528101908080518201929190602001805190602001909291905050506000825182603282111580156200005a5750818111155b801562000068575060008114155b801562000076575060008214155b15156200008257600080fd5b600092505b8451831015620001bd57600260008685815181101515620000a457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620001335750600085848151811015156200011057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15156200013f57600080fd5b60016002600087868151811015156200015457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828060010193505062000087565b8460039080519060200190620001d5929190620001e8565b50836004819055505050505050620002bd565b82805482825590600052602060002090810192821562000264579160200282015b82811115620002635782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000209565b5b50905062000273919062000277565b5090565b620002ba91905b80821115620002b657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200027e565b5090565b90565b6121fb80620002cd6000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101e457806320ea8d86146102275780632f54bf6e146102545780633411c81c146102af57806354741525146103145780637065cb4814610363578063784547a7146103a65780638b51d13f146103eb5780639ace38c21461042c578063a0e67e2b14610517578063a8abe69a14610583578063b5dc40c314610627578063b77bf600146106a9578063ba51a6df146106d4578063c01a8c8414610701578063c64274741461072e578063d74f8edd146107d5578063dc8452cd14610800578063e20056e61461082b578063ee22610b1461088e575b6000341115610175573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34801561018357600080fd5b506101a2600480360381019080803590602001909291905050506108bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f057600080fd5b50610225600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108f9565b005b34801561023357600080fd5b5061025260048036038101908080359060200190929190505050610b92565b005b34801561026057600080fd5b50610295600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3a565b604051808215151515815260200191505060405180910390f35b3480156102bb57600080fd5b506102fa60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d5a565b604051808215151515815260200191505060405180910390f35b34801561032057600080fd5b5061034d600480360381019080803515159060200190929190803515159060200190929190505050610d89565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b506103a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e1b565b005b3480156103b257600080fd5b506103d160048036038101908080359060200190929190505050611020565b604051808215151515815260200191505060405180910390f35b3480156103f757600080fd5b5061041660048036038101908080359060200190929190505050611105565b6040518082815260200191505060405180910390f35b34801561043857600080fd5b50610457600480360381019080803590602001909291905050506111d0565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156104d95780820151818401526020810190506104be565b50505050905090810190601f1680156105065780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561052357600080fd5b5061052c6112c5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561056f578082015181840152602081019050610554565b505050509050019250505060405180910390f35b34801561058f57600080fd5b506105d06004803603810190808035906020019092919080359060200190929190803515159060200190929190803515159060200190929190505050611353565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106135780820151818401526020810190506105f8565b505050509050019250505060405180910390f35b34801561063357600080fd5b50610652600480360381019080803590602001909291905050506114c4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561069557808201518184015260208101905061067a565b505050509050019250505060405180910390f35b3480156106b557600080fd5b506106be611701565b6040518082815260200191505060405180910390f35b3480156106e057600080fd5b506106ff60048036038101908080359060200190929190505050611707565b005b34801561070d57600080fd5b5061072c600480360381019080803590602001909291905050506117c1565b005b34801561073a57600080fd5b506107bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061199e565b6040518082815260200191505060405180910390f35b3480156107e157600080fd5b506107ea6119bd565b6040518082815260200191505060405180910390f35b34801561080c57600080fd5b506108156119c2565b6040518082815260200191505060405180910390f35b34801561083757600080fd5b5061088c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119c8565b005b34801561089a57600080fd5b506108b960048036038101908080359060200190929190505050611cdd565b005b6003818154811015156108ca57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561093557600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561098e57600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610b13578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a2157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b06576003600160038054905003815481101515610a7f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610ab957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b13565b81806001019250506109eb565b6001600381818054905003915081610b2b91906120fe565b506003805490506004541115610b4a57610b49600380549050611707565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610beb57600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c5657600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff16151515610c8657600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610e1457838015610dc8575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610dfb5750828015610dfa575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610e07576001820191505b8080600101915050610d91565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5557600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610eaf57600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff1614151515610ed657600080fd5b60016003805490500160045460328211158015610ef35750818111155b8015610f00575060008114155b8015610f0d575060008214155b1515610f1857600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038590806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b6003805490508110156110fd5760016000858152602001908152602001600020600060038381548110151561105e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110dd576001820191505b6004548214156110f057600192506110fe565b808060010191505061102d565b5b5050919050565b600080600090505b6003805490508110156111ca5760016000848152602001908152602001600020600060038381548110151561113e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111bd576001820191505b808060010191505061110d565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112a85780601f1061127d576101008083540402835291602001916112a8565b820191906000526020600020905b81548152906001019060200180831161128b57829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b6060600380548060200260200160405190810160405280929190818152602001828054801561134957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116112ff575b5050505050905090565b60608060008060055460405190808252806020026020018201604052801561138a5781602001602082028038833980820191505090505b50925060009150600090505b600554811015611436578580156113cd575060008082815260200190815260200160002060030160009054906101000a900460ff16155b8061140057508480156113ff575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156114295780838381518110151561141457fe5b90602001906020020181815250506001820191505b8080600101915050611396565b8787036040519080825280602002602001820160405280156114675781602001602082028038833980820191505090505b5093508790505b868110156114b957828181518110151561148457fe5b906020019060200201518489830381518110151561149e57fe5b9060200190602002018181525050808060010191505061146e565b505050949350505050565b6060806000806003805490506040519080825280602002602001820160405280156114fe5781602001602082028038833980820191505090505b50925060009150600090505b60038054905081101561164b5760016000868152602001908152602001600020600060038381548110151561153b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561163e576003818154811015156115c257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156115fb57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b808060010191505061150a565b8160405190808252806020026020018201604052801561167a5781602001602082028038833980820191505090505b509350600090505b818110156116f957828181518110151561169857fe5b9060200190602002015184828151811015156116b057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611682565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174157600080fd5b60038054905081603282111580156117595750818111155b8015611766575060008114155b8015611773575060008214155b151561177e57600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561181a57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561187657600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156118e257600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a361199785611cdd565b5050505050565b60006119ab848484611f85565b90506119b6816117c1565b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0457600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a5d57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ab757600080fd5b600092505b600380549050831015611ba0578473ffffffffffffffffffffffffffffffffffffffff16600384815481101515611aef57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b935783600384815481101515611b4657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ba0565b8280600101935050611abc565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611d3857600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611da357600080fd5b8460008082815260200190815260200160002060030160009054906101000a900460ff16151515611dd357600080fd5b611ddc86611020565b15611f7d57600080878152602001908152602001600020945060018560030160006101000a81548160ff021916908315150217905550611efa8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015487600201805460018160011615610100020316600290049050886002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ef05780601f10611ec557610100808354040283529160200191611ef0565b820191906000526020600020905b815481529060010190602001808311611ed357829003601f168201915b50505050506120d7565b15611f3157857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611f7c565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b5b505050505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff1614151515611fae57600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201908051906020019061206d92919061212a565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b6000806040516020840160008287838a8c6187965a03f19250505080915050949350505050565b8154818355818111156121255781836000526020600020918201910161212491906121aa565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061216b57805160ff1916838001178555612199565b82800160010185558215612199579182015b8281111561219857825182559160200191906001019061217d565b5b5090506121a691906121aa565b5090565b6121cc91905b808211156121c85760008160009055506001016121b0565b5090565b905600a165627a7a72305820b0d992f257e70d565448b927a3ae764342039a864112d5d5bb1ac1bd52e4104e00290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000060000000000000000000000000cb1437200aea736788f1fc56f327c0456c3598d00000000000000000000000074dd76e24b2cfb43c1b1a4498295d553d0843746000000000000000000000000eeb4ceee443f9e0d17bdbd6daa241681ee5e51c2000000000000000000000000a005caea55375ae20e3aaef746113535503abc1900000000000000000000000090ae948bb410838bff9d024ed849df6a7267dacf000000000000000000000000740a5c5742833bed72489fe6bf7efc9b79428989" - }, - "0x1204700000000000000000000000000000000003": { - "constructor": "0x60806040523480156200001157600080fd5b50604051620024c8380380620024c883398101806040528101908080518201929190602001805190602001909291905050506000825182603282111580156200005a5750818111155b801562000068575060008114155b801562000076575060008214155b15156200008257600080fd5b600092505b8451831015620001bd57600260008685815181101515620000a457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620001335750600085848151811015156200011057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15156200013f57600080fd5b60016002600087868151811015156200015457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828060010193505062000087565b8460039080519060200190620001d5929190620001e8565b50836004819055505050505050620002bd565b82805482825590600052602060002090810192821562000264579160200282015b82811115620002635782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000209565b5b50905062000273919062000277565b5090565b620002ba91905b80821115620002b657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200027e565b5090565b90565b6121fb80620002cd6000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101e457806320ea8d86146102275780632f54bf6e146102545780633411c81c146102af57806354741525146103145780637065cb4814610363578063784547a7146103a65780638b51d13f146103eb5780639ace38c21461042c578063a0e67e2b14610517578063a8abe69a14610583578063b5dc40c314610627578063b77bf600146106a9578063ba51a6df146106d4578063c01a8c8414610701578063c64274741461072e578063d74f8edd146107d5578063dc8452cd14610800578063e20056e61461082b578063ee22610b1461088e575b6000341115610175573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34801561018357600080fd5b506101a2600480360381019080803590602001909291905050506108bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f057600080fd5b50610225600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108f9565b005b34801561023357600080fd5b5061025260048036038101908080359060200190929190505050610b92565b005b34801561026057600080fd5b50610295600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3a565b604051808215151515815260200191505060405180910390f35b3480156102bb57600080fd5b506102fa60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d5a565b604051808215151515815260200191505060405180910390f35b34801561032057600080fd5b5061034d600480360381019080803515159060200190929190803515159060200190929190505050610d89565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b506103a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e1b565b005b3480156103b257600080fd5b506103d160048036038101908080359060200190929190505050611020565b604051808215151515815260200191505060405180910390f35b3480156103f757600080fd5b5061041660048036038101908080359060200190929190505050611105565b6040518082815260200191505060405180910390f35b34801561043857600080fd5b50610457600480360381019080803590602001909291905050506111d0565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156104d95780820151818401526020810190506104be565b50505050905090810190601f1680156105065780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561052357600080fd5b5061052c6112c5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561056f578082015181840152602081019050610554565b505050509050019250505060405180910390f35b34801561058f57600080fd5b506105d06004803603810190808035906020019092919080359060200190929190803515159060200190929190803515159060200190929190505050611353565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106135780820151818401526020810190506105f8565b505050509050019250505060405180910390f35b34801561063357600080fd5b50610652600480360381019080803590602001909291905050506114c4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561069557808201518184015260208101905061067a565b505050509050019250505060405180910390f35b3480156106b557600080fd5b506106be611701565b6040518082815260200191505060405180910390f35b3480156106e057600080fd5b506106ff60048036038101908080359060200190929190505050611707565b005b34801561070d57600080fd5b5061072c600480360381019080803590602001909291905050506117c1565b005b34801561073a57600080fd5b506107bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061199e565b6040518082815260200191505060405180910390f35b3480156107e157600080fd5b506107ea6119bd565b6040518082815260200191505060405180910390f35b34801561080c57600080fd5b506108156119c2565b6040518082815260200191505060405180910390f35b34801561083757600080fd5b5061088c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119c8565b005b34801561089a57600080fd5b506108b960048036038101908080359060200190929190505050611cdd565b005b6003818154811015156108ca57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561093557600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561098e57600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610b13578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a2157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b06576003600160038054905003815481101515610a7f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610ab957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b13565b81806001019250506109eb565b6001600381818054905003915081610b2b91906120fe565b506003805490506004541115610b4a57610b49600380549050611707565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610beb57600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c5657600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff16151515610c8657600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610e1457838015610dc8575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610dfb5750828015610dfa575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610e07576001820191505b8080600101915050610d91565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5557600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610eaf57600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff1614151515610ed657600080fd5b60016003805490500160045460328211158015610ef35750818111155b8015610f00575060008114155b8015610f0d575060008214155b1515610f1857600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038590806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b6003805490508110156110fd5760016000858152602001908152602001600020600060038381548110151561105e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110dd576001820191505b6004548214156110f057600192506110fe565b808060010191505061102d565b5b5050919050565b600080600090505b6003805490508110156111ca5760016000848152602001908152602001600020600060038381548110151561113e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111bd576001820191505b808060010191505061110d565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112a85780601f1061127d576101008083540402835291602001916112a8565b820191906000526020600020905b81548152906001019060200180831161128b57829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b6060600380548060200260200160405190810160405280929190818152602001828054801561134957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116112ff575b5050505050905090565b60608060008060055460405190808252806020026020018201604052801561138a5781602001602082028038833980820191505090505b50925060009150600090505b600554811015611436578580156113cd575060008082815260200190815260200160002060030160009054906101000a900460ff16155b8061140057508480156113ff575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156114295780838381518110151561141457fe5b90602001906020020181815250506001820191505b8080600101915050611396565b8787036040519080825280602002602001820160405280156114675781602001602082028038833980820191505090505b5093508790505b868110156114b957828181518110151561148457fe5b906020019060200201518489830381518110151561149e57fe5b9060200190602002018181525050808060010191505061146e565b505050949350505050565b6060806000806003805490506040519080825280602002602001820160405280156114fe5781602001602082028038833980820191505090505b50925060009150600090505b60038054905081101561164b5760016000868152602001908152602001600020600060038381548110151561153b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561163e576003818154811015156115c257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156115fb57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b808060010191505061150a565b8160405190808252806020026020018201604052801561167a5781602001602082028038833980820191505090505b509350600090505b818110156116f957828181518110151561169857fe5b9060200190602002015184828151811015156116b057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611682565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174157600080fd5b60038054905081603282111580156117595750818111155b8015611766575060008114155b8015611773575060008214155b151561177e57600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561181a57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561187657600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156118e257600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a361199785611cdd565b5050505050565b60006119ab848484611f85565b90506119b6816117c1565b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0457600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a5d57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ab757600080fd5b600092505b600380549050831015611ba0578473ffffffffffffffffffffffffffffffffffffffff16600384815481101515611aef57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b935783600384815481101515611b4657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ba0565b8280600101935050611abc565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611d3857600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611da357600080fd5b8460008082815260200190815260200160002060030160009054906101000a900460ff16151515611dd357600080fd5b611ddc86611020565b15611f7d57600080878152602001908152602001600020945060018560030160006101000a81548160ff021916908315150217905550611efa8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015487600201805460018160011615610100020316600290049050886002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ef05780601f10611ec557610100808354040283529160200191611ef0565b820191906000526020600020905b815481529060010190602001808311611ed357829003601f168201915b50505050506120d7565b15611f3157857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611f7c565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b5b505050505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff1614151515611fae57600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201908051906020019061206d92919061212a565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b6000806040516020840160008287838a8c6187965a03f19250505080915050949350505050565b8154818355818111156121255781836000526020600020918201910161212491906121aa565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061216b57805160ff1916838001178555612199565b82800160010185558215612199579182015b8281111561219857825182559160200191906001019061217d565b5b5090506121a691906121aa565b5090565b6121cc91905b808211156121c85760008160009055506001016121b0565b5090565b905600a165627a7a72305820b0d992f257e70d565448b927a3ae764342039a864112d5d5bb1ac1bd52e4104e00290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000060000000000000000000000000cb1437200aea736788f1fc56f327c0456c3598d00000000000000000000000074dd76e24b2cfb43c1b1a4498295d553d0843746000000000000000000000000eeb4ceee443f9e0d17bdbd6daa241681ee5e51c2000000000000000000000000a005caea55375ae20e3aaef746113535503abc1900000000000000000000000090ae948bb410838bff9d024ed849df6a7267dacf000000000000000000000000740a5c5742833bed72489fe6bf7efc9b79428989" - }, - "0x120470000000000000000000000000000000000a": { - "balance": "10901790566666700000000000", - "constructor": "0x60806040523480156200001157600080fd5b50604051620024c8380380620024c883398101806040528101908080518201929190602001805190602001909291905050506000825182603282111580156200005a5750818111155b801562000068575060008114155b801562000076575060008214155b15156200008257600080fd5b600092505b8451831015620001bd57600260008685815181101515620000a457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620001335750600085848151811015156200011057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15156200013f57600080fd5b60016002600087868151811015156200015457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828060010193505062000087565b8460039080519060200190620001d5929190620001e8565b50836004819055505050505050620002bd565b82805482825590600052602060002090810192821562000264579160200282015b82811115620002635782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000209565b5b50905062000273919062000277565b5090565b620002ba91905b80821115620002b657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200027e565b5090565b90565b6121fb80620002cd6000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101e457806320ea8d86146102275780632f54bf6e146102545780633411c81c146102af57806354741525146103145780637065cb4814610363578063784547a7146103a65780638b51d13f146103eb5780639ace38c21461042c578063a0e67e2b14610517578063a8abe69a14610583578063b5dc40c314610627578063b77bf600146106a9578063ba51a6df146106d4578063c01a8c8414610701578063c64274741461072e578063d74f8edd146107d5578063dc8452cd14610800578063e20056e61461082b578063ee22610b1461088e575b6000341115610175573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34801561018357600080fd5b506101a2600480360381019080803590602001909291905050506108bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f057600080fd5b50610225600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108f9565b005b34801561023357600080fd5b5061025260048036038101908080359060200190929190505050610b92565b005b34801561026057600080fd5b50610295600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3a565b604051808215151515815260200191505060405180910390f35b3480156102bb57600080fd5b506102fa60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d5a565b604051808215151515815260200191505060405180910390f35b34801561032057600080fd5b5061034d600480360381019080803515159060200190929190803515159060200190929190505050610d89565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b506103a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e1b565b005b3480156103b257600080fd5b506103d160048036038101908080359060200190929190505050611020565b604051808215151515815260200191505060405180910390f35b3480156103f757600080fd5b5061041660048036038101908080359060200190929190505050611105565b6040518082815260200191505060405180910390f35b34801561043857600080fd5b50610457600480360381019080803590602001909291905050506111d0565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156104d95780820151818401526020810190506104be565b50505050905090810190601f1680156105065780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561052357600080fd5b5061052c6112c5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561056f578082015181840152602081019050610554565b505050509050019250505060405180910390f35b34801561058f57600080fd5b506105d06004803603810190808035906020019092919080359060200190929190803515159060200190929190803515159060200190929190505050611353565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106135780820151818401526020810190506105f8565b505050509050019250505060405180910390f35b34801561063357600080fd5b50610652600480360381019080803590602001909291905050506114c4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561069557808201518184015260208101905061067a565b505050509050019250505060405180910390f35b3480156106b557600080fd5b506106be611701565b6040518082815260200191505060405180910390f35b3480156106e057600080fd5b506106ff60048036038101908080359060200190929190505050611707565b005b34801561070d57600080fd5b5061072c600480360381019080803590602001909291905050506117c1565b005b34801561073a57600080fd5b506107bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061199e565b6040518082815260200191505060405180910390f35b3480156107e157600080fd5b506107ea6119bd565b6040518082815260200191505060405180910390f35b34801561080c57600080fd5b506108156119c2565b6040518082815260200191505060405180910390f35b34801561083757600080fd5b5061088c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119c8565b005b34801561089a57600080fd5b506108b960048036038101908080359060200190929190505050611cdd565b005b6003818154811015156108ca57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561093557600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561098e57600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610b13578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a2157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b06576003600160038054905003815481101515610a7f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610ab957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b13565b81806001019250506109eb565b6001600381818054905003915081610b2b91906120fe565b506003805490506004541115610b4a57610b49600380549050611707565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610beb57600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c5657600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff16151515610c8657600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610e1457838015610dc8575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610dfb5750828015610dfa575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610e07576001820191505b8080600101915050610d91565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5557600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610eaf57600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff1614151515610ed657600080fd5b60016003805490500160045460328211158015610ef35750818111155b8015610f00575060008114155b8015610f0d575060008214155b1515610f1857600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038590806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b6003805490508110156110fd5760016000858152602001908152602001600020600060038381548110151561105e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110dd576001820191505b6004548214156110f057600192506110fe565b808060010191505061102d565b5b5050919050565b600080600090505b6003805490508110156111ca5760016000848152602001908152602001600020600060038381548110151561113e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111bd576001820191505b808060010191505061110d565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112a85780601f1061127d576101008083540402835291602001916112a8565b820191906000526020600020905b81548152906001019060200180831161128b57829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b6060600380548060200260200160405190810160405280929190818152602001828054801561134957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116112ff575b5050505050905090565b60608060008060055460405190808252806020026020018201604052801561138a5781602001602082028038833980820191505090505b50925060009150600090505b600554811015611436578580156113cd575060008082815260200190815260200160002060030160009054906101000a900460ff16155b8061140057508480156113ff575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156114295780838381518110151561141457fe5b90602001906020020181815250506001820191505b8080600101915050611396565b8787036040519080825280602002602001820160405280156114675781602001602082028038833980820191505090505b5093508790505b868110156114b957828181518110151561148457fe5b906020019060200201518489830381518110151561149e57fe5b9060200190602002018181525050808060010191505061146e565b505050949350505050565b6060806000806003805490506040519080825280602002602001820160405280156114fe5781602001602082028038833980820191505090505b50925060009150600090505b60038054905081101561164b5760016000868152602001908152602001600020600060038381548110151561153b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561163e576003818154811015156115c257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156115fb57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b808060010191505061150a565b8160405190808252806020026020018201604052801561167a5781602001602082028038833980820191505090505b509350600090505b818110156116f957828181518110151561169857fe5b9060200190602002015184828151811015156116b057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611682565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174157600080fd5b60038054905081603282111580156117595750818111155b8015611766575060008114155b8015611773575060008214155b151561177e57600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561181a57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561187657600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156118e257600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a361199785611cdd565b5050505050565b60006119ab848484611f85565b90506119b6816117c1565b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0457600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a5d57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ab757600080fd5b600092505b600380549050831015611ba0578473ffffffffffffffffffffffffffffffffffffffff16600384815481101515611aef57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b935783600384815481101515611b4657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ba0565b8280600101935050611abc565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611d3857600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611da357600080fd5b8460008082815260200190815260200160002060030160009054906101000a900460ff16151515611dd357600080fd5b611ddc86611020565b15611f7d57600080878152602001908152602001600020945060018560030160006101000a81548160ff021916908315150217905550611efa8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015487600201805460018160011615610100020316600290049050886002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ef05780601f10611ec557610100808354040283529160200191611ef0565b820191906000526020600020905b815481529060010190602001808311611ed357829003601f168201915b50505050506120d7565b15611f3157857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611f7c565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b5b505050505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff1614151515611fae57600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201908051906020019061206d92919061212a565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b6000806040516020840160008287838a8c6187965a03f19250505080915050949350505050565b8154818355818111156121255781836000526020600020918201910161212491906121aa565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061216b57805160ff1916838001178555612199565b82800160010185558215612199579182015b8281111561219857825182559160200191906001019061217d565b5b5090506121a691906121aa565b5090565b6121cc91905b808211156121c85760008160009055506001016121b0565b5090565b905600a165627a7a72305820b0d992f257e70d565448b927a3ae764342039a864112d5d5bb1ac1bd52e4104e00290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000060000000000000000000000000cb1437200aea736788f1fc56f327c0456c3598d00000000000000000000000074dd76e24b2cfb43c1b1a4498295d553d0843746000000000000000000000000eeb4ceee443f9e0d17bdbd6daa241681ee5e51c2000000000000000000000000a005caea55375ae20e3aaef746113535503abc1900000000000000000000000090ae948bb410838bff9d024ed849df6a7267dacf000000000000000000000000740a5c5742833bed72489fe6bf7efc9b79428989" - }, - "0x0cB1437200aea736788f1Fc56F327c0456c3598D": { - "balance": "250000000000000000" - }, - "0x74dd76E24B2CFB43C1b1a4498295d553D0843746": { - "balance": "250000000000000000" - }, - "0xeeB4CEEe443F9e0D17BdBD6Daa241681EE5E51c2": { - "balance": "250000000000000000" - }, - "0xA005caEa55375ae20e3aAEF746113535503ABC19": { - "balance": "250000000000000000" - }, - "0x90ae948bB410838bff9D024ed849dF6A7267Dacf": { - "balance": "250000000000000000" - }, - "0x740a5C5742833bEd72489fE6bf7EFc9B79428989": { - "balance": "250000000000000000" - }, - "0x1204700000000000000000000000000000000001": { - "constructor": "0x60806040523480156200001157600080fd5b5060405162002d7138038062002d71833981018060405260608110156200003757600080fd5b81019080805190602001909291908051906020019092919080516401000000008111156200006457600080fd5b828101905060208101848111156200007b57600080fd5b81518560208202830111640100000000821117156200009957600080fd5b5050929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002d216024913960400191505060405180910390fd5b60018151101562000242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018062002d45602c913960400191505060405180910390fd5b62000253836200046160201b60201c565b6200026482620005c360201b60201c565b60008090505b81518110156200040e57600073ffffffffffffffffffffffffffffffffffffffff168282815181106200029957fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156200032c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f56616c696461746f7220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b6001600360008484815181106200033f57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836003811115620003a057fe5b02179055508060036000848481518110620003b757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555080806001019150506200026a565b508060029080519060200190620004279291906200064a565b50600260019080546200043c929190620006d9565b506001600060146101000a81548160ff02191690831515021790555050505062000776565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe8ec518081a7aa1fc5d586a5443a858ab130be8b8e39b545172c879a7e242c6b60405160405180910390a250565b828054828255906000526020600020908101928215620006c6579160200282015b82811115620006c55782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200066b565b5b509050620006d5919062000730565b5090565b8280548282559060005260206000209081019282156200071d5760005260206000209182015b828111156200071c578254825591600101919060010190620006ff565b5b5090506200072c919062000730565b5090565b6200077391905b808211156200076f57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000737565b5090565b90565b61259b80620007866000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80639f723637116100b8578063b98049091161007c578063b980490914610562578063bd21442a146105be578063c805f68b14610681578063d826b7f1146106c5578063f2fde38b14610733578063f3aeac021461077757610137565b80639f723637146103dc578063a00745b61461043b578063a6940b0714610497578063b3f05b97146104e1578063b7ab4db51461050357610137565b8063455701d6116100ff578063455701d6146102c35780634d238c8e1461032257806375286211146103665780638da5cb5b146103705780638f32d59b146103ba57610137565b8063267fa41d1461013c57806334ba3c1b1461019857806340550a1c146101b657806340a141ff146102125780634183495514610256575b600080fd5b61017e6004803603602081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107d3565b604051808215151515815260200191505060405180910390f35b6101a0610845565b6040518082815260200191505060405180910390f35b6101f8600480360360208110156101cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610852565b604051808215151515815260200191505060405180910390f35b6102546004803603602081101561022857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610933565b005b6102986004803603602081101561026c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a7e565b604051808360038111156102a857fe5b60ff1681526020018281526020019250505060405180910390f35b6102cb610aaf565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561030e5780820151818401526020810190506102f3565b505050509050019250505060405180910390f35b6103646004803603602081101561033857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b3d565b005b61036e610d47565b005b6103786111b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103c26111db565b604051808215151515815260200191505060405180910390f35b6103e4611232565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561042757808201518184015260208101905061040c565b505050509050019250505060405180910390f35b61047d6004803603602081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611361565b604051808215151515815260200191505060405180910390f35b61049f611442565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104e9611468565b604051808215151515815260200191505060405180910390f35b61050b61147b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561054e578082015181840152602081019050610533565b505050509050019250505060405180910390f35b6105a46004803603602081101561057857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611509565b604051808215151515815260200191505060405180910390f35b61067f600480360360808110156105d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561063b57600080fd5b82018360208201111561064d57600080fd5b8035906020019184600183028401116401000000008311171561066f57600080fd5b909192939192939050505061157a565b005b6106c36004803603602081101561069757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117d6565b005b610731600480360360608110156106db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611989565b005b6107756004803603602081101561074957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be3565b005b6107b96004803603602081101561078d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c69565b604051808215151515815260200191505060405180910390f35b6000600160038111156107e257fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561083d57fe5b149050919050565b6000600180549050905090565b60006001600381111561086157fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156108bc57fe5b148061092c57506003808111156108cf57fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561092a57fe5b145b9050919050565b61093b6111db565b6109ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600060149054906101000a900460ff16610a12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124e16022913960400191505060405180910390fd5b80610a1c81610852565b610a71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124bf6022913960400191505060405180910390fd5b610a7a82611cdb565b5050565b60036020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60606002805480602002602001604051908101604052809291908181526020018280548015610b3357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610ae9575b5050505050905090565b610b456111db565b610bb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600060149054906101000a900460ff16610c1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124e16022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f56616c696461746f7220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b610cc881610852565b15610d3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f546869732076616c696461746f7220697320616c72656164792061637469766581525060200191505060405180910390fd5b610d4481611f2e565b50565b600060149054906101000a900460ff1615610dca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f56616c696461746f72207365742069732066696e616c697a656400000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f74207468652052656c617920636f6e747261637481525060200191505060405180910390fd5b6001600060146101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610fbe57600060036000600260016002805490500381548110610f1a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160000160006101000a81548160ff02191690836003811115610fa257fe5b02179055506001600280549050038160010181905550506110f1565b600060036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083600381111561103f57fe5b0217905550600060036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6002600190805461110392919061238d565b507f8564cd629b15f47dc310d45bcbfc9bcf5420b0d51bf0659a16c67f91d27632536001604051808060200182810382528381815481526020019150805480156111a257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611158575b50509250505060405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060018054905060028054905011156112d45760028054806020026020016040519081016040528092919081815260200182805480156112c857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161127e575b5050505050905061135e565b600180548060200260200160405190810160405280929190818152602001828054801561135657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161130c575b505050505090505b90565b60006002600381111561137057fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156113cb57fe5b148061143b57506003808111156113de57fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561143957fe5b145b9050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1681565b606060018054806020026020016040519081016040528092919081815260200182805480156114ff57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116114b5575b5050505050905090565b600060038081111561151757fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561157257fe5b149050919050565b8461158481610852565b6115d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124bf6022913960400191505060405180910390fd5b846115e381610852565b611638576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124bf6022913960400191505060405180910390fd5b844381106116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f426c6f636b206e756d626572206973206e6f742076616c69640000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611771576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f74207468652052656c617920636f6e747261637481525060200191505060405180910390fd5b858773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f729a19138e072a5a8d3a56d74ae0b5c84530f09aacd6e12b24c5b2fdc3f8a3d060405160405180910390a45050505050505050565b6117de6111db565b611850576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806124746024913960400191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806125036040913960400191505060405180910390fd5b61198681612003565b50565b8261199381610852565b6119e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124bf6022913960400191505060405180910390fd5b826119f281610852565b611a47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124bf6022913960400191505060405180910390fd5b82438110611abd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f426c6f636b206e756d626572206973206e6f742076616c69640000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f74207468652052656c617920636f6e747261637481525060200191505060405180910390fd5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fbc459bd9db54016b1966d0fe812bbe0a82cd627ae3eacd01727dc63a432ca41b60405160405180910390a4505050505050565b611beb6111db565b611c5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b611c668161208a565b50565b600060026003811115611c7857fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff166003811115611cd357fe5b149050919050565b600160028054905011611d39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806124986027913960400191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905060006001600280549050039050600060028281548110611d9c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060028481548110611dd757fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506002805480919060019003611e7b91906123df565b5060038060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836003811115611eda57fe5b021790555083600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f286121eb565b50505050565b6002600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836003811115611f8d57fe5b021790555060028190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506120006121eb565b50565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe8ec518081a7aa1fc5d586a5443a858ab130be8b8e39b545172c879a7e242c6b60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060146101000a81548160ff021916908315150217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a084718a600143034060026040518363ffffffff1660e01b8152600401808381526020018060200182810382528381815481526020019150805480156122da57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612290575b50509350505050602060405180830381600087803b1580156122fb57600080fd5b505af115801561230f573d6000803e3d6000fd5b505050506040513d602081101561232557600080fd5b810190808051906020019092919050505061238b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180612543602d913960400191505060405180910390fd5b565b8280548282559060005260206000209081019282156123ce5760005260206000209182015b828111156123cd5782548255916001019190600101906123b2565b5b5090506123db919061240b565b5090565b81548183558181111561240657818360005260206000209182019101612405919061244e565b5b505050565b61244b91905b8082111561244757600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612411565b5090565b90565b61247091905b8082111561246c576000816000905550600101612454565b5090565b9056fe52656c617920636f6e747261637420616464726573732063616e6e6f74206265203078305468657265206d757374206265206174206c6561737420312076616c696461746f72206c65667441646472657373206973206e6f7420616e206163746976652076616c696461746f7256616c696461746f7220736574206973206e6f742066696e616c697a6564207965744e65772072656c617920636f6e747261637420616464726573732063616e6e6f74206265207468652073616d65206173207468652063757272656e74206f6e6552656c617920636f6e747261637420496e6974696174654368616e67652063616c6c6261636b206661696c6564a165627a7a72305820f9ae418c0431b0892a4b904426be15d82d8486d433a3d6b9814bd5d1a377bb30002952656c617920636f6e747261637420616464726573732063616e6e6f74206265203078305468657265206d757374206265206174206c6561737420312076616c696461746f7220696e697469616c6c790000000000000000000000001204700000000000000000000000000000000005000000000000000000000000120470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000003000000000000000000000000d65b4c25a4ce1e024ff13425df1e0e574a1a0e9b00000000000000000000000083329c3fd90d7ee2efd546e0dc6453e9172a0643000000000000000000000000de15831ac319dab5eae5fd1fd9d52876c5e50f20" - }, - "0x1204700000000000000000000000000000000000": { - "constructor": "0x608060405273fffffffffffffffffffffffffffffffffffffffe600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006557600080fd5b506040516040806114d48339810180604052604081101561008557600080fd5b810190808051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361016b8261018160201b60201c565b61017a816102e260201b60201c565b50506104f4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610386576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f416464726573732063616e6e6f7420626520307830000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561042d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806114926042913960600191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4fea88aaf04c303804bb211ecc32a00ac8e5f0656bb854cad8a4a2e438256b7460405160405180910390a3505050565b610f8f806105036000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063b7ab4db511610071578063b7ab4db514610209578063bd96567714610268578063c476dd40146102ac578063d3e848f11461034f578063d69f13bb14610399578063f2fde38b146103e7576100a9565b806375286211146100ae5780638da5cb5b146100b85780638f32d59b14610102578063a084718a14610124578063ae3783d6146101bf575b600080fd5b6100b661042b565b005b6100c0610572565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61010a61059b565b604051808215151515815260200191505060405180910390f35b6101a56004803603604081101561013a57600080fd5b81019080803590602001909291908035906020019064010000000081111561016157600080fd5b82018360208201111561017357600080fd5b8035906020019184602083028401116401000000008311171561019557600080fd5b90919293919293905050506105f2565b604051808215151515815260200191505060405180910390f35b6101c761070c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610211610732565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610254578082015181840152602081019050610239565b505050509050019250505060405180910390f35b6102aa6004803603602081101561027e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610832565b005b61034d600480360360608110156102c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561030957600080fd5b82018360208201111561031b57600080fd5b8035906020019184600183028401116401000000008311171561033d57600080fd5b90919293919293905050506108b8565b005b6103576109e7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e5600480360360408110156103af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a0d565b005b610429600480360360208110156103fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b06565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53656e646572206973206e6f742073797374656d00000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663752862116040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561055857600080fd5b505af115801561056c573d6000803e3d6000fd5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f426022913960400191505060405180910390fd5b837f55252fa6eee4741b4e24a74a70e9c11fd2c2281df8d6ea13126ff845f7825c89848460405180806020018281038252848482818152602001925060200280828437600081840152601f19601f820116905080830192505050935050505060405180910390a2600190509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7ab4db56040518163ffffffff1660e01b815260040160006040518083038186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156107da57600080fd5b8101908080516401000000008111156107f257600080fd5b8281019050602081018481111561080857600080fd5b815185602082028301116401000000008211171561082557600080fd5b5050929190505050905090565b61083a61059b565b6108ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b6108b581610b8c565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd21442a33868686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109c957600080fd5b505af11580156109dd573d6000803e3d6000fd5b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d826b7f13384846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610aea57600080fd5b505af1158015610afe573d6000803e3d6000fd5b505050505050565b610b0e61059b565b610b80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b610b8981610d9e565b50565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f416464726573732063616e6e6f7420626520307830000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526042815260200180610f006042913960600191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4fea88aaf04c303804bb211ecc32a00ac8e5f0656bb854cad8a4a2e438256b7460405160405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fe4e65772072656c6179656420636f6e747261637420616464726573732063616e6e6f74206265207468652073616d65206173207468652063757272656e74206f6e6553656e646572206973206e6f74207468652052656c6179656420636f6e7472616374a165627a7a723058204045b88d4bc25183a0d657cfec6f8f8b976fd6aca20ab02e07cc6d76f43e7bd100294e65772072656c6179656420636f6e747261637420616464726573732063616e6e6f74206265207468652073616d65206173207468652063757272656e74206f6e6500000000000000000000000012047000000000000000000000000000000000050000000000000000000000001204700000000000000000000000000000000001" - }, - "0x1204700000000000000000000000000000000002": { - "constructor": "0x608060405273fffffffffffffffffffffffffffffffffffffffe600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b5060405160408062001bad833981018060405260408110156200008857600080fd5b810190808051906020019092919080519060200190929190505050620000b36200016360201b60201c565b60786000805490501462000113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018062001b866027913960400191505060405180910390fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a81905550505062000878565b60405180610f0001604052806704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704395680a6af46808152602001670438cfa9de4a0e808152602001670437eeee904c06808152602001670436b44ebcb52e8081526020016704351fca638586808152602001670433316184bd0e808152602001670430e914205bc680815260200167042e46e23661ae80815260200167042b4acbc6cec6808152602001670427f4d0d1a30e80815260200167042444f156de868081526020016704203b2d56812e80815260200167041bd784d08b0680815260200167041719f7c4fc0e808152602001670412028633d44680815260200167040c91301d13ae808152602001670406c5f580ba46808152602001670400a0d65ec80e8081526020016703fa21d2b73d068081526020016703f348ea8a192e8081526020016703ec161dd75c868081526020016703e4896c9f070e8081526020016703dca2d6e118c68081526020016703d4625c9d91ae8081526020016703cbc7fdd471c68081526020016703c2d3ba85b90e8081526020016703b98592b167868081526020016703afdd86577d2e8081526020016703a5db9577fa0680815260200167039b7fc012de0e808152602001670390ca06282946808152602001670385ba67b7dbae80815260200167037a50e4c1f54680815260200167036e8d7d46760e8081526020016703627031455e06808152602001670355f900bead2e80815260200167034927ebb2638680815260200167033bfcf220810e80815260200167032e78140905c680815260200167032099516bf1ae80815260200167031260aa4944c6808152602001670303ce1ea0ff0e8081526020016702f4e1ae7320868081526020016702e59b59bfa92e8081526020016702d5fb208699068081526020016702c60102c7f00e8081526020016702b5ad0083ae468081526020016702a4ff19b9d3ae808152602001670293f74e6a6046808152602001670282959e95540e808152602001670270da0a3aaf0680815260200167025ec4915a712e80815260200167024c5533f49a86808152602001670238da1d6b04400081526020016702260c5cdf4d240081526020016702138f83989f90008152602001670201639196fb840081526020016701ef8886da61000081526020016701ddfe6362d0040081526020016701ccc5273048900081526020016701bbdcd242caa40081526020016701ab45649a564000815260200167019afede36eb6400815260200167018b093f188a1000815260200167017b64873f324400815260200167016c10b6aae40000815260200167015d0dcd5b9f4400815260200167014e5bcb51641000815260200167013ffab08c3264008152602001670131ea7d0c0a400081526020016701242b30d0eba4008152602001670116bccbdad6900081526020016701099f4e29cb0400815260200166fcd2b7bdc90000815260200166f0570896d08400815260200166e42c40b4e19000815260200166d8526017fc2400815260200166ccc966c0204000815260200166c19154ad4de400815260200166b6aa29df851000815260200166ac13e656c5c400815260200166a1ce8a1310000081526020016697da151463c4008152602001668e36875ac1100081526020016684e3e0e627e4008152602001667be221b6984000815260200166733149cc1224008152602001666ad1592695900081526020016662c24fc62284008152602001665b042daab900008152602001665396f2d45904008152602001664c7a9f4302900081526020016645af32f6b5a4008152602001663f34adef724000815260200166390b102d386400815260200166333259b00810008152602001662daa8a77e144008152602001662873a284c40000815260200166238da1d6b044008152602001661ef8886da610008152602001661ab45649a5640081526020016616c10b6aae4000815260200166131ea7d0c0a4008152602001660fcd2b7bdc90008152602001660ccc966c0204008152602001660a1ce8a131000081526020016607be221b69840081526020016605b042daab900081526020016603f34adef7240081526020016602873a284c4000815260200166016c10b6aae400815260200165a1ce8a1310008152602001652873a284c4008152506000906078620007e5929190620007fe565b5062080520600181905550607860015402600281905550565b8280548282559060005260206000209081019282156200083d579160200282015b828111156200083c5782518255916020019190600101906200081f565b5b5090506200084c919062000850565b5090565b6200087591905b808211156200087157600081600090555060010162000857565b5090565b90565b6112fe80620008886000396000f3fe608060405234801561001057600080fd5b50600436106101205760003560e01c80634476d66a116100ad57806394f7f62b1161007157806394f7f62b1461045d578063df6a50301461049f578063e6e100db146104bd578063f91c289814610515578063fb1ac5251461068057610120565b80634476d66a146103515780634f4013fb14610393578063553a5c85146103b157806358ceb672146103cf57806360d4b8be146103d957610120565b80631a488047116100f45780631a488047146101f157806330f6eb161461020f57806333ea51a81461027157806337339a16146102b55780633d84b8c1146102f957610120565b8062f380f414610125578063078d8e7a1461016f5780630f411cdb1461019157806318129375146101af575b600080fd5b61012d61069e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101776106c4565b604051808215151515815260200191505060405180910390f35b6101996106d4565b6040518082815260200191505060405180910390f35b6101db600480360360208110156101c557600080fd5b81019080803590602001909291905050506106da565b6040518082815260200191505060405180910390f35b6101f96106fb565b6040518082815260200191505060405180910390f35b61025b6004803603604081101561022557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610701565b6040518082815260200191505060405180910390f35b6102b36004803603602081101561028757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610726565b005b6102f7600480360360208110156102cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a7565b005b61033b6004803603602081101561030f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108ae565b6040518082815260200191505060405180910390f35b61037d6004803603602081101561036757600080fd5b81019080803590602001909291905050506108c6565b6040518082815260200191505060405180910390f35b61039b6108de565b6040518082815260200191505060405180910390f35b6103b96108e3565b6040518082815260200191505060405180910390f35b6103d76108e9565b005b61041b600480360360208110156103ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061094d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104896004803603602081101561047357600080fd5b8101908080359060200190929190505050610980565b6040518082815260200191505060405180910390f35b6104a76109c4565b6040518082815260200191505060405180910390f35b6104ff600480360360208110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ca565b6040518082815260200191505060405180910390f35b6105e16004803603604081101561052b57600080fd5b810190808035906020019064010000000081111561054857600080fd5b82018360208201111561055a57600080fd5b8035906020019184602083028401116401000000008311171561057c57600080fd5b90919293919293908035906020019064010000000081111561059d57600080fd5b8201836020820111156105af57600080fd5b803590602001918460208302840111640100000000831117156105d157600080fd5b90919293919293905050506109e2565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561062857808201518184015260208101905061060d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561066a57808201518184015260208101905061064f565b5050505090500194505050505060405180910390f35b610688610edb565b6040518082815260200191505060405180910390f35b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106cf43610ee1565b905090565b60025481565b600081815481106106e757fe5b906000526020600020016000915090505481565b600a5481565b6008602052816000526040600020602052806000526040600020600091509150505481565b80600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f742074686520636f6d6d756e6974792066756e6481525060200191505060405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915090505481565b60076020528060005260406000206000915090505481565b607881565b60035481565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061098b82610ee1565b1561099957600090506109bf565b600060015483816109a657fe5b04815481106109b157fe5b906000526020600020015490505b919050565b60045481565b60056020528060005260406000206000915090505481565b606080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aa8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c6572206973206e6f74207468652073797374656d000000000000000081525060200191505060405180910390fd5b838390508686905014610b06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806112ae6025913960400191505060405180910390fd5b60018686905014610b7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f42656e65666163746f7273206c697374206c656e677468206973206e6f74203181525060200191505060405180910390fd5b600084846000818110610b8e57fe5b9050602002013561ffff1661ffff1614610bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061128c6022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1686866000818110610c1857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610c5c5750610c5b43610ee1565b5b15610cd2576000604051908082528060200260200182016040528015610c915781602001602082028038833980820191505090505b506000604051908082528060200260200182016040528015610cc25781602001602082028038833980820191505090505b5081915080905091509150610ed2565b60606002604051908082528060200260200182016040528015610d045781602001602082028038833980820191505090505b50905060608151604051908082528060200260200182016040528015610d395781602001602082028038833980820191505090505b509050610d6e88886000818110610d4c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16610ef0565b82600081518110610d7b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610dbe43610980565b81600081518110610dcb57fe5b602002602001018181525050610e02600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ef0565b82600181518110610e0f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5481600181518110610e5957fe5b602002602001018181525050610e9782600081518110610e7557fe5b602002602001015182600081518110610e8a57fe5b6020026020010151610f9d565b610ec982600181518110610ea757fe5b602002602001015182600181518110610ebc57fe5b6020026020010151611145565b81819350935050505b94509492505050565b60015481565b60006002548210159050919050565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f935782915050610f98565b809150505b919050565b61100081600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060004381526020019081526020016000205461120390919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000438152602001908152602001600020819055506110a681600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120390919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061110f81600760004381526020019081526020016000205461120390919063ffffffff16565b600760004381526020019081526020016000208190555061113b8160035461120390919063ffffffff16565b6003819055505050565b61115a8160045461120390919063ffffffff16565b6004819055506111b281600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120390919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111ff8282610f9d565b5050565b600080828401905083811015611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f766572666c6f77206572726f7200000000000000000000000000000000000081525060200191505060405180910390fd5b809150509291505056fe42656e65666163746f72206973206e6f742074686520626c6f636b20617574686f7242656e65666163746f72732f7479706573206c697374206c656e6774682064696666657273a165627a7a72305820ef1c2590551666e2ac227034529ee69c33ec91868d23c0a0a887d514094ec6030029526577617264206375727665206973206e6f7420746865207265717569726564206c656e67746800000000000000000000000012047000000000000000000000000000000000030000000000000000000000000000000000000000000000000856d3dfb6e26d00" - }, - "0x1204700000000000000000000000000000000004": { - "balance": "41198207933333333690000000", - "constructor": "0x608060405260006001556a22140f53c2d216263ba2803073ffffffffffffffffffffffffffffffffffffffff16311462000085576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806200150b6023913960400191505060405180910390fd5b620000956200010260201b60201c565b6a22140f53c2d216263ba28060015414620000fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180620014ba6028913960400191505060405180910390fd5b62001133565b62000136722d4606b65c033769968bcdc63881b90b0853f569264876ff9c85a7a8ee00635df22bc06200105960201b60201c565b6200016a726e371c454a2d081f3966c180ba2c6165d87de66901c3c03b52c63f027880635df22bc06200105960201b60201c565b6200019e72c2f65230815d30eaa1a4d057bcf0b72fe3cc4e6902a5a058fc295ed00000635df22bc06200105960201b60201c565b620001d37303cccdc799d4dc37d56e3f9dba7f9c210fa1086f6902a5a058fc295ed00000635df22bc06200105960201b60201c565b6200020873047d955877a55fbdac768573a9259f29b103a0666902a5a058fc295ed00000635df22bc06200105960201b60201c565b6200023d7306920bb91f7027176cf373996d39b539ba436d876969e10de76676d0800000635d79dee06200105960201b60201c565b620002727306fdb93aa64f33a8fb40a36c462a3f7a074d632c6901c3c03b52c63f027880635df22bc06200105960201b60201c565b620002a7730ad7ba4af33b485e6f2505c417554631a3e5643f6902a5a058fc295ed00000635df22bc06200105960201b60201c565b620002dc730dd959deb4c458cc2ac379898bf2c99f7a8f399b6901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000311731153818a2eb49f0a71b27313c32814fc02e4db50694220bb939da668600000635df22bc06200105960201b60201c565b6200034773120470000000000000000000000000000000000a6a084595161401484a000000635d79dee06200105960201b60201c565b6200037c7315696134ebeed360dc90dc97ddd00bd07e1c11e96934f086f3b33b68400000635df22bc06200105960201b60201c565b620003b1731f0c30b1aa4c468b5beb02bac8df8f27617a2296692346646590efbaf71200635df22bc06200105960201b60201c565b620003e6732540ded041b6fedc0ff6f0cf26b891ec97c954006901c3c03b52c63f027880635df22bc06200105960201b60201c565b6200041b7325ae7b45d8646580dfcae403d29164729eb8642f691a784379d99db4200000635df22bc06200105960201b60201c565b6200045073349ebc5a6e853df121c84e999081e5992928e64f6934f086f3b33b68400000635df22bc06200105960201b60201c565b62000485733885d15573e45228dd54cd4fde9bfac64d702ed46901c3c03b52c63f027880635df22bc06200105960201b60201c565b620004ba733a9d83766c03c465851a38daa364ef7deccd1ece6934f086f3b33b68400000635df22bc06200105960201b60201c565b620004ef733abaa3f24428d6028f5a7fc5b18ce9d04ccec2296902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000524733c9f867d9b3a595987e198786fa9ab722e5c2f9b6934f086f3b33b68400000635df22bc06200105960201b60201c565b62000559733f11b4ad17fde4695cad64e109ae92a679d87bfc6969e10de76676d0800000635d79dee06200105960201b60201c565b6200058e733f12af735238c6e2fa45efb5b2f3fae82df4c9226901c3c03b52c63f027880635df22bc06200105960201b60201c565b620005c373404bb9c13364522133b363d5c4adb7a88056b19d6902d2cd2bb7a39658b500635df22bc06200105960201b60201c565b620005f873428ab4b019ee3a9b9863b2b4bf1885ce6dff9a736902a5a058fc295ed00000635df22bc06200105960201b60201c565b6200062d7347428fc08e56388372e7c81ad4a1140d932d10966969e10de76676d0800000635d79dee06200105960201b60201c565b620006627348ee57faf61c0b963113e7921e6173629e6bc4436902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000697734d0aa1c3459bf41e3ad4e4f40bbf029cb5723d836934f086f3b33b68400000635df22bc06200105960201b60201c565b620006cc7357f33efad76d4b783cf42c9e6cb08f4425dfe96e6902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000701735b3fb4e1d6040615f3e681bec4c80b5d7c9580716901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000736735fbb9c482034d287c5b3848fc2f9272abdd5bfa26903878076a58c80674b00635df22bc06200105960201b60201c565b6200076b73656e5569bef7781bf0db199d32027766053501ff69438ec266600555e00000635df22bc06200105960201b60201c565b620007a073664f991cdb2ffe6b6a568ede65b0208dbcce6f72691a784379d99db4200000635df22bc06200105960201b60201c565b620007d67369af0912dd44dce2b2373db4021788cbad84ff356a0422ca8b0a00a4250000006360c3f9006200105960201b60201c565b6200080b736a0a5da2a48ea87c2a906c53b3373642c29a4b6c6934f086f3b33b68400000635df22bc06200105960201b60201c565b62000840736cf32cc52e220c023c2d92b1d62310f46a6e2a136901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000875736d516767e4068fc331bdb331fba7578bdb07a68c69234b04a2777d0408ee00635df22bc06200105960201b60201c565b620008aa736dd10e41a7a84fe23ab35fefa2f46c9895f87a2d693c8c4bde2deef1680000635df22bc06200105960201b60201c565b620008df737030892dbf9c2048e796296dda597f145754a1856969e10de76676d0800000635d79dee06200105960201b60201c565b62000914737ed62cf71d519d3bf293ef90829508f92f4ccccb6902a5a058fc295ed00000635df22bc06200105960201b60201c565b6200094a73871ba4266793ad11da537d4857de7ad49eab662b6a017293b0a9e69fd9c00000635df22bc06200105960201b60201c565b6200097f73880e8b0ece0171edd0247f8d13d348d77a6b9b296903878076a58c80674b00635df22bc06200105960201b60201c565b620009b373887f2b16847248bc757b69f3c695f24ff344daf268e9062e03b5c2908780635df22bc06200105960201b60201c565b620009e8738c994ada51d35b8519424368807fb99c103366866969e10de76676d0800000635d79dee06200105960201b60201c565b62000a1d739196e46d664ceda55cb45a2cc5ab5bd1b7e614e26902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000a5273943c85b13f24083ec73815f7ba763b7c42ae02886902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000a87739467b762550673f08b14423f8562048d5e3694226902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000abc73949423db1bfee1ddec99c9d24a12a6ea27cb34896901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000af17396a5eb172efdf262ed6beaaf0e20c6af71831fc96934f086f3b33b68400000635df22bc06200105960201b60201c565b62000b2673a69dca0814eaadc89b6dbe94c5e2110497690f6c6903878076a58c80674b00635df22bc06200105960201b60201c565b62000b5b73a720a8ee90f5013cae9bf7bcac1d153e42815454691a784379d99db4200000635df22bc06200105960201b60201c565b62000b9073b080454f190e76eb8e719560fa8cae50c71bcea96901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000bc573b476ee7d610dae7b23b671ebc7bd6112e97729696902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000bfb73b561618a3ea959a5e363643b267c4cb8fe4b1df76a0422ca8b0a00a4250000006360c3f9006200105960201b60201c565b62000c3073b5b6d8885fbf28f843cc7886de242b811d6952056901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000c6573b61c11b6e42d459efaee8995c44db08507e468e169477d5529f68a63000000635df22bc06200105960201b60201c565b62000c9a73b999004b49c6b907d4278067da5c85195dcd7fc769081e0dddaff653f8b500635df22bc06200105960201b60201c565b62000ccf73be4888c5b021e5f16cd254de2d4eaf17625685c46934f086f3b33b68400000635df22bc06200105960201b60201c565b62000d0473c1d441a2ad43af7b4a3d8e3200d2ceb3a973099d6934f086f3b33b68400000635df22bc06200105960201b60201c565b62000d3973c58a20e290e858542d8e8bb07b600aeb9195fe306903878076a58c80674b00635df22bc06200105960201b60201c565b62000d6f73cfe7964b0b6412b013dc019bdf3afef58be565936a055084cc99f0bdbadd0000635df22bc06200105960201b60201c565b62000da473d33d4f83e85c92e0b53ffe4fc0e18b0e3632c0976901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000dd973d44fb8de580d34f44789408cc9335c9a9ce0ce4d691ad0235eb930a0540000635df22bc06200105960201b60201c565b62000e0e73dacd80d8e1d4f117515caa477ee7599cdfc766196902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000e4373db6cc57168c07b83a00f1f8871538446068824fc691a784379d99db4200000635df22bc06200105960201b60201c565b62000e7873de6b493d368316b9078454e37dce4968482dfbe96969e10de76676d0800000635d79dee06200105960201b60201c565b62000ead73e23c7cb60189bb2fd60625d2c2747b1e68f107766934f086f3b33b68400000635df22bc06200105960201b60201c565b62000ee273e6e8a111c89b05337049de9349c7c4880a396ef1691a784379d99db4200000635df22bc06200105960201b60201c565b62000f1773ebbddf28bf3224791b0510a2ab8813f182fe4e2b6901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000f4c73f4e31018a926f64cb780cb9f5f027377bcfb26fc6907f0e10af47c1c700000635df22bc06200105960201b60201c565b62000f8173f8e6ecb4b0f17576525749bdf85524652cbf002e6901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000fb773fd679097fe0f914642af9857e5799332fe2efa296a01a784379d99db42000000635d79dee06200105960201b60201c565b62000fed73fd7a30d3c2bd017a458610274c275059d308b2e76a01ff1675f219f5a8780000635df22bc06200105960201b60201c565b6200102273ffcf98c62c1bad480ab6846717b173a72e2dd090691a784379d99db4200000635df22bc06200105960201b60201c565b6200105773ffd9b871df6e93803c0877e98fc1722b39c00d786902a5a058fc295ed00000635df22bc06200105960201b60201c565b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154148015620010b4575060008160010154145b6200110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620014e26029913960400191505060405180910390fd5b8260016000828254019250508190555082816000018190555081816001018190555050505050565b61037780620011436000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806318a5bbdc14610051578063192e7a7b146100b057806330f0dbe0146100f45780639976e12f14610112575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610130565b604051808381526020018281526020019250505060405180910390f35b6100f2600480360360208110156100c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610154565b005b6100fc610336565b6040518082815260200191505060405180910390f35b61011a610345565b6040518082815260200191505060405180910390f35b60006020528060005260406000206000915090508060000154908060010154905082565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015411610210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f417661696c61626c6520616d6f756e742069732030000000000000000000000081525060200191505060405180910390fd5b80600101544211610289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f486f6c64696e6720706572696f64206973206e6f74206f76657200000000000081525060200191505060405180910390fd5b600081600001549050600082600001819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156102e2573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff167f221c08a06b07a64803b3787861a3f276212fcccb51c2e6234077a9b8cb13047a826040518082815260200191505060405180910390a2505050565b6a22140f53c2d216263ba28081565b6001548156fea165627a7a72305820b0165b18a29fae78ec1f58bf69134a67ab02e21d059e757412318d8362284866002954617267657420616d6f756e742073686f756c6420657175616c2061637475616c20616d6f756e74486f6c64696e6720666f72207468697320616464726573732077617320616c7265616479207365742e42616c616e63652073686f756c6420657175616c2074617267657420616d6f756e742e" - }, - "0x1204700000000000000000000000000000000006": { - "constructor": "0x60806040523480156200001157600080fd5b5060405160208062003ed2833981018060405260208110156200003357600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a362000111816200011860201b60201c565b506200027a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613c48806200028a6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806392698814116100c3578063e30bd7401161007c578063e30bd740146109b5578063eadf976014610a72578063ef5454d614610b17578063f25eb5c114610bc8578063f2fde38b14610bd2578063f6d339e414610c1657610158565b80639269881414610705578063ac4e73f91461074b578063ac72c120146107fc578063c3a3582514610842578063deb931a2146108d9578063df57b7421461094757610158565b80636795dbcd116101155780636795dbcd1461041c5780636a1acc3f146104df57806379ce9fac1461059c5780638da5cb5b146106025780638f32d59b1461064c57806390b97fc11461066e57610158565b806306b2ff471461015d57806319362a28146101b9578063267b69221461025e5780633f3935d1146102ff578063432ced04146103905780634f39ca59146103d6575b600080fd5b61019f6004803603602081101561017357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cd1565b604051808215151515815260200191505060405180910390f35b610244600480360360608110156101cf57600080fd5b8101908080359060200190929190803590602001906401000000008111156101f657600080fd5b82018360208201111561020857600080fd5b8035906020019184600183028401116401000000008311171561022a57600080fd5b909192939192939080359060200190929190505050610d31565b604051808215151515815260200191505060405180910390f35b61028a6004803603602081101561027457600080fd5b8101908080359060200190929190505050610fcb565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6103766004803603602081101561031557600080fd5b810190808035906020019064010000000081111561033257600080fd5b82018360208201111561034457600080fd5b8035906020019184600183028401116401000000008311171561036657600080fd5b909192939192939050505061102f565b604051808215151515815260200191505060405180910390f35b6103bc600480360360208110156103a657600080fd5b810190808035906020019092919050505061134e565b604051808215151515815260200191505060405180910390f35b610402600480360360208110156103ec57600080fd5b8101908080359060200190929190505050611546565b604051808215151515815260200191505060405180910390f35b61049d6004803603604081101561043257600080fd5b81019080803590602001909291908035906020019064010000000081111561045957600080fd5b82018360208201111561046b57600080fd5b8035906020019184600183028401116401000000008311171561048d57600080fd5b9091929391929390505050611a8d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610521600480360360208110156104f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bb2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610561578082015181840152602081019050610546565b50505050905090810190601f16801561058e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105e8600480360360408110156105b257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c62565b604051808215151515815260200191505060405180910390f35b61060a611f58565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610654611f81565b604051808215151515815260200191505060405180910390f35b6106ef6004803603604081101561068457600080fd5b8101908080359060200190929190803590602001906401000000008111156106ab57600080fd5b8201836020820111156106bd57600080fd5b803590602001918460018302840111640100000000831117156106df57600080fd5b9091929391929390505050611fd8565b6040518082815260200191505060405180910390f35b6107316004803603602081101561071b57600080fd5b81019080803590602001909291905050506120fa565b604051808215151515815260200191505060405180910390f35b6107e26004803603604081101561076157600080fd5b810190808035906020019064010000000081111561077e57600080fd5b82018360208201111561079057600080fd5b803590602001918460018302840111640100000000831117156107b257600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612245565b604051808215151515815260200191505060405180910390f35b6108286004803603602081101561081257600080fd5b81019080803590602001909291905050506127e7565b604051808215151515815260200191505060405180910390f35b6108c36004803603604081101561085857600080fd5b81019080803590602001909291908035906020019064010000000081111561087f57600080fd5b82018360208201111561089157600080fd5b803590602001918460018302840111640100000000831117156108b357600080fd5b9091929391929390505050612932565b6040518082815260200191505060405180910390f35b610905600480360360208110156108ef57600080fd5b8101908080359060200190929190505050612a57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109736004803603602081101561095d57600080fd5b8101908080359060200190929190505050612b72565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109f7600480360360208110156109cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c8d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a37578082015181840152602081019050610a1c565b50505050905090810190601f168015610a645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610afd60048036036060811015610a8857600080fd5b810190808035906020019092919080359060200190640100000000811115610aaf57600080fd5b820183602082011115610ac157600080fd5b80359060200191846001830284011164010000000083111715610ae357600080fd5b909192939192939080359060200190929190505050612d6e565b604051808215151515815260200191505060405180910390f35b610bae60048036036040811015610b2d57600080fd5b8101908080359060200190640100000000811115610b4a57600080fd5b820183602082011115610b5c57600080fd5b80359060200191846001830284011164010000000083111715610b7e57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061300b565b604051808215151515815260200191505060405180910390f35b610bd0613281565b005b610c1460048036036020811015610be857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613674565b005b610cb760048036036060811015610c2c57600080fd5b810190808035906020019092919080359060200190640100000000811115610c5357600080fd5b820183602082011115610c6557600080fd5b80359060200191846001830284011164010000000083111715610c8757600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136fa565b604051808215151515815260200191505060405180910390f35b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080546001816001161561010002031660029004905014159050919050565b600084600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610e0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b83600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a2600192505050949350505050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b600082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600073ffffffffffffffffffffffffffffffffffffffff16600160008380519060200120815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050503373ffffffffffffffffffffffffffffffffffffffff16600160008380519060200120815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611279576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4572726f723a204f6e6c79207768656e2070726f706f7365640000000000000081525060200191505060405180910390fd5b8484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091906112c7929190613b0e565b503373ffffffffffffffffffffffffffffffffffffffff167f098ae8581bb8bd9af1beaf7f2e9f51f31a8e5a8bfada4e303a645d71d9c91920868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a260019250505092915050565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204f6e6c79207768656e20756e7265736572766564000000000081525060200191505060405180910390fd5b611431611f81565b6114a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b336001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16837f4963513eca575aba66fdcd25f267aae85958fe6fb97e75fa25d783f1a091a22160405160405180910390a36001915050919050565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b823373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b83600260006001600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180828054600181600116156101000203166002900480156117cb5780601f106117a95761010080835404028352918201916117cb565b820191906000526020600020905b8154815290600101906020018083116117b7575b5050915050604051809103902014156119da576001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd600260006001600089815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561194a5780601f1061191f5761010080835404028352916020019161194a565b820191906000526020600020905b81548152906001019060200180831161192d57829003601f168201915b50509250505060405180910390a2600260006001600087815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006119d99190613b8e565b5b60016000858152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550503373ffffffffffffffffffffffffffffffffffffffff16847fef1961b4d2909dc23643b309bfe5c3e5646842d98c3a58517037ef3871185af360405160405180910390a3600192505050919050565b600083600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b60016000868152602001908152602001600020600201848460405180838380828437808301925050509250505090815260200160405180910390205460001c9150509392505050565b60026020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c5a5780601f10611c2f57610100808354040283529160200191611c5a565b820191906000526020600020905b815481529060010190602001808311611c3d57829003601f168201915b505050505081565b600082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611d3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b833373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613bfc6021913960400191505060405180910390fd5b836001600087815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16867f7b97c62130aa09acbbcbf7482630e756592496f1759eaf702f469cf64dfb779460405160405180910390a460019250505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600083600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156120b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b6001600086815260200190815260200160002060020184846040518083838082843780830192505050925050509081526020016040518091039020549150509392505050565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156121d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600073ffffffffffffffffffffffffffffffffffffffff16600160008380519060200120815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561236c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b848460405180838380828437808301925050509250505060405180910390203373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612462576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b6000868660405180838380828437808301925050509250505060405180910390209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156125d3575080600260006001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180828054600181600116156101000203166002900480156125c45780601f106125a25761010080835404028352918201916125c4565b820191906000526020600020905b8154815290600101906020018083116125b0575b50509150506040518091039020145b1561270a57600260006001600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006126599190613b8e565b6001600082815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd888860405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a25b846001600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f728435a0031f6a04538fcdd24922a7e06bc7bc945db03e83d22122d1bc5f28df888860405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a2600193505050509392505050565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156128c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600083600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b60016000868152602001908152602001600020600201848460405180838380828437808301925050509250505090815260200160405180910390205460001c9150509392505050565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612c4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6060600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d625780601f10612d3757610100808354040283529160200191612d62565b820191906000526020600020905b815481529060010190602001808311612d4557829003601f168201915b50505050509050919050565b600084600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612e4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b8360001b600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a2600192505050949350505050565b600083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600073ffffffffffffffffffffffffffffffffffffffff16600160008380519060200120815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613132576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b61313a611f81565b6131ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b8484600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091906131fa929190613b0e565b508273ffffffffffffffffffffffffffffffffffffffff167f098ae8581bb8bd9af1beaf7f2e9f51f31a8e5a8bfada4e303a645d71d9c91920868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a260019150509392505050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156133545780601f1061332957610100808354040283529160200191613354565b820191906000526020600020905b81548152906001019060200180831161333757829003601f168201915b5050505050600073ffffffffffffffffffffffffffffffffffffffff16600160008380519060200120815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613439576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156135395780601f1061350e57610100808354040283529160200191613539565b820191906000526020600020905b81548152906001019060200180831161351c57829003601f168201915b50509250505060405180910390a260016000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180828054600181600116156101000203166002900480156135e55780601f106135c35761010080835404028352918201916135e5565b820191906000526020600020905b8154815290600101906020018083116135d1575b50509150506040518091039020815260200190815260200160002060010160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006136719190613b8e565b50565b61367c611f81565b6136ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b6136f7816139ad565b50565b600084600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156137d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146138ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660001b600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a2600192505050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613a50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613b4f57803560ff1916838001178555613b7d565b82800160010185558215613b7d579182015b82811115613b7c578235825591602001919060010190613b61565b5b509050613b8a9190613bd6565b5090565b50805460018160011615610100020316600290046000825580601f10613bb45750613bd3565b601f016020900490600052602060002090810190613bd29190613bd6565b5b50565b613bf891905b80821115613bf4576000816000905550600101613bdc565b5090565b9056fe4572726f723a206e6f207472616e7366657220746f206164647265737320307830a165627a7a72305820fe186a600f547c59523f333a7eb66cd1de74492306acaa3db2cd4c8a1b426b5a00290000000000000000000000001204700000000000000000000000000000000005" - }, - "0x1204700000000000000000000000000000000007": { - "constructor": "0x608060405234801561001057600080fd5b506040516040806108658339810180604052604081101561003057600080fd5b810190808051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3610116816101a160201b60201c565b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167fcc57a97257d7703be97e9d538cb08b3fa1ff2784b776d505942d49a95dc2891460405160405180910390a25050610302565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610554806103116000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80636ddc4a071461005c5780638da5cb5b146100a65780638f32d59b146100f0578063f2fde38b14610112578063fe64d6ff14610156575b600080fd5b61006461019a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100ae6101c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100f86101e9565b604051808215151515815260200191505060405180910390f35b6101546004803603602081101561012857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610240565b005b6101986004803603602081101561016c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102c6565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6102486101e9565b6102ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b6102c3816103c7565b50565b6102ce6101e9565b610340576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fcc57a97257d7703be97e9d538cb08b3fa1ff2784b776d505942d49a95dc2891460405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561046a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea165627a7a723058204d73401a5cbb107ba765457948a3c2a2612436446f9125c3696f0f4cc7e06980002900000000000000000000000012047000000000000000000000000000000000090000000000000000000000001204700000000000000000000000000000000005" - }, - "0x1204700000000000000000000000000000000008": { - "constructor": "0x60806040523480156200001157600080fd5b506040516040806200298b8339810180604052620000339190810190620002a8565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000141816200014960201b60201c565b5050620003da565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b3906200032b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000815190506200028b81620003a6565b92915050565b600081519050620002a281620003c0565b92915050565b60008060408385031215620002bc57600080fd5b6000620002cc8582860162000291565b9250506020620002df858286016200027a565b9150509250929050565b6000620002f8601f836200034d565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b600060208201905081810360008301526200034681620002e9565b9050919050565b600082825260208201905092915050565b60006200036b8262000386565b9050919050565b60006200037f826200035e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620003b1816200035e565b8114620003bd57600080fd5b50565b620003cb8162000372565b8114620003d757600080fd5b50565b6125a180620003ea6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063954029c911610097578063eab7ad9211610066578063eab7ad92146102b2578063ee7ee0fd146102ce578063f2fde38b146102fe578063fbd74f841461031a576100f5565b8063954029c91461021a578063a999809f14610236578063b71da0d114610266578063da5393d514610296576100f5565b80636a564261116100d35780636a5642611461017857806370a05b18146101ae5780638da5cb5b146101de5780638f32d59b146101fc576100f5565b80631bab58f5146100fa5780632c5653e21461012a57806332d91c0e14610148575b600080fd5b610114600480360361010f9190810190611d82565b61034a565b60405161012191906123f7565b60405180910390f35b610132610767565b60405161013f919061233a565b60405180910390f35b610162600480360361015d9190810190611d82565b61078d565b60405161016f9190612355565b60405180910390f35b610192600480360361018d9190810190611d82565b61097e565b6040516101a597969594939291906122af565b60405180910390f35b6101c860048036036101c39190810190611d82565b610c2d565b6040516101d5919061228d565b60405180910390f35b6101e6610e1e565b6040516101f39190612257565b60405180910390f35b610204610e47565b6040516102119190612272565b60405180910390f35b610234600480360361022f9190810190611d82565b610e9e565b005b610250600480360361024b9190810190611d82565b610ff5565b60405161025d9190612355565b60405180910390f35b610280600480360361027b9190810190611d82565b6111e6565b60405161028d9190612272565b60405180910390f35b6102b060048036036102ab9190810190611d82565b611276565b005b6102cc60048036036102c79190810190611dd4565b611371565b005b6102e860048036036102e39190810190611d82565b611673565b6040516102f59190612272565b60405180910390f35b61031860048036036103139190810190611d82565b6117d9565b005b610334600480360361032f9190810190611d82565b61182c565b604051610341919061228d565b60405180910390f35b610352611b4b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ba57600080fd5b505afa1580156103ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103f29190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461045f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045690612377565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e0016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105e45780601f106105b9576101008083540402835291602001916105e4565b820191906000526020600020905b8154815290600101906020018083116105c757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106865780601f1061065b57610100808354040283529160200191610686565b820191906000526020600020905b81548152906001019060200180831161066957829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107285780601f106106fd57610100808354040283529160200191610728565b820191906000526020600020905b81548152906001019060200180831161070b57829003601f168201915b505050505081526020016004820160009054906101000a900460ff16151515158152602001600582015481526020016006820154815250509050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f757600080fd5b505afa15801561080b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061082f9190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461089c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089390612377565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109725780601f1061094757610100808354040283529160200191610972565b820191906000526020600020905b81548152906001019060200180831161095557829003601f168201915b50505050509050919050565b6001602052806000526040600020600091509050806000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a2a5780601f106109ff57610100808354040283529160200191610a2a565b820191906000526020600020905b815481529060010190602001808311610a0d57829003601f168201915b505050505090806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ac85780601f10610a9d57610100808354040283529160200191610ac8565b820191906000526020600020905b815481529060010190602001808311610aab57829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b665780601f10610b3b57610100808354040283529160200191610b66565b820191906000526020600020905b815481529060010190602001808311610b4957829003601f168201915b505050505090806003018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c045780601f10610bd957610100808354040283529160200191610c04565b820191906000526020600020905b815481529060010190602001808311610be757829003601f168201915b5050505050908060040160009054906101000a900460ff16908060050154908060060154905087565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9757600080fd5b505afa158015610cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ccf9190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3390612377565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e125780601f10610de757610100808354040283529160200191610e12565b820191906000526020600020905b815481529060010190602001808311610df557829003601f168201915b50505050509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0657600080fd5b505afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f3e9190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa290612377565b60405180910390fd5b43600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555050565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b15801561105f57600080fd5b505afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110979190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb90612377565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111da5780601f106111af576101008083540402835291602001916111da565b820191906000526020600020905b8154815290600101906020018083116111bd57829003601f168201915b50505050509050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154109050919050565b61127e610e47565b6112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b4906123d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490612397565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b1580156113d957600080fd5b505afa1580156113ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114119190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590612377565b60405180910390fd5b8888600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000191906114cf929190611b8a565b508686600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019190611521929190611c0a565b508484600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002019190611573929190611b8a565b508282600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030191906115c5929190611c0a565b5080600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006101000a81548160ff02191690831515021790555043600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555050505050505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b1580156116dd57600080fd5b505afa1580156116f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117159190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177990612377565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff169050919050565b6117e1610e47565b611820576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611817906123d7565b60405180910390fd5b61182981611a1d565b50565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b15801561189657600080fd5b505afa1580156118aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118ce9190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290612377565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a115780601f106119e657610100808354040283529160200191611a11565b820191906000526020600020905b8154815290600101906020018083116119f457829003601f168201915b50505050509050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a84906123b7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060e001604052806060815260200160608152602001606081526020016060815260200160001515815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611bcb57803560ff1916838001178555611bf9565b82800160010185558215611bf9579182015b82811115611bf8578235825591602001919060010190611bdd565b5b509050611c069190611c8a565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4b57803560ff1916838001178555611c79565b82800160010185558215611c79579182015b82811115611c78578235825591602001919060010190611c5d565b5b509050611c869190611c8a565b5090565b611cac91905b80821115611ca8576000816000905550600101611c90565b5090565b90565b600081359050611cbe81612539565b92915050565b600081519050611cd381612539565b92915050565b600081359050611ce881612550565b92915050565b60008083601f840112611d0057600080fd5b8235905067ffffffffffffffff811115611d1957600080fd5b602083019150836001820283011115611d3157600080fd5b9250929050565b60008083601f840112611d4a57600080fd5b8235905067ffffffffffffffff811115611d6357600080fd5b602083019150836001820283011115611d7b57600080fd5b9250929050565b600060208284031215611d9457600080fd5b6000611da284828501611caf565b91505092915050565b600060208284031215611dbd57600080fd5b6000611dcb84828501611cc4565b91505092915050565b60008060008060008060008060008060c08b8d031215611df357600080fd5b6000611e018d828e01611caf565b9a505060208b013567ffffffffffffffff811115611e1e57600080fd5b611e2a8d828e01611cee565b995099505060408b013567ffffffffffffffff811115611e4957600080fd5b611e558d828e01611d38565b975097505060608b013567ffffffffffffffff811115611e7457600080fd5b611e808d828e01611cee565b955095505060808b013567ffffffffffffffff811115611e9f57600080fd5b611eab8d828e01611d38565b935093505060a0611ebe8d828e01611cd9565b9150509295989b9194979a5092959850565b611ed981612489565b82525050565b611ee88161249b565b82525050565b611ef78161249b565b82525050565b6000611f0882612424565b611f128185612456565b9350611f228185602086016124f5565b611f2b81612528565b840191505092915050565b6000611f4182612419565b611f4b8185612445565b9350611f5b8185602086016124f5565b611f6481612528565b840191505092915050565b6000611f7a82612419565b611f848185612456565b9350611f948185602086016124f5565b611f9d81612528565b840191505092915050565b611fb1816124d1565b82525050565b6000611fc28261243a565b611fcc8185612478565b9350611fdc8185602086016124f5565b611fe581612528565b840191505092915050565b6000611ffb8261242f565b6120058185612467565b93506120158185602086016124f5565b61201e81612528565b840191505092915050565b60006120348261242f565b61203e8185612478565b935061204e8185602086016124f5565b61205781612528565b840191505092915050565b600061206f601383612478565b91507f4572726f723a206f6e6c794c6f676963204462000000000000000000000000006000830152602082019050919050565b60006120af602983612478565b91507f4572726f723a206e65774c6f6f6b5570206973206e6f7420616c6c6f7765642060008301527f746f2062652030783000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612115601f83612478565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b6000612155601383612478565b91507f53656e646572206973206e6f74206f776e6572000000000000000000000000006000830152602082019050919050565b600060e08301600083015184820360008601526121a58282611f36565b915050602083015184820360208601526121bf8282611ff0565b915050604083015184820360408601526121d98282611f36565b915050606083015184820360608601526121f38282611ff0565b91505060808301516122086080860182611edf565b5060a083015161221b60a0860182612239565b5060c083015161222e60c0860182612239565b508091505092915050565b612242816124c7565b82525050565b612251816124c7565b82525050565b600060208201905061226c6000830184611ed0565b92915050565b60006020820190506122876000830184611eee565b92915050565b600060208201905081810360008301526122a78184611efd565b905092915050565b600060e08201905081810360008301526122c9818a611f6f565b905081810360208301526122dd8189612029565b905081810360408301526122f18188611f6f565b905081810360608301526123058187612029565b90506123146080830186611eee565b61232160a0830185612248565b61232e60c0830184612248565b98975050505050505050565b600060208201905061234f6000830184611fa8565b92915050565b6000602082019050818103600083015261236f8184611fb7565b905092915050565b6000602082019050818103600083015261239081612062565b9050919050565b600060208201905081810360008301526123b0816120a2565b9050919050565b600060208201905081810360008301526123d081612108565b9050919050565b600060208201905081810360008301526123f081612148565b9050919050565b600060208201905081810360008301526124118184612188565b905092915050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612494826124a7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006124dc826124e3565b9050919050565b60006124ee826124a7565b9050919050565b60005b838110156125135780820151818401526020810190506124f8565b83811115612522576000848401525b50505050565b6000601f19601f8301169050919050565b61254281612489565b811461254d57600080fd5b50565b6125598161249b565b811461256457600080fd5b5056fea265627a7a7230582045fea88fa096a11a15a5bb8e9f5993ca3ab8a38132e6c7a04eb7cd5458378c906c6578706572696d656e74616cf5003700000000000000000000000012047000000000000000000000000000000000070000000000000000000000001204700000000000000000000000000000000005" - }, - "0x1204700000000000000000000000000000000009": { - "constructor": "0x60806040523480156200001157600080fd5b506040516040806200208d8339810180604052620000339190810190620002a8565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000141816200014960201b60201c565b5050620003da565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b3906200032b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000815190506200028b81620003a6565b92915050565b600081519050620002a281620003c0565b92915050565b60008060408385031215620002bc57600080fd5b6000620002cc8582860162000291565b9250506020620002df858286016200027a565b9150509250929050565b6000620002f8601f836200034d565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b600060208201905081810360008301526200034681620002e9565b9050919050565b600082825260208201905092915050565b60006200036b8262000386565b9050919050565b60006200037f826200035e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620003b1816200035e565b8114620003bd57600080fd5b50565b620003cb8162000372565b8114620003d757600080fd5b50565b611ca380620003ea6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638f32d59b1161005b5780638f32d59b14610101578063b71da0d11461011f578063ec2626111461014f578063f2fde38b1461016d57610088565b806312127ed71461008d5780633f67c333146100a957806389c3ce1e146100b35780638da5cb5b146100e3575b600080fd5b6100a760048036036100a2919081019061118d565b610189565b005b6100b16107d7565b005b6100cd60048036036100c89190810190611164565b610a23565b6040516100da91906119c0565b60405180910390f35b6100eb610aee565b6040516100f891906117b7565b60405180910390f35b610109610b17565b604051610116919061186a565b60405180910390f35b61013960048036036101349190810190611164565b610b6e565b604051610146919061186a565b60405180910390f35b610157610c22565b6040516101649190611885565b60405180910390f35b61018760048036036101829190810190611164565b610c48565b005b610191610b17565b6101d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c790611940565b60405180910390fd5b600085511415610215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020c906118e0565b60405180910390fd5b60008451141561025a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025190611980565b60405180910390fd5b60008351141561029f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610296906118a0565b60405180910390fd5b6000825114156102e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102db906118c0565b60405180910390fd5b8480519060200120600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbd74f84886040518263ffffffff1660e01b815260040161034791906117b7565b60006040518083038186803b15801561035f57600080fd5b505afa158015610373573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061039c919081019061129f565b8051906020012014801561046c57508380519060200120600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a999809f886040518263ffffffff1660e01b815260040161040e91906117b7565b60006040518083038186803b15801561042657600080fd5b505afa15801561043a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061046391908101906112e0565b80519060200120145b801561053457508280519060200120600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a05b18886040518263ffffffff1660e01b81526004016104d691906117b7565b60006040518083038186803b1580156104ee57600080fd5b505afa158015610502573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061052b919081019061129f565b80519060200120145b80156105fc57508180519060200120600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332d91c0e886040518263ffffffff1660e01b815260040161059e91906117b7565b60006040518083038186803b1580156105b657600080fd5b505afa1580156105ca573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506105f391908101906112e0565b80519060200120145b80156106b55750801515600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee7ee0fd886040518263ffffffff1660e01b815260040161066191906117b7565b60206040518083038186803b15801561067957600080fd5b505afa15801561068d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106b19190810190611276565b1515145b156106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ec90611960565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eab7ad928787878787876040518763ffffffff1660e01b815260040161075a969594939291906117ed565b600060405180830381600087803b15801561077457600080fd5b505af1158015610788573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fc9e49a024d50440c73d2d12d0ae05064094dca76b46dc95e99ea6848eb8f27e960405160405180910390a2505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbd74f84336040518263ffffffff1660e01b815260040161083491906117d2565b60006040518083038186803b15801561084c57600080fd5b505afa158015610860573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610889919081019061129f565b5114156108cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c2906119a0565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663b71da0d1336040518263ffffffff1660e01b815260040161090491906117d2565b60206040518083038186803b15801561091c57600080fd5b505afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109549190810190611276565b15610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90611900565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663954029c9336040518263ffffffff1660e01b81526004016109ef91906117d2565b600060405180830381600087803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b50505050565b610a2b610dc9565b610a33610dc9565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631bab58f5846040518263ffffffff1660e01b8152600401610a8e91906117b7565b60006040518083038186803b158015610aa657600080fd5b505afa158015610aba573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610ae39190810190611321565b905080915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b71da0d1836040518263ffffffff1660e01b8152600401610bcb91906117b7565b60206040518083038186803b158015610be357600080fd5b505afa158015610bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c1b9190810190611276565b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c50610b17565b610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690611940565b60405180910390fd5b610c9881610c9b565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0290611920565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060e001604052806060815260200160608152602001606081526020016060815260200160001515815260200160008152602001600081525090565b600081359050610e1781611c24565b92915050565b600081359050610e2c81611c3b565b92915050565b600081519050610e4181611c3b565b92915050565b600082601f830112610e5857600080fd5b8151610e6b610e6682611a0f565b6119e2565b91508082526020830160208301858383011115610e8757600080fd5b610e92838284611be0565b50505092915050565b600082601f830112610eac57600080fd5b8135610ebf610eba82611a3b565b6119e2565b91508082526020830160208301858383011115610edb57600080fd5b610ee6838284611bd1565b50505092915050565b600082601f830112610f0057600080fd5b8151610f13610f0e82611a3b565b6119e2565b91508082526020830160208301858383011115610f2f57600080fd5b610f3a838284611be0565b50505092915050565b600082601f830112610f5457600080fd5b8151610f67610f6282611a67565b6119e2565b91508082526020830160208301858383011115610f8357600080fd5b610f8e838284611be0565b50505092915050565b600082601f830112610fa857600080fd5b8135610fbb610fb682611a93565b6119e2565b91508082526020830160208301858383011115610fd757600080fd5b610fe2838284611bd1565b50505092915050565b600082601f830112610ffc57600080fd5b815161100f61100a82611a93565b6119e2565b9150808252602083016020830185838301111561102b57600080fd5b611036838284611be0565b50505092915050565b600060e0828403121561105157600080fd5b61105b60e06119e2565b9050600082015167ffffffffffffffff81111561107757600080fd5b61108384828501610e47565b600083015250602082015167ffffffffffffffff8111156110a357600080fd5b6110af84828501610f43565b602083015250604082015167ffffffffffffffff8111156110cf57600080fd5b6110db84828501610e47565b604083015250606082015167ffffffffffffffff8111156110fb57600080fd5b61110784828501610f43565b606083015250608061111b84828501610e32565b60808301525060a061112f8482850161114f565b60a08301525060c06111438482850161114f565b60c08301525092915050565b60008151905061115e81611c52565b92915050565b60006020828403121561117657600080fd5b600061118484828501610e08565b91505092915050565b60008060008060008060c087890312156111a657600080fd5b60006111b489828a01610e08565b965050602087013567ffffffffffffffff8111156111d157600080fd5b6111dd89828a01610e9b565b955050604087013567ffffffffffffffff8111156111fa57600080fd5b61120689828a01610f97565b945050606087013567ffffffffffffffff81111561122357600080fd5b61122f89828a01610e9b565b935050608087013567ffffffffffffffff81111561124c57600080fd5b61125889828a01610f97565b92505060a061126989828a01610e1d565b9150509295509295509295565b60006020828403121561128857600080fd5b600061129684828501610e32565b91505092915050565b6000602082840312156112b157600080fd5b600082015167ffffffffffffffff8111156112cb57600080fd5b6112d784828501610eef565b91505092915050565b6000602082840312156112f257600080fd5b600082015167ffffffffffffffff81111561130c57600080fd5b61131884828501610feb565b91505092915050565b60006020828403121561133357600080fd5b600082015167ffffffffffffffff81111561134d57600080fd5b6113598482850161103f565b91505092915050565b61136b81611b77565b82525050565b61137a81611b2f565b82525050565b61138981611b41565b82525050565b61139881611b41565b82525050565b60006113a982611aca565b6113b38185611afc565b93506113c3818560208601611be0565b6113cc81611c13565b840191505092915050565b60006113e282611abf565b6113ec8185611aeb565b93506113fc818560208601611be0565b61140581611c13565b840191505092915050565b61141981611b89565b82525050565b600061142a82611ae0565b6114348185611b1e565b9350611444818560208601611be0565b61144d81611c13565b840191505092915050565b600061146382611ad5565b61146d8185611b0d565b935061147d818560208601611be0565b61148681611c13565b840191505092915050565b600061149e602083611b1e565b91507f436861696e537065635368612073686f756c64206e6f7420626520656d7074796000830152602082019050919050565b60006114de602083611b1e565b91507f436861696e5370656355726c2073686f756c64206e6f7420626520656d7074796000830152602082019050919050565b600061151e601d83611b1e565b91507f446f636b65725368612073686f756c64206e6f7420626520656d7074790000006000830152602082019050919050565b600061155e601883611b1e565b91507f4572726f723a20416c726561647920436f6e6669726d656400000000000000006000830152602082019050919050565b600061159e601f83611b1e565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b60006115de601383611b1e565b91507f53656e646572206973206e6f74206f776e6572000000000000000000000000006000830152602082019050919050565b600061161e602583611b1e565b91507f4572726f723a204e6f206368616e67657320696e20746865207061737365642060008301527f53746174650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611684601e83611b1e565b91507f446f636b65724e616d652073686f756c64206e6f7420626520656d70747900006000830152602082019050919050565b60006116c4601f83611b1e565b91507f4572726f723a20596f7520617265206e6f7420612076616c696461746f7221006000830152602082019050919050565b600060e083016000830151848203600086015261171482826113d7565b9150506020830151848203602086015261172e8282611458565b9150506040830151848203604086015261174882826113d7565b915050606083015184820360608601526117628282611458565b91505060808301516117776080860182611380565b5060a083015161178a60a08601826117a8565b5060c083015161179d60c08601826117a8565b508091505092915050565b6117b181611b6d565b82525050565b60006020820190506117cc6000830184611371565b92915050565b60006020820190506117e76000830184611362565b92915050565b600060c0820190506118026000830189611371565b8181036020830152611814818861139e565b90508181036040830152611828818761141f565b9050818103606083015261183c818661139e565b90508181036080830152611850818561141f565b905061185f60a083018461138f565b979650505050505050565b600060208201905061187f600083018461138f565b92915050565b600060208201905061189a6000830184611410565b92915050565b600060208201905081810360008301526118b981611491565b9050919050565b600060208201905081810360008301526118d9816114d1565b9050919050565b600060208201905081810360008301526118f981611511565b9050919050565b6000602082019050818103600083015261191981611551565b9050919050565b6000602082019050818103600083015261193981611591565b9050919050565b60006020820190508181036000830152611959816115d1565b9050919050565b6000602082019050818103600083015261197981611611565b9050919050565b6000602082019050818103600083015261199981611677565b9050919050565b600060208201905081810360008301526119b9816116b7565b9050919050565b600060208201905081810360008301526119da81846116f7565b905092915050565b6000604051905081810181811067ffffffffffffffff82111715611a0557600080fd5b8060405250919050565b600067ffffffffffffffff821115611a2657600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115611a5257600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115611a7e57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115611aaa57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611b3a82611b4d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611b8282611bad565b9050919050565b6000611b9482611b9b565b9050919050565b6000611ba682611b4d565b9050919050565b6000611bb882611bbf565b9050919050565b6000611bca82611b4d565b9050919050565b82818337600083830152505050565b60005b83811015611bfe578082015181840152602081019050611be3565b83811115611c0d576000848401525b50505050565b6000601f19601f8301169050919050565b611c2d81611b2f565b8114611c3857600080fd5b50565b611c4481611b41565b8114611c4f57600080fd5b50565b611c5b81611b6d565b8114611c6657600080fd5b5056fea265627a7a7230582070f7a284b1ab092d7cf8a14ca7bf4b7a68d6e2cb8441f82436e624a898b0ebd46c6578706572696d656e74616cf5003700000000000000000000000012047000000000000000000000000000000000080000000000000000000000001204700000000000000000000000000000000005" - } - }, - "nodes": [ - "enode://cc67008e850c4b64702f1664f18704dd23980fb574138588904270739dca3a9c417ac3f97077b0f4e4872a5db109195f7137c156314dbcc724eabd809044553e@ewc-bootnode-02.energyweb.org:30303", - "enode://34f97743b9c07fac84c2db921337f006b5932e14c29df496951bdcfe3fce71e3d1504c25d66156dae01065623849b4fe940168c7e3f21c49b538af0cabb5805f@ewc-bootnode-03.energyweb.org:30303", - "enode://80e49825bb6bdfbf69576fd4a5f7bb173db98c08439bd7a019e2d42548afbb1f70232b74ede42dbd99cc0de3990a0101d49543c1b299027d2fd6f5a2c81eff75@ewc-bootnode-05.energyweb.org:30303", - "enode://1cd00f54ddaa41793d32500f0cb123d43e95f5ed18220c367d5a4db7d111e5fb59f250c397e40977562881875827f022d88a51e51171daaebf916beaa60e2139@ewc-bootnode-06.energyweb.org:30303", - "enode://3a8588bd883ea3bce606b08e7ca71d55717077cb3d25d3c00421ac371fbae286b94f58ba2e739b17b64c4d0d3e19f1b0ae2e47962703b42d7f36f1b9a448d4ea@ewc-bootnode-09.energyweb.org:30303", - "enode://69749dbe7e6f5fceaeb0a16f60353b3ec04825a12400e6d581fe980275e96fecb464276e61d79fc1628e448f1f74da2985d778ea54e0e8e7c64d980f2b3b6a94@ewc-bootnode-10.energyweb.org:30303" - ] + "name": "EnergyWebChain", + "engine": { + "authorityRound": { + "params": { + "stepDuration": "5", + "validators": { + "contract": "0x1204700000000000000000000000000000000000" + }, + "maximumUncleCountTransition": "0", + "maximumUncleCount": "0", + "blockRewardContractAddress": "0x1204700000000000000000000000000000000002", + "blockRewardContractTransition": "0" + } + } + }, + "params": { + "networkID": "0xF6", + "maximumExtraDataSize": "0x20", + "gasLimitBoundDivisor": "0x400", + "minGasLimit": "0x1388", + "maxCodeSize": "0x6000", + "eip140Transition": "0x0", + "eip211Transition": "0x0", + "eip214Transition": "0x0", + "eip658Transition": "0x0", + "eip145Transition": "0x0", + "eip1014Transition": "0x0", + "eip1052Transition": "0x0", + "registrar": "0x1204700000000000000000000000000000000006" + }, + "genesis": { + "seal": { + "authorityRound": { + "step": "0x0", + "signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + }, + "difficulty": "0x20000", + "gasLimit": "0x5B8D80" + }, + "hardcodedSync": { + "header": "f90231a0ef1d354e1a2c136ff5d3063dd3d116708f56b600ad6f5bbdcb27cb05a30aff9ca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493479417d9c712b71987c084ac11046aceeace393c3cefa0e3252978f6779c72c03d5006ca641b4b781dd02ff35f4bb0f58c4c89b8b7f421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090fffffffffffffffffffffffffffffffe8316f801837a120080845d7b7c1e8c456c656374726f66727569748412b24c06b841619fbfe1b9b43d13e3d972467bbf92ae37df2ec5daada52a82011bac745999d67ed67c1aecceb5e384845bd870b677a69e2a19dfcbbcc1cf1dadb09c63fa536a01", + "totalDifficulty": "512220581561117171220611992449499484793650169", + "CHTs": [ + "0x714aee6de838f6c9152fd3d5cbd18314c29a241a894c1cd1fcc9d15972c7f8e6", + "0x5c6086d6f5cf679f7374c55f6d4b6a876ec40452cb92fb97b048f7c5a759491c", + "0x2cfa5a82758480ead7f60042b398b6077c1b956e5f5ec50ccd86e50c0bee5173", + "0xa5cb0364140cb3159e84d816e1accd65e309f5cf1b86eb83d2a10edc99ab1715", + "0xcc2abea1aee03a7eb8daa84c274d46aa8e6f72f1bb5cc383f4c5f67fd80b6312", + "0xc8d217b113596af546111f4c247b4b3ccd4d84658ddbb98e9b5300f4aaa4a2ab", + "0xe3f6fd83773ba536ea882ad4e6d833b3d23fc5cc6a8dcff2f97aff5a7f27bf6c", + "0x13b4237edaaa376a23abe8b34de7e32216cc588c48059373b1ccc04cc4ef01b5", + "0x28314339da657ea6639c54e0b1c6e351bdcb99093f216205b1b0097d10345749", + "0xd1ca7cd047ccda72f7043f0c60e1c99d4e85feb7a0a492228b1d996e1eef5994", + "0x189a968994620bfa76674de1dfecfcb39c693939b2a30e0b8449980f7beb4a20", + "0xfa9fea734ef0be6e6633e0fd275bf63245000ad43d5869115e480c6a047918a1", + "0x691275f9193dcd3c22e381b4ec23d2faff1ed6bc25afe2347734bbaea89d9753", + "0x13bda92eb5954ca11986fdd513164a43f3c9c8752dc7bcceadf9d935ad459f39", + "0x52083bade8be4b10625c036d4588ce6b3e59bd27da5d663e53b5c5113579d48d", + "0xcf689491a7e4126c5377bc7fa6283df1aadaf99ca82687585404352f4f09bd40", + "0x3703c8b32f15f6fb2d48a66a297ab6bedabc7f1547c646cd3d6929f3d03619da", + "0xef071a6b1ced8b22869dd8ea825889ec500ef7084dfae02ac2c30b0743a25a01", + "0x7d4437b4ad2a1ddcdd1dfb0e1bf3dd013ffbb9e30bcaa1cd08dea9b906c4b6cb", + "0xa64d95e73467548da0b239f12dbeaafcc6cca33503f376d3da08d69b0c4dbee7", + "0x1d0163fe3a0449f62ac45d0b9f06a220fd24df7fff0762784550783172b53f41", + "0xe3f3f82f8409c1ef478881ed0806fa46cbf2097faec716c4aab5a979a7b086c5", + "0xfe21c6d36ab71c121db0852c014714f1478f81c6d03d326a6f35740682259499", + "0x4f907f52d437c5823f20a5a78ecfb5d7d8a67660d963430bc990bf08f666930c", + "0x40d3ce300f6cd0dec0a300e4f2e8613ead69a3f434874612ec01517fa07850c2", + "0x0b52bd9dbffe0e5e7b82120e5b157639328678999cc5fbe0d8df1ee37628be1c", + "0x6f20f4a01fe4461311635a6aecade16769e5183cb7d0c7d1e7920e66d30b8b55", + "0xad06ff74d2d496dbfeb4cf5ef2182c4210b9959677758c3bbaafbb4d77bc2294", + "0x1cf52c489ab70a7a9349a30bb839e62fa27580fe5ed2138e723e1e19a276f138", + "0xa7fa1fdfb4f1c0c3f257756b3fce92631337bf6d728e9f1d8b0c664166f998f1", + "0xca15b546d7e8e4e54aa5ff7ab576fb21b9da5f9495049823f6cd16b174014d10", + "0xbec49f305f6cfef5c4192006d3211fc03801604cd17ed08f1557717cf8eaf082", + "0x12d0863ea2ba7c7f152b494966276252748daf51c78d8e9afb8b1eb242e569f4", + "0x7a5bfe9860427cd13209e973bedc59d6b26f2b26aa51f048580eab80570bb5da", + "0x89153f7a218d56a5aa7c7eb5d603692f1ae7d33ba4ca71811a9ad22e0cb9a961", + "0x3b817286805f105dfbcaa6d6116f55151885632aa5a1e563864a6a752e4ba271", + "0xb7e6558399a7abd11a53a1b59aff4b38f2f72ffc341a9835ac504ccbc9974b8a", + "0x002fa5217510abb7d1c7665c82536595cdeae9065aaa20b3a8ed96e27f84cc62", + "0x7d212d4588f4cc28f0ce414294fb4454ab61ad264e988d0d6c75ecc2d5124216", + "0x4a87e03523d9d8865c6c998a83a46c58a5347343aed9522f8324cdd1bfc087e7", + "0xc1ad37c002703037d78cc742903951bfbcecd955f31d310317f62568655c1f49", + "0xb9369a5db6984bb236495de201a260b34292344cfe189d6f0352c92a2b34e373", + "0xcad20cd17dd6b0569d49813592308a7426d7b38d3e6c68030b63ecf323a9733c", + "0x29dfa65912ab6c45a61002df9b6c1d5efb19420e1c751c915140e50b0571955b", + "0x54d328d8abba4b4235943658648fffb71bbd1f709b869f703981a6daec9d1745", + "0x78e10bd72223d3138b668c209ccf3de9bb3104f983b5f8ded0c077543be4e2eb", + "0x71db915f9eb5e303d092bc04bbdcd7a92fa18aaef0087e057f7cb74ae0c42be6", + "0x5b5fbcb2a155b97fb1c172b9cd8e44230c45ace454d48714aae771b33d1a70f7", + "0xbed5561d7dc0d7536d9919c249e9c7311ef56cf1af46cc4e5ce0d1d94719e13e", + "0x53bbdeb4f2c27a9582ad5121dc96279ea70b4b04a090819d23c651673eea4dfa", + "0x269f7e304c9ef03f70301dd5a62bc4f932e4e7c4d2cf3bff22745a6e00ba6da9", + "0xc581e1f328a0db1245f491f590e80fb7cc6ed8516d505a91b9d0179c3a318963", + "0x75a4d02143c90eb0b4f99c555a4663487b569f7400a0baccf102885812e11de7", + "0x41509e2b972ba8e919e2e36deaaf88d7102f3afc57999a03d2b2019dfff8fea7", + "0x98cf6ad904dbb9d3739ee3fd5dfc8b3809697763f7e9a9ef07f770bf4087b6e9", + "0x0086e9b6d28908553abf7c69d92679ec513d9a2e6b05d7e58e2a73c7c950ce54", + "0xac8d8b99c4def8e8bd19d0103fde949e2d0d3ab1168015c6b51635830185dc72", + "0x1deccdf3e7a2de364456cf4ca26d66af4d053353d2cbcecef2901e8e64eb1107", + "0xa88c69866b2b2ff58c80c7f4858ec89a94d57ae0b2f034fcc33ff926b24ce119", + "0xf6ba8e87bccc4c1ea1ed826aa19b2f9580e6a4b057259287a2115ff5e23789a1", + "0xcb5dadc2403df2e173f0edec17a68926bbb5d738c27312fdd0f2a16a7a76849e", + "0x8a8724ef233d58277d04030f53923cb993984757cbad84a636b147a662a821cb", + "0xc7b8b84d234651d6a1850e06b2ddbe7ce270216d82f399cf48ec9897d036de0a", + "0xbc1ad6afbd752fa72ae21f81c5c5210b9dda3071d010db36395ecbd04590b4b0", + "0xdd386b46fd7030c485996644eb4b40adc61c666d9cde21df40d553a9595e0984", + "0x3434bfe056b388286e5b68b8b7b24d9d4f2873355c344c45e2104568ff55fd08", + "0x9e3d11b88f6e5d76bbef918e1d2532a475d2e90a9234cda64518eb3fece2a68d", + "0xdbe894b91d6a3cab4418b6bae4f266d7978ca9b12796c5ca664720ef2b9f5d45", + "0x0bff7caa357943200d7b5e02a208cc6277c183f307d612c7dee1886988b247e7", + "0xa94e5bcefd87dac0cc2bae19afab04b509178165de79aed98562ae88aa990ab4", + "0x2548c84be89eb2f05ee222fe52f26f2eff73d1a1d57b90ad23584bfdfc523d6c", + "0x0eac1a412389e244a843c733a948b70b72dcc231a8d9e8680b6141760d7d1fbf", + "0x1a6378c731f116e421eeec34afc3dee7b42e3233f4c676aff8571fa377d6fa14", + "0xf35661f3d06ea16b8d199f4613459653a10402f2247427149b0df49112649bca", + "0xb7cf13c95711c7e68f9bd67b2a2c579f10a05e97327c67583bf9516b27c39a53", + "0x8b46a5b7df22c44ffeb097c2bd7c9a4f29430d68210acc721688cc1713415bf9", + "0xc29b90fb6e12aab1007a3d4e1bd196be97224d8e8f6540b2b1c48efe88db4f6e", + "0xc5a1feaddd996c12195c69e84ecfba76df1de87a389b40f3839a77bf26326076", + "0x6b6dff3eb189efc0a6c63efaf81fa62d97e2bf117ee0e336f11a4dd41c338b2d", + "0x39e7e6c3e6cc5c5c2f6869e0fe9125062be7176a416ca970e9d863fbce67f158", + "0x3523c2958628fc823a2ee64460b47a9f407b7838607c238141942b0c0ca466b2", + "0xbefecf8563da251300f67ee0eabc25cda56d6477ff748e10fe52f1708706f008", + "0x3995668e8c932eaf52d4cd1ba671aaf923a5ebcd3a76ecf6d8da7546a9aae5b2", + "0xce966d928535798736714d5302902ef00cf17b82c680dc9b4a3c4076e363a99e", + "0x4be8ec22b32879d8a4ce0f5cb080489179dc7f264f584e42a4c825cb4d9123e0", + "0xc74698ea33ccf4df96969499975e05ef02643a74a101138c85bf44ecea503870", + "0x797328e01ee9e34c81ec02d14bd2344659bf6fbf05c331d6ceb7501773543a06", + "0x0980feb796b32259fe1873cdac1a6a8f35d2cb3b5033a133a65ec154b0dc256a", + "0xc71e68cd250b975612d0507e4d1f93c3b5e701e1df7c5531becec7f8e7bc7ed1", + "0x420e240ec1a8cd42834bcface9583283fd104ffb20d216c804edf5b3c534fc8a", + "0xaee71494321dc715b20c984d901b14c382f1b65a4f90f3e78188a86454ea2a79", + "0x6abedab72e5762047089fbd7a97765776ffa8e5ec7e697f82729bb5f1a0a6988", + "0x1977721d0744ac77e582c462671d6149c49803dc1b9d5178e7a735ef72da8706", + "0x96254fa25f162b4d0af2d64fa6e47c886ac9cc81af6c7949c8ee4aa7e67e45a8", + "0x558a616c487edea428d39a46165c3a059c8fed9edb1d4fe53d18bdaadb3530f0", + "0x3dcfd178eeae5724999bcd99bde031d06fb630703cd62a0a4743ebb179e1d33f", + "0xdc79eb70fc635b5fc0b8c4a6fb4ce8b387aebec78df1825ef242c3387cfa7331", + "0xd879a0d98753df27fc6c9adf37ed41d2eb8fb8a9d0aa427034659c6e50a7dcd4", + "0xcb0ec7547b79371500f9f2e91b835ccacaab21c2aaf81cde48b8de8a0c62cd76", + "0xeed5a9d2b91c6c58ca0c03f5d8d80db4a96da230c45878b4b2fa609b5d250498", + "0x32b8bca91321e18e117d32e37ba9e6aa8bc1f792ecc44779b6783071044cec18", + "0xabf889edea725c99b393a482341e03b82852ac73e27258a708296a3403fbe941", + "0xc55939c05471d73be4de2c1fb3f07326b6796f98a91b7bec0e266b87a7fb2815", + "0xeb8894c24486afa4a2a31e8dad510376ddb903436263b860ac8991aa7d66d1fd", + "0xb105f9b3d63bb3aacbb1101190cf9063d624f0b0399b782d509b0e716df41933", + "0xd5b682f34ae722725d14727428a96de156262712ef6ad49563ebc12a75d0c85c", + "0x8aa5d6861854def6262e86979f5e96bcd5474d7cd0cb1272f3a099d1c03bb04c", + "0x609885f9afc728ec12b427beca31b632eebfad78f30ccd64282a4f9f1593509c", + "0xce2dd1bbdb09ae148f2b6d17636788b27ab7afa2b5b55c437255dea28977e0f2", + "0xb71191d5083196c16481eea99b8b1e8f8d59dcc68a2f7ee908efd5f4c57b9e41", + "0x7239d211d9e97227e77883bc9c31b7762b1f811c7cca948ff8f7b5753bc7559e", + "0x7ef67af5683952e43427227c2f4fc8142c6154d60241b88bbcbcafdffda6ecaa", + "0x1ff6023ee784b370ee7a0f64b29958be3fefd8df5c1ba1cfa3e6902061bffbd8", + "0xb5cffe1c85d4a096beee99b3023c8b0d611c02d525f8fc28bae13ecdec33298d", + "0xcd30a3426ffe2a11178e66031b141599aeba0e8ee9cb4112a599b64435a03af5", + "0xce40b45db8860ce0932f2de0bd9fada52b42dee0af04522800039d345ef11a68", + "0xa8a34d51cda56c627e9b5393121ae1f6fd00167fbb29074d249f22a9569827bb", + "0xe988982bc9adfb197bb73d0658532936478a70a1cb3eb3ce887022ad6140d296", + "0x3507f47e984170b96ea9a1ca6c5aa1f7a3001b65a6ac377b432126395ded2590", + "0xcbd052896ec1093b29db69924583f980b2607b47c02629f33a87854dff2ebcb8", + "0xd8bc082d23f34a737c2ff29dbb4a00cd1e3561e6208e622ca3e2ce0e94a0d195", + "0x5d70fc0230d0f98cdd9ece68eecdd10a138e969bfc1a75d8d05a25fe36e7d9a6", + "0xc288e634c5d346c78d694a6baaf9bee375ae953ddd2f16a24e4869952b66f27a", + "0x3803c0cf512ad51eb8b51e9fe2eac0be9d41113d3fc0575b6f255f8637a3e8bc", + "0x0c6c1bdafa2b072d96ee0af733e2f52fb275fef79b25f64dd8ef40723f1a6c9a", + "0x485a57ed84df32298477c631079691d4906d36bfa881aa4a62915931a21e37e9", + "0xf6eb84d895581d563c393daaf6ea5d82f0a0a4e50b5b4e079b4d70e3ba5bdb44", + "0xe793e01ef0d8058aba5fb4a85f2e6c202a71edd641e323b6f6ba42783ce93898", + "0x652d4b932a634f32a60b27f7c59ab26b35ca296a0dbc5484e602cb134d88a3ef", + "0xf5196d9bf6965d2184a5381c9b71ae005da474806c6926e9c5e3292863e8bede", + "0x0d46341310ee13f4cc693588c0edf899aaea3ae5abda6ffb57415b6842e651f6", + "0x969d3c7dda1caedcb15d7e144511a6e5ed38614c64414ba74a7529bd69ce5cf6", + "0xff9e73f4eb9e19afec1ef71cbcd321fa6e6bfe9dc9f3fa2fce45ae2b899af998", + "0xbe4db0c9bd7fd8cbfb00b3d146ea965258b9de545004f430dc2d7526fe10a910", + "0x9e2529bfdf7052200c855686a046c3be25b93654e56fd5514311929d6bbbe52b", + "0xb900fceac0f3990db4a6aae238271732632402aa838052ac0ad223b218a82b0b", + "0xdfd7f34fbccf7151549876d96ee0a85f77cd9ae41f514ace7218ad526ed59b40", + "0x68ebfe7ed1b187ceb7382780f142084c91d2254761a1a044609e6325b8a5323d", + "0xd04cb8343833c53e4820e60b08573d6d4fb38456b3f2116e29858af483cde125", + "0x69fd9199d578dc51ab7cb55981e3748d166b447764667ea10d70e9cdf7e2ce96", + "0x25f63dec762f9dcc0f8f46357a7c2cebd5988b1a30d66ca71a2a2103d4b4e9fa", + "0x01da2a253712a9d0116dbffe089fc7377d18671b3cf6560ee90c8a1749379605", + "0xee62ef05acc1646e48b6aa2822b54e7e5421f3a22f5abbb9f067c30aea8bb192", + "0x81c8c6a098061ec62e12a87f5702ed7bdcc5eae8450765f77d1a79354b9f2c6a", + "0x95740b63373660ce0a05430bb99da911e63dbce008c4b8d3c51253416f23fcf0", + "0xf18496c657560a475910e2a0bbe4be5df0ac56b25cb04d5b98e028175f49a6a8", + "0xaecd72638133e3f05497c3d8d505dff33a6b6f6d309af35a67c6ac10fe15cea8", + "0xed73a92a9518e5a5e583a750b5d6422c5acf082d9aa671bdf9e4a060fd95c72a", + "0x7f135f642bd31c393281320de0dc30975c17a21c51c4e30d7c42fc3fad5242de", + "0x0a788be501d80914aa2fd995cead69c17fe04bcaf5db86da2bc4c868513a99b9", + "0x538e66a64ff22af3d7b6db368a706e9d981df8a4edb2dfb705e72323aff7e5f3", + "0x50c90a4c8affb981ebb9e88d695050a2b558e340d333822f7373b66cad53b973", + "0xa090d0ee33cd0d8428132b6d87005dd292b7e28be87f553b4e52566f976e6824", + "0xc13b178eeaf966dbbb3d717a163ea003fe99479903e8cb78b53d1e4d240feac4", + "0x9ba9806d4a0b20cdd8b69d4d0197bbe7a42c1cb46a88bd012755fbbd785be857", + "0xb836710b211df481d99b033a9c0d6e09b34fad6f2e8e4931dd1a054dc03bad57", + "0x4792e8b038b6dbbf32a228c292a5f4fb639a0f84f8f70004716c5a47331f4c41", + "0xcafa97e065f36a436f0e4e255aef9d04b57c6b12d50e42e99b4f25d148e9d3df", + "0xe9e2934d6f8841d486db3533ec6421fa0952ba8f3f9020ff9b5e4fbbd8af817d", + "0xe096be0f831214ce1007d352236d2df186cf738b9b3992c0d0943f1b6a76e917", + "0x564e83fff721a1e316572dc507cfbb41ff8dc306436ab26b315d23b8f002e390", + "0xcf3a00d76c6a4645ae555a96e0bb6f0e441baebea9415db5304d6d8639c03bc9", + "0x303013d9ca65b0473921f83a18e5cf38f882e715022554066b72cbc3368056e3", + "0x8e47fb7ff881e845958ae6dea28ed9bc3827c7b296ca1c151b7f24b72174bbeb", + "0xa87d1ea0d2853c966db0073ff09c85a1ff28117f770239b11369eab1e1f31454", + "0xa7d484e51d3c4ca27993f21d5a488ba34aac2ebbd6005ba0ed8f125bc9c9139b", + "0xe2811f00e0d3f86193e59c100d7a12ec43f94c6c2228f3b95c5838244abc6406", + "0x5e5e04bbf350160da90977ddd5620afb3793f57c1b81306920622ccf400d6e9b", + "0xd8c7693ca7de07e9a09e770f93775a7fc3acc3db6ef33e0d84c38ef6d2ca8108", + "0xfdc05ae6bf5d112dce90ca725ba52d85636c4c193a7a65d9b6f6efb7ef6a16e5", + "0x07abd5fd4ffd9fe50a59f0f32bebf2d2d6ec59476efc152b3bb907ae10632ba8", + "0xb6afb22be6200ee06100434548ea3b0b378b00f5282c377f24b04c3d014fb552", + "0x199d2c213ee2277dcdf24af1da8f6340dce3b2b9ec800f1a31a2d53e7429ba08", + "0xa0c0c4e4398e7d8b7e4cca3fa16384c4d911e24db2b3f1702d9a23fa7bd67fc6", + "0x953df624be719579e3f63754b521ff66a5d92c809e3f809e45b0ddd4f1d00227", + "0x89e863130cf4a03ded7581c5879fe3f4ac10953b042c4327e2683941ce234f1d", + "0xbcd8e60a0e0b747b15f43b1b3172395d73be4514bab8c995dc61b5853507f45a", + "0x8efe4df87171eafc2f5516f9bd9c6dec560fd86184f436a3fa9367947ba6acc7", + "0xe78b429f1cb75f18c164d32a394e7490d6ef490f7ec26767506e1531971a2d8e", + "0xa85bdc71975dc7a6f91ff1c71926adced0293139f42d3dfae448b04e194afa39", + "0xb2850db8790941c5b4728e90c60c5761f309ae78a42b7a32f7b6b414417130fa", + "0x45a1698db7c1793b66031dc6b9bdce75e9db03cc6d5068c98a1d39e5c3353959", + "0xda78cb4f7dc73eb3da39b7841373f858e7a7f8983637d3d41337f07e669d5611", + "0x4e7b03eaf17a665906340bfc5d3765c1981b3ad174af2bb936e688520cc7507e", + "0x9d1fc1af5a264d076cc49b46d88857c733929ed63d3a9d098f9d02445ce137c8", + "0xa58779d88ff3e4f15f9cc8f3aa4e31f29010259bfebb358772a032314248b9a1", + "0x85eb21a68a7c544090dde6166e19f18ad527af568cdd662c84098f3e97b6f406", + "0xb95a7f4891bb90cf61b5cdc8aaf30440f901bd68caeae2a3246223c1f145cf4d", + "0xd26f9c16d45ae57ef27e31bf107baeca391a51a0c2ce5634e53115e45e8e7a3e", + "0x34692e04bf78c426ca367759a213bd782e47e2e6842a8f39f62a1030aca31775", + "0xd5dc5c4d619d78682034eafb73ca435db6ab53583a7692848dee27820e819f75", + "0xa23bda165dd7284398b7817fbf85d3eeba7e7330bec4adde2069e224e17dd2de", + "0x4fdc06315460f1e83fe2e92c3d60acd5d7a5bc96066fc8785409e81a1ecf9193", + "0xbf4690969f21951ae06fc3828d40fd4a965682047f0bb6f847d080ca7f2fbe05", + "0xba4f99d6bafa70a9f08fb41e0c3d7a2518a360dbd2ec98893443fbb256174a70", + "0x9366600b95717d1c4840a98fb3c2db95b71374294144341d280f32ec4021c8ce", + "0x8caabf9d8a063f2fb18912ae4b2d1be719975cd03b543b79863ae0396c0ae625", + "0xf0ddf8b613a1059b97141affb960bec51c331741bb19f85a920adb9b7999123a", + "0x81743e8fe0f7c4a2141dd9ab1eec8522a6139df847c9430acbd84df0ade0a9f8", + "0x00f7006ec05ff418048bc59526643321dc05936b3c549fa8136b43fed038320c", + "0x8cb3a50c86abb41376cc01cc22691a8801a67690ba23b88760c8495ebc9f855f", + "0x2279d287f8233c0cff7e31d287d417c1d4721e1c28c3c8ccbfa06610b417a0dc", + "0x6681955ad06c3bf7172c69417505f7b8eaa17fa861fe5d8e6be61d53d9774979", + "0x7130927ed3a412791f0dd02b874b68b3a393c1ac443718eac7afd4b1f5f3367c", + "0x82ddf79f4eaab03c72feec7fcb49d0532ae68dc4dcdb995a06e79efd1875a97a", + "0xe99ca08624ac8fabc9cb11f01bd2968ba705f87724ec4c867107c3e82b72c648", + "0x0349cc1960fb5f891d9c780fc78f44f4af7a2f06e409cbfae5241f754585b873", + "0xc31265d24c7bef15f05303658ab150bb8848e63ef6e5bcd6615ffc59eab4c024", + "0x6d6268a5f5e24edc4af8d01a0ffbb406c2a0df0e940bf2042704627e7e3f1eb4", + "0xefdd6251b7ebe415aec8cbd03314fe387b9fdaaf910fa6d21bd9d264877a253a", + "0x2b77e4b8daeb43198d35aa7787e956aa69ec457129113f2e6fd93d14b1d8be59", + "0x243fbbc8073d636741793c42f05d14dd27ce4ea263aeed9c1d7a1960a8215569", + "0x63db3b3f6d028b7f46af35e5036e1097b31157a24959745eabbf53e5025023fc", + "0x546800bdad232ebcd15ca4a15e74e0bad9c1f0a8488797095900273932280d0c", + "0x85ab077a505c4e0112ddffc52fca1a08d8868b740271d474ff6e5211a451c24d", + "0x8dce8e8789e21e096136fbca59e79511f63cba3d3f91fbd8dd5584a6837e4d5d", + "0x1ba5d8a59539a2dd41cdcf40af0e4e0fe41d0b840a6cb2e388efac0db838341c", + "0xd9503acc8efb33e700c4c70878b46a928e1f61de25fe6e93586cb7a34ab26c0c", + "0xf5b2ec428fea0fca37cb44237e060b472acd11205fc5825b0899235f9950ad9f", + "0x5099403d49c4be182a0838de68324dd50d7c457f84157417adcbaa0f92ddf64c", + "0x40f0ceb3ae983ef73b79b1c3e93d1a741bd2620c50f1f6ee1bdba8b1c8f076c7", + "0xbc4040b4712fa08cffb7868f0b41a7f0f8da7d591da8896f467028437979850c", + "0x39fe703d511c7b9e8527e44d2f17ae7bc01da4845a4ad877acbc14233c1e7280", + "0xada7144fba64caed4cee909d14a306925afef2d240370ec85d0d5dcfa43c18c9", + "0x3862b40aa1f8222f424a6d6fa45348f5e7d572701be890586a6b9087a977ed5e", + "0xbae5129ae5f2cc91c929dd4b716d1736b03af127e633f7a9cb57a2b045fc9f6c", + "0x2a6cad932ac68fc5687871ee322563cbcb6b3eb978581de10737165b015dfe8d", + "0x8e1e6db9c2260c262481896cf22698acab58c529195100a4332fa0aa08385d84", + "0x1f38a384237fcee079b971aa71c97f36ecfce1eeb30c9bdda4ecdeab926072ed", + "0x2b1c080df5f7725c4c69281dcc9612b142fd9532ae060f5cfba1bdce71854188", + "0x7aa78f311a85f28a7c2363bb6b5af105e33f0e5c96af83d4e34bc7ffd5bc930e", + "0xb923a1dbe5611771afa4401e13cb01b10bcc95aee1502590bd2b32f0fe7cd5e7", + "0x13d1db98b9811e2282b49c46c5b6289eda7c2d46ee89b354f878dd7b3a234f3f", + "0x945f821ffb226364cef42e509d4f2af0770ac0d00ca21de639eed0cd4876b77b", + "0xafcf8c8871f48d13cad81dfe3e180d870ca0f4795fa178a3eaac6abead58a4d3", + "0x87851815137e4f8dc33997639c17ac1b9b687ca34747d3d58f34b47ff220cad7", + "0x0bf7f94232ecb6a86e03ec4fe8273e6c6125bb7ad1433fcf217eb53b0c2e5c92", + "0x471f021954e1657ea61acd5f265eddce0dea0c5c731a3ae144d46251d15fc7d8", + "0x5b08773ce3fbb2670564d4bc49c9d2e5e5dfcf7d76f33da3aecdb3acf7a33e54", + "0x7f6f25f1cba164401bd9e59e9d976263b6ea1efffaec863316291f5725a6e705", + "0x42cbd8b2b4c7889c9d5449faedcc7249011332be9010795008cec15666aa9d03", + "0x54fea9d9610cbd23d8013bceb95e4b453b45dac5946e714141fa6675e1a79854", + "0xd110cc1e0ae11a1ba964923c32233fdd07fd5d258c81e420aa53ad2e6f637e28", + "0x1f4547eb2058d3b0beacee9e6d7200cbb5042ba0b33cf3f6522c71b83cda22ff", + "0x0e5b8aa76ed29a6d150b848bbe151c442a7de6c782fa1f5ec9d6b60155e5f1d7", + "0x665989eebcd06908b02db1b022d20047209d38f8840e88bef92eeccc9dedd08b", + "0x6a6ddd746ed465282651edaa1701999ea9b5b2db6c37b37afe0b1f91a03bae3d", + "0x9cde4996bc407146502c950727300683474176dab6751f981b975f20d6a31c10", + "0x07eaf4e65e9961e5b2072e2abaaa3dbe802c1cdc48b9dfedd52843829a54cbc8", + "0xe5293358f5c362425bb44d83e79d2d990dfeb7a6495b43a43ce3bff018f74ada", + "0xf1b1852a310ac269d78f2eaade9aca6717ca19b2c48bbf9c8077358333cfc463", + "0xb57181c61f5a692ee46c19f64c3396bdf448a6b0ab1463f59cf68698bd10bba5", + "0x83fac07398c500fa021f6b79e55279bf49c8c1e0e96f79986e32589d2a7adaeb", + "0xed88db70b42f76c1452e9b410e2584059cb8fcbc95b4480135333ed6c4916b41", + "0x5b296fb879b3fae9103a3e91ed2f7fb74de9e9c5070675354a532ee6edb119bf", + "0x62f5be2297ab556625e80fd9b03291d8fd83e74af992e3a07d0961b185b5b880", + "0x5e108d7fbc6d767c7e27b72cbe10b642ffc9ed80c2e5b9ca219eaef68f021325", + "0x61e77b16f530de4308d2060f35899a9e95ffd73d8e524ef43b80460a3d8ed95d", + "0x86cd27368a871f4c06eaee0e2a141b78c6dc00a5531a3495a12a421546bc034a", + "0xdae627010cb7e75f0b6cbf1fba4f3cf15e59697ce2a865ba8b69cb64405cbe87", + "0xb8673ef29f76daeb7fdba5b75908c6ed83fd96803b20879c449d1fd9af41b070", + "0x08791b77ff600cac68326d00d94933cc853b69359a40fe4e4306fa50f3db64b2", + "0x6111f5356a918b94fa8dfde7fdd1bbae9ce941ea729b15d9ccd86274556767a0", + "0x4b5f974e1b95e0e2c87dbf21c138bd4beb25deb362350a5085712a931811a8cf", + "0xc72c316113911b282b801f7ddb6e870f8e5edf711bdce06382b1430248732875", + "0xf70ea2f05532bed9884c81a1a03855029f22b5066cd97b20cbfbff7b9b68b188", + "0x9d8a61ab53799cc292bff6879a85912b54bd78614a73c2cd0fdfdcccd2c208d9", + "0x56511866e3e3689d00d21b34c7ea471fd1096e8f4b2fb5fb0a6f15095d956c7e", + "0x4e28cfcbf428bbad414a60324ed466352f5d5b41b044d8df1a46e124cfdf4a3a", + "0x6591fd1a46890b0de4c927ca07ea27bb4a120a3637c7cb1a70a4c1ea6f42c7ed", + "0x2e009aa82f01adec2287cc28f22d6368c26d28173d42a5c526e6775f7eb33928", + "0xc7363139b3475fa4a0f6b0dbb86f70660486067ae23eb3406245fb445e7981d1", + "0x6176bef2af27b05ccc2136bab019e9ac25e8b8fd827fc4f19c14741d63d5e76c", + "0xa7c5120a9ddd815b52809d4ec16b73775133413751588f10e707bad274f4cf31", + "0x5eab0a1f651856d2c35ecc6f6b33ad285296021f33991f92e91d018eefa70ad0", + "0xda2c82132749852c24f2857a75da70a12472d442b6cb7e5ac551ef1646514301", + "0x0d49f6c38c25987be6b219ee2d06092790555449190ed95d0f362a0a633f0450", + "0x1099bdca056b138051f5fa67352fc972f9fb12f9544f1ab2250c46d8f8597c5b", + "0x51509e7be3765fc768ec8d53030e6fb23047ae7047819215a6ea5b79f3c96122", + "0x7c9e5291c0d56c49bbd1ef19057b196b044cb1d05ccb70fc287793750c2a82ee", + "0x41397b9513e3a4196d6bb00af809065ad5803e4a3384251b8b733ac820b84241", + "0xed905526fe31e9fc9879b873afc18c0175c315f282ccac73c1e6d13e0daa0c16", + "0x075da3d126c26dcf1f929b3f53561828a6a09f7386e3b169e402d28bd8a0cc2d", + "0x67d54555df755a4417831e623e3d55eee0481eb5e8984faccc45aa0c1255f2b4", + "0xc6b00466e7b14951514d52f62f56b47c016a76c3e4173a47a933d69d12a7188a", + "0x434f9b5e8250b953ef7747d1cb7092f8a911f2ed627095515899a5342b83e767", + "0xb99273603a1c4b2ea6aa1efd51e66dfece99982f11812f6b6cacb028f43f9590", + "0x7a8d8d26cef67c294acc07588626d87969544475f26e771190a278efa59ccd82", + "0x48a7f38cffc5ab62ec2ea284ad9f42f10b0c63ed5561818afad444942bca0895", + "0xbb3c61686b7572906fb600991a401ccfa2b72355412716eabf1f6c3a3f806bac", + "0x69ee9f4b988e650981f7067a22301df3c448c34afc28433b00e27d006b1c712a", + "0x9120d910befcd77d6b104c703f7e3569434eb53ae773dc85b40f0e441cc1f636", + "0xa22dccc8cf91a63b9b331e1f7c9b25c0169300ba4306f9de50e2b374fac789a5", + "0x2c08520e550b1a695b567df1e1f9436ceee1b9c7d09df2c8d84232a1907e40ba", + "0xccc561b243b2cc3f1d79356ca709afbe95982e25478fe9046736b092ac99a21f", + "0x60a293cf021470cb053f5e27e9ffe43b4819755c3d0ddf418a556c033abdc4ca", + "0x7f8a97b56a6b66cf229c8a107f41cdbabc7d99f86f3aa175560eeaa13e062768", + "0xc6cbc4fe07defb00e5498a9c3e45909325ec1d5abe5983cb2f1d1887bf20960d", + "0x70425ee97b08771476a8136e35ac1bce6fde67a96c242d480d17e5a4a90e92bf", + "0xebe932630aca0dc961cb442d9746ad098c721eabe197960b847e867a212baa8a", + "0xb0eb66bfc56500b13bb50ff9c39eca1c00539115cc19e1cd4f5fea8203ace35d", + "0xb85cffbd649d8e197230ba7372b2c59be0380740b06d75052e45021c7512345e", + "0xd1c7606ba6e7beb2bb0aed775e4a40bcff418178ed4e2ae9b9281ea5d4c89a99", + "0x250454e85ab809adaa6eb26c064dd560f0fd55da9a5057043724cd937aa0a442", + "0x4f73342c8a55a77c3b67402d5c58e77289e432d04c4ab0e94afbb96bab22262b", + "0xa71e103396dc63a998fbf2712980341b7da6a47df39e68130ea8abcbf0d997da", + "0xbc3dd28fc3a3ddd169cd0d1d058e9d43cf03c258e89fd1ce2ba66a6b18c86591", + "0xe50edb767f9492393223ab088b4583771b5995187ce146e205287e06f664d30a", + "0x55892af1bb7d980edd5c22930c2a9cace26e74b09b0bf393848592e57a290ff2", + "0xe62e476351a206e25f067f4d80a5b528a228f5dea6c103dd4067339699f10743", + "0xc9125964a34760943e51a561cc5e104be4755628995603c989d638c57dedca28", + "0x7ee5d6bc020739ecb3a405c9e684ae902d6e266492a0e33ac1b42d80452dc3e9", + "0x38030f326e2607f193c1cf8d9c9780b3867b10e04f8057ea682fb28410bd32df", + "0x9d47941c403ceb4209fb51ce3c1ad8b89819f2bacfb9990647f8568984a75b06", + "0x24497cb73e87b012a7363218d1a583b3e081739a302bc040e1c9907656f6c2a1", + "0x5e3e695530ea10576581ab7213466f284d2e377f607e7c59553611fa625c0800", + "0x9534cf9516382d223daa23fc333085704aec15e4b62a6d9fda17c481dfbb2c18", + "0xfc04952efe456ebd951406046fd35c237d6873d98025cdaca976db02ebbeec2a", + "0xec7c47cf69040ba41f49b76eeb79bac1676e206e85ca9b006d873da582312932", + "0x2a58960a118d1a76e34f46d7e6eea90e288ec959ef16e675606c37167c64d927", + "0xfd21855fe75953305a7c8e19cd2d18dc31468609383d8fef3c611d1dca70cc5a", + "0x7c36b9b06490dba54e9c3d8116dd37200bf67e2d3b99e7b5f4b1badbf65f451d", + "0x58b631c11b2e4a81b8648dbc1c72144c8a15ab3b1f906c4b5533ac1e940cb0b0", + "0xce69899317ef20e930429d323827224372cfc7e29379c60cd24c722450951d02", + "0x0ae86d2b84581cd8d9592b296a60a60f7cd394719f4fea13ee9ddaadacd0f9ed", + "0x6c6a0784c5a2d0c3c0506f69e055a02a1febf3f2dded61c2f26ca7740a6fd9db", + "0x3bbe5e8a57741dc74eabc1a231f4722e63c4578c694a5d52ef1f024e1b344bf7", + "0xfab03c10df60220e5fd1d6c3918606bfb90d4bc498af48b747fa217aac63a2eb", + "0xf490a009f14a88780da39859b79aa0c7f8655fbb3261b422f7b8a3ce21aaa14c", + "0x2153ae46fd41c837373748a60d5452f1c4cb0585f2eb6f1f329566b2000c6679", + "0xc91e6a8999eb99fa7e86d4b661e2eb15c306af8a04a14090e915cd1821520142", + "0x1b1d4da071b219b824052198c0cd5685b59a3b9bcdedcda978e28f14579532e2", + "0x5276badc31ceed3b3e596a7595024995e51d091e4fa58f6c405a45e9aed75f91", + "0xef571de5046724ac3584a10243910d2d25263dc3667b5bccccdbad5021e4c502", + "0x17e31638e5e973e28baa4799a920a9ed5921326cc7da05ffbcfc10b2fde376cf", + "0x935aa2b075335f41085f33dcda503a0437740d929c3824afc4cde5f1824b77e3", + "0x43ba24acef98bc089dae5b11869b9be3c7bcf0946ece14d5e196f1f36cb7cc62", + "0x18fc58f6b87d7fcb01a9318df66d7e986b77d7a9d46905767a69026a3d09c550", + "0x91e5d60399482b861a8ed1d9141cdfa7d11445d60ac1a21c28038be23772ac13", + "0x3d9b40dadf84ba03636d18737ce3b577b9e9675f595561938b0fe8d07b42b52e", + "0x145b9b2e5f21b588b0496b467cc2dcf8add6ad8fbfb7a9c9f3e2a04caffa3d7d", + "0xb4a2d0a642e659ce1c3b7b5d215865c08e50c7b33f0a6244329e5a2e53eabc37", + "0x492509b785ce0bf040b59ba9b50f57757090293d840b78e48014e64f92fc4a91", + "0x533ba967170734cca134585f7acfc48f5dd8457c2c051513555490a2cca5f5a1", + "0xd344b4934df76d3fcbeb0343a5c6e61f660a6e3469adcca9906828623faa9c9c", + "0x63a3f3e7a006e04647234ef43b40d33e03da66179c9165a40cc0e91b6fe29ca0", + "0x4be159b2914753375587a3edf94a90964fdd9e89c1592998acb1123d751d0a70", + "0x0f6d760899b6b4d7db6fab9aa3186361a03680c92de8f9f95bcff1f82c14d5e1", + "0x856725ad7e808334d52a234a0b13b9746c6a0219b114cbcd15d3542241340608", + "0xa60eff01b179e0895e2eed8a388f3393ae564a166d1be4dfa4b9bab253fdd008", + "0xa8ea401e7ead4eb084eecedb91d5e5ee547536bc15cb9b801b25f8635216ae90", + "0xcc77a0d7cc348b9bb61935397ae38dd6d6dee596e0f83ee95969128a12350b89", + "0x15d7e3e400ebd2828a6ccc97ed2c069c08458ccad8f520c8bb78fa400eda6a1f", + "0x477b93b3f6677a548b985fc1d00d8c72afe7bc48246865fc3ce5bcbe5502246b", + "0x691516a44309895798db0c5d940f9dc43ea548a3acc986f1bed8fc2d203923a2", + "0xe2a60192e1327bfc29f48179752441413c0bcc401d3faec66ff8acb69f1b7dc0", + "0x788c0d110678f201199f5789083d78e0fadb0b93afd2e08e670d1de09d0c49d3", + "0xb93078ba88b186b277f3174ad85499383ff9fd56db0e4d95ef350c9573f94e19", + "0xdcc3eb77af8786d5064f3d15ab184de056c08b28c7a5bf90d604f080f0db03d3", + "0x8c39ecb82bdc96c995e5926b15e63019f011ece2b35322adc7eb8fe90df95410", + "0x53ce5a4e4f689b47a0a7c1b72540fc87272c577503388cf05656c8e7a5aac5ca", + "0x667dadf6d3ffee26f04850f0dc2db09f88d4e9df28bcfce4fdbfd6c5666c96e8", + "0x8268ef73279798fb3b798609b15d8b57874b247efce7c33966aaff68538af0ef", + "0x493b30f1378e1768056a4082f1694385893c6a4011f03101a81b8377eb27d5d6", + "0xc444d87ee2af7e250642421770ae6d1d6766863520a47147bbb609cf48c6724a", + "0x1408073558d4ec6d97cf1cc3c0f0cacee31283f105300578e3a27d8ab8377bfb", + "0xd72bdf26e22a93a668867753d35868539c011d5bf1a381d36341a676571c1f73", + "0x1080a36ac0be6476902b0aedb832b15e1eb4997a367d18415ba590f426e3c716", + "0xd1cd609b0ed33ba8881b0d83ad46fb9dcea0d6de5b6a7924dc318cf0455f540b", + "0xf0267e1ef1cd4d8e373f662fa3cfda5520512bd33b406726bd3a69a39d24b5a5", + "0xe1458e86aca39813bca0c26599296d59f8c651ea67e627d124f2b7c5a1483e46", + "0xed9c3973a503ccfb9d1fe3791a741af77a95364d0e6559d816e880391d74d4d1", + "0xc0089751f9992f792345e7c555f13615e621b6fc802cdd61e08d676fda864c8e", + "0x8ab8308a652ecf00de7c867fcd2eaacf84f2aac65adf13515af3fe3ee7a69be0", + "0x3081ecee0be32a0b842d93d629adb79fad174fc9c7f6613346c0ee44ffca901e", + "0xe254a689eafd19c6686dcd89a06b1abb9001499aa1f03414387fbfe2b19f5a4d", + "0xa92bd85cf194870d1aa15738db60b6a30ca6e426e099351560a8ce5d3b13a408", + "0xa2f57cf261aab3cfb0928fa160be10a9c257bf2a8f1e51103d4e5ab9f9ba26f0", + "0x4cf15ba1d4ce5e51025a2744c7355001e6c20ab2e1b537bbf26f120726df2bb4", + "0xf70f4f87a77b54faab70f1b0cbbdf3debc966392890b919e1c0509ac1c9b8ee7", + "0x28986d5a5ddf44af8fbe8a68b8656ea5dcbb36551785c6cd5121a17ca33b608f", + "0xa859cd6f693e4065161d56cb22cd0d6d5d956c420b956b85f9c0a6b514b81239", + "0x3142bd457bdef3d22c0ddc07126fa2797dc66f5a6f5cb47f6856e1fae2acd5f5", + "0x13240195f63e790c2a170e0d80fa02eb3cf34dcf201b1e7a02865f70e50ec2c2", + "0xe224513d0d30dcb59244c59cdbe0a8e6e7693437aecb3dd1a6355835699b63d8", + "0x7b219fddafc455ef34378dd31249ceb4cb23fc848f7427f3128b91abc3101a3d", + "0xd4e7b7f004d95074b19c9d18ac954427de24207b3d9dbb7a06581c9cdd4d2366", + "0xc7db291a8868c58260331d4c36b0ae595e8816398a7bbc5fb61e00ffb4a2cc48", + "0x2ae7dff7f6e63d0324956b2b8dbb022b7069f392e0187abade6bc63b01e3ba6d", + "0x81e0b05aad2ac79beb89eb38b6a7455e4b174dcaa9f07a7556875d036d64ac1f", + "0xeae95f8e34186329c5f5c11b4ed62a53d665092b0d6559d7bc91dbaa99ad3ce4", + "0x0bb11d748a73a1b82f42c2df52404e834b30ded843d28460109d5177dd75f3df", + "0x55fb0af273730208f0a197862c7d0defc91b6c47b027b225d3093a723d2b93aa", + "0xfd43b8ec425e95d361c8bafb6a239f4e3c9edc68631e96777264dcf7bb41710e", + "0xc48523fea3c7ea518327a5bea849765f088904f8cd9f69f17c7783e1ba71a436", + "0x0d1a511231e15d7a37f0695422cb652ae319ac71ee98885f4d2c3d14f14711b1", + "0x4bf7cd135402f0055b423920ad92f71b4064ee0d7f2d151f82023c222d0f2286", + "0x0a682e8df046079882a718790725049059fbfa35171d43ea830ba2cae37c0aa5", + "0xa74a929c762e8dde59388c91955eb36b04fb56dbe4a1ee2b05e4fd841222cd29", + "0xd69beba4005e2b8925b6d7fcf0caf3c1587361604152bcba34554ae6f669a1be", + "0xcc56728e8f7dd56d4d6afdb8f694429dfeb4c552707c8354fdb7ea05fb2af24b", + "0x055228dc295905b467901461b4409fa8de5d9ecb5ae74009642918db39a0c9a4", + "0xa83391e094c0d0ce3eee5a8318e40f4035ff66a0c259e3e089781db320a362cc", + "0x517bb360f6246c1317440f8dd5d06bdf09e90c552f65c86141be3a57c3aed460", + "0x156c67e332c3285636136f7984b7a82baef2fd7362b577ca59697fe398be6686", + "0x2b1b1689e6aff6e88d7baa7beb7c8f562c1136b5ec59048b257ee418c84458ba", + "0x51377f007754fda7e2f03df2b57f8156189cd11e99dca9a2b8de264fb899a734", + "0xf553d083b83095e0d28bf5c55e67a5199eb9fa906aca202798fe0b62385aae31", + "0x2aac8ca12a5599a080bd3ca34aab0eb30c05fda6190a156572c6c2b47059eb0f", + "0xe73e24d314e4c9b1022150ad3bf04a7f2bb388b7f098b761c7e7c5645e9e4887", + "0x0fe5f32be6999f5c53c7510a4a4d9fc9fcd43ac628f76bae4e73deca7a0cc248", + "0x13596367afd452947ec1d1e662dd84b4e609656b834c5b5a194947edea1b935d", + "0xa0bf762235b0f768cea2dc903b53d677745871e3e4d4b2a3177e55e3804181ba", + "0xd2f59472fbedf386d58b656919cbae55a8fcf2728ab267e6654c92f8521dd8eb", + "0x80b5903b0ad0752832819d16623b6de6744930f16a4b65e6e247b106e81cc896", + "0x2937d2a0713811cbaacc151165c173faf17bbd48a8b3eedda0abb5d9e4c29688", + "0x624431382bc121c155c1f630739254ea7723af40f9fdd59f805cb86625aec467", + "0x7f25d7f03a06052510c4b273462e0f1de88a75c3d7c9b8bfac7463f87bfef2db", + "0xebab10354a48b7738601c8a126558601c27ac64c99a37e9d96a1e4e0b606b2df", + "0x4fd2600be9f6b69c314ca499198e2ed139c54135d9953f559a597f7a90c33af7", + "0xa6cbb5f10a4fb0fb56e0b5370deaf3e17a5d9923681aafdbe19e9ebf901f0e01", + "0x02fea3f0c4decf9f4415c2cde324f0896c50796a816e967577b908e930bb172f", + "0x66e1956e75b83de2108d3e5a8d420073dd7a7759052b18ba57bc9f73a690b59c", + "0x7c1a01ec0178fa52df7bed4253a53036778d16c5f27e9bd8d551d8566a68b6ca", + "0xdbff162f6abff748698b1132eb5f7083aa663eaa5f0b45d23728723a8fdd8d41", + "0x235f6827df12dd625ee73194e2dffde908478f3ca7b94b39034c069fed46ed55", + "0xcc9aaf19d6e950928e182fb6da4ade8956a9e0e5912df2cdbe40ab27f61784fc", + "0x0631903a6b2342017d657ee0d46a2bc4fa596188dd07049a9a3e8a6c8702e82b", + "0x507efceb9be0e626757b435102d7a457519b380539601dbb0c4b4eb1be0b254e", + "0xefa62044848f585c643b41d1e7b953dbc0aaf48c2e1d1e55352dd0659c2fa862", + "0x394d2d21b55f664af9883e632ab5188d8a590bc32eb512d6a0b37c56415ff62c", + "0xc8866dc79571cb751178bcc23aead8fb58f1b0b4974924c3f5fad97e49e98902", + "0xab28093bd80beedc7f0ba976a3f8f0949dd9215f7e4a58dd6d58e856a1fda7ed", + "0x75b7831f7c721f32836fb9d318e0b59790ad1bcf410f6daaab45a6747f68efc8", + "0x6663609e8afc148de17db41d13fa3243a7b1965c500b0e1c6b4a2ed0d25e6410", + "0xed8e18d8c7e391293d67f47f097572f0eee4ed3025c52a9353ac525b7c011941", + "0x9e878c269e15a6118fa6d817270e83fad9aafd8e02ccbfec77b7cb20854fcf2e", + "0x50f28d14bf0f7d3a9ef50cde5da08bc05ae7a17f1ed49444f2e55613118549e5", + "0x69cf59007a8e108c4919e9dd9a32476939d1458f4c48d3c3c3d578ac133e041b", + "0x1a3a45397a43ff3dc1257821b11c70102c62e2b5944cba93f486926c733d6611", + "0xca9d78286fd94a14d13f7a55ece595045055dee0bf0778b37085f9153f64e8c7", + "0x5f0dc585dcfc2e42b5cfc321000b9f54524d0df126bd39ad88fb2ea6cdd79879", + "0x0b4b39eddfb68dd783652937ae5683f4fa0977209074a6c7fd5eb8ba3c47aaa6", + "0x522170deac3047ab3502a909e9046702786aa3a7afad28d8bab8db83e429d406", + "0x9f8949e4215b2f88a16ed46645032f1464960c7ebac5f8613d45e68fdbaeb907", + "0xce240564d0bb1197d8db238c4cfcc18c812ec19fce22eab81da86d299d85b54f", + "0x0b7189fdab65e2904d39da44e502ed9e802e71c29e0c472ad5aad6c2ca5dd129", + "0xb348ac6fa88bddd70ba78e248a9b68194a941334d2035728da5f435c7ea59be4", + "0x685ffc580369e72f2a955aee3e534c8750ccaa6fca8a006edf70ded1539ebc43", + "0xbd30fc47b0276111ce05f7324c581e9baf6be4f8f295973f765f046675f03b16", + "0xca8e232211e0f9d9d770efb0d4579df6359a62951ed016bdbc347c7a16e2d744", + "0x9e89d6a8bd44cba906026df9efe6035571c4e6ffa61fcbd8bd55c283e7ccd72f", + "0xc825d5d5958a0d9b9c91f184c70ee423771d3eb7c82858f9f061c93062ed1fe5", + "0x13aaae6dcf997bb119feaec6e63f1d820919d43a556fce6fba9c5256b4fa17b1", + "0x8f84d37191c7fc2645235ee786edf175dd8762e421ccfe3e3d208ae506dad5cc", + "0xb15292239abff342e81d8e864a104283a8f34ac314b7309da0e25eb3ca07ef86", + "0xccb205c1bedd182e2d84efd9c904360725ba55948428a27df11c442896902db5", + "0x6ef7ac2bf233dbddbb2f544aa4dbdffc4066871ec46ca0c2d52feffb22c10871", + "0x928c6527362c77cee4d5f210a058f99db0e894f43824d9fa1390f0d12f86f83d", + "0xe40012bc2be876404a7d2e46e522f5d591434affb2aae462bbe141654bbc0e68", + "0x9d84b3d531754063af426594c8517516b506b7513e6522af6364a50537f1255d", + "0x7e702e849342a7bcb54ace9630dd60e25699b5337491c2ab7db5aedbe0742258", + "0x3dafb10928e7924f1f0fe45c5c22d19670cbb249f5367699e8e9534490db4525", + "0xcf5ad9ac52ee98b5158ba11ac59e511641a40a63b5105cd40d2f0e76a03638a2", + "0x726a5fc40b7e00ea477e7934afbbe4717717fb20a63f2a6a23e3d5e4a8c4289c", + "0x700616f25343c8c6ef208845a494c89126905aeb24179ca86310fb94cfddc704", + "0x4a0c9193314e365b26d9e0dd4b3948c01b3a04842a816a82a62e387915178160", + "0x396a4301241851acb28a25ed41899c338e78543c3b4a24ce0945b9cffbc0b5f1", + "0xdd1400c831bd337a24c8a272778482aa72521ca705588757cd15cf9e4edafba7", + "0xf4e30c77914620e0b54eeacaf81d882b37e327667ecb2b00b8e446a9966131f6", + "0x0122c2b14b1a38670dd7b419bae417c92e2738acda9260f9ed7e1c4c478dd489", + "0x13f38613722e1ad77a5711bb5e87800f066519f33c186e395be3020b26f9951d", + "0x697aa448e31fb9567fefe706f338a9aa263a676fdd12884197a51bdef1290491", + "0x1dbfc227e7a118f1721b7918d7c397d5700de868d7f782314e3d15f314821027", + "0x0a1bd08dda388fcbe87c4a1ad36b973d5eb1cd42316e462fff555d51033cefe9", + "0x46468eb78fa82c6e85db8b4698f6dadcd70146b898198e8bbbeeb767a29515b8", + "0xbca2b6e0d6adcc468eb950ef14f6d523a2f69161ee80cbff341ebb2a7ffa1850", + "0x34f9bd97fe1279a33b011dc0dc0be14d4fec140d28cc923be9e0ca371df28561", + "0xf6864309d0005da1f8fb9cd6c829953c2dac386cf278b2a17a1234c18b140e0f", + "0x048eeaecee39626c3e4b74f795b4e114e5e28e2fb43055213f1646b2c368f9ee", + "0x2afb516e8b70d32ff7a3570f79eedbb7938c3c466cc0fcdf26f365bd3dfc17e7", + "0x5f909f050567e6e1e4eb72cfeb32ddfaf21f5a2b11af2a1c986d5c0ae1a0396c", + "0xd4eda1725219b7cc353cba2e52a8a4ba04c7e788c872daea2151a0ded5c2b099", + "0xdd87a715a242cfc1fafa12b377738417b8fec4fb666fca9e0c6b955dab4fe182", + "0x23ada1e98cf5dd103e47256bcd1e2288b95cbf1bf3161c7ebd9fa7a22aebc93f", + "0x783ae20e558493e86af4a10f4c2a263774a468c86a7ae08e2a47bf29a792def4", + "0xadbfb8f049f2b2b55a8a5b1848e99d13208297576d3b293a03d18c95e6e43ecc", + "0x0fee2df760f5abb966a150b120406fb8eb7b7c8970400e0a5446431523840d89", + "0xe0283d1ff97fea7d9cbe32ba780718879c9d117e54a60ff5bfd9b14dd2cb45fd", + "0xd50698f580a53978b1f7a7b8e89efe5ce0e094a6edbb1fae899b28a00c245d4b", + "0x090fb313663f5f5ef50f39e9fa95161cfc2113d78df444039ba775a9c8b319c5", + "0x01730bb508aa57e6662c7496c1f5505680ea5cfd7df0f2be19b53726e4d02b29", + "0x9dfb58edffcdbf0198bce964f17a80bf49198c3188e6bfa7cadd65ad8eb5068d", + "0xa2f367c11bf28bbe6eb9600ab5257e20c5723c4afb00f2c239639f14f08b9568", + "0x959368c2bf88ebc8bdc79855a416f60599a48ad988e2138b4906d68c0b2de560", + "0x7c592090a0f000b0a54a1f87cfef12e8852f768b45c3d215e98c515794ae38c9", + "0xae331f6087d6d7fef950455b69719625d92ef2daa5a43ab87ec011768915c8b6", + "0x0dbafa99763d66a876aec21f04c613e71d990dab0e0b63487d9077123279dfad", + "0x6557a409e545827b8319bbe3bf8af198a861ac72214108f242379ddff0b641ae", + "0x950b7d33192044a93ddda170eae89170c22ef2fcb69276e345501be10885b2a8", + "0x6c448f1a1128f1fdde6413b715c840f08b3a7be02d235bfdebe4fa83689e3c98", + "0x34f0f02fc19b11f7fc6ae3a6462d6ed7902f9fe91c392d5f0045561101f93985", + "0x7c20f9f63293af90f5e74ca780602aee3161c0419dc5082014e267c7740f7d70", + "0xe6a92ee909560901da6af970417e60c90badd5375a06716b31beaf18c0aa8636", + "0xc8407118d397623d12d8f74bf56667c3e1dd5a6d7a0407d0173cc3deaa9b854b", + "0x612345790bff5f5f6404a8351a7fc2a514fb465db99c8d5dd7d2490e210623a1", + "0x4963d52b2c174748924030ce6693b125113550556d0145ad392ee98cadc9f528", + "0xb3c7da54e50a98c3971cc4b72bf975749f2ab5e6a7864f811079d779e7f596f7", + "0xbfa1711dab9f4b0e82b95a5900f60f3195ebf8f93d7d9d489ef9a05414602f41", + "0xd028ce049e1e4a62c3ce1fc9417ec7c2608bacae61f5653da317ca8e83cf6766", + "0xf21938c46a71ed8b5ac97ee6df2388e8c55fdc14d1c11ab525d18862ed6d1bfc", + "0x9b2c3f3396eb2be6b09ad9a9bfd718d50dafd91d232228ea530d68a4a1803223", + "0x672325d948f44f2365efc3e73509e673c2ae763a6292946a0d3a9e55c77cc58a", + "0x72b163a99d809998e87e4679b05a2d13d891016d8cf613d3c3ca8464e06b4b0b", + "0xbbf71a91472273686c2bd961e7ef163673b225c8571cf4d9cdbc25abbe7c986c", + "0x1717c5acf94a4062426475a4da78fc64310edb44bb3a7777597bd38b8243fd36", + "0xe701e3e57d8a162060e4926cd876645f30862a90bcbbf7a1bb25147bc849d7c3", + "0xe1601b1713013c54045b17bd31bd1548c8e88cf5cbc0743745253ed71436abfa", + "0x7e829e487cb8e902e8c573cd8f5f40309d45fad3e18ba95add98742f34021100", + "0xde0bfcfc0a7ea3cb1dbfdc4b97e07ac8961e87b172199e2db96a9f3d50ee08a4", + "0x8a8fa6ec0bfceb9c7936f7cc6710644f14d5d2f53bbe8e61ebdddcea892bfb9b", + "0x937d50777fc97596beb74dd8cd0a873395307f73b25242a3644e4b5e417d63e9", + "0xea42ad880f934c42c4fb31cc390db3839415691d34d07880454d72d8a008fd96", + "0xdcbcd3e2040fcde9541cfd4e2099936ba9631b3bce98161fd00ac478cec29d4c", + "0x4abaf5bf3dc2b12a41d8cee6179b699e72d546e5821537de6afc41b52a8a67e0", + "0x6bae0e2c7e47added25aded1c015e70a7636ef08d69c39a18570d6adce5082d1", + "0xa026ed1ec9d9784359996b33c185795ffca57be09c3b04d797e7869d5e7bac9e", + "0x2f353f90306a8e1ec19d138fe6e05e0e9b2a9fc652cdb0d565bb606e1ef6e906", + "0x7c2c5ac89c841106835551508d6fa058e92290714b7eba2f4900cefecaadc512", + "0x93ab889dd0d40711ce5f7ea8203bf62a45ce4be2a6772e21b3d20031faec4f60", + "0x6648314d63d8b97a43b08d46a8b938c16ab6c9e86726e0b7ea24ce7021bfae22", + "0x61a01393ab59b76fcc93bfccd294395b5985f99416f13375a116d49dc0f4e45f", + "0x48d4448ea0d7533e29be0b6dbdf08e35fcb1d77b5fa77af94f469e718cec597d", + "0x5db14c2c548786dbde38a21c90d5e020f7ff9a42dba40e34596d1542aaa85ceb", + "0xc6da00b09a6a9ded3ae155183ea064f8710665ba8f8c671fd023ee24853fe506", + "0x8aa669698319ed0934720348ba6bbf7c2324ff7cd7da19d70f1cd7a84b320c36", + "0x72cec022c3d512100894c62919cec6b0f023c592533ae789d88c8af41fbfab06", + "0xf4797972fadd05a2f034c25dade1bf465b58d758f712438d1098fb12022cacbf", + "0x2d6e56359df3c2420dfc12d7e519751e86499eb3ae3966e445dea2ce9697e63d", + "0xa2f6740825a17d124f3ffddf79ef11c6153b7c39d58c0705181247ccaffff8c0", + "0xdce5c6427da944caba1124e16970a67787a2c77ad378b9852b2e75f755269617", + "0x3b382bfdd96d188d3499a7d7645d14884b1db9952a7296f639c730ae05355e5a", + "0xa7076ced7a4e838fc71656336d61232e554521d17b8e6f9c019b0da54eac976f", + "0xb7ed718af65740c96796770a34969d077e625d8a54bd88a42a87b4b8f16d16f6", + "0x145f53c61eca53f76fa5f0bd9eaceddffee5057194795a42564a18f2d229a0eb", + "0xc4070964ebfafb3eab3ec4289355c7512d740fa6a2c08d92cf93f3b1b0e3dfe3", + "0x0246c044b729978bc210a52e10dccb89c22f9ed10909f60c137014cfadcdad5d", + "0x2fa31b5ba8d194a5863201d381e14d2cfac7dda5ee5a033aa9a3944cff76dc92", + "0x1df1768ab12b327e696cef043a3dcd8eb75d150bb4434d187acd2acecf89922e", + "0x7dfc139ce57b5f4110a48ce4e1c95b8e9fce7b83d0fe99e92120bd60c30483b0", + "0x63aa478875762360827069f1333ea6c5891829baf30d64d95072c28b14a7a355", + "0x4b468dd25a8826014ac17fdf88c2e9572be84fbee3a5f3945aed657743df5bea", + "0x4916fce234b380a5d68a2ead5434bd2b6916183da350cc03cc8b773c025b7a80", + "0xf41f640714f3514ec18f28ad5cc4c0d3d234df287c31733cd817d628a0a1a0f1", + "0xebfa72e615cae735bc4de3ecf6d22523ee9becd0f2276073504b634881e36de6", + "0xb778e9cd4c25f960f4e841b112c6363ccbc0166e2a968ecb619a50465dd8c86d", + "0xc3fe93c88b5e27b55fb238d94f8cb0bbf5bc93d4ee1ea1cf8450f4cc9ddf7aaf", + "0x0e5a87855596eefbde0f62867bbe3e231b0d5c1feef517dd564212b7c2bd6511", + "0x2151b7a79946aeee1d43f23e12cc9cbac2ae73cce199a30f23983110fd18adc9", + "0xd73c780aa498e8f7d33e8ba6a6b1cf8613d5ef6f50328c92f5f396bf9078ce57", + "0x6a914f2d36f781d4973f4145798730344d780c0bdf5a011f28c8ded1bf21e43b", + "0x7542ad864b4c158b1d2124276b96a6006872cb746506ede1204a5c8ba8843e61", + "0x4cd8e7d558198702e21c38160c7176e933e4bbfeae7bd0d1a127a0dbb9cbe9c4", + "0x83270981afc5f053129845af5a1289d20e9a5c0c59a37239899844ac29e54283", + "0xaf5049a81ee76ab1affca890e645b45301d083dd1c2b184df6a2ceefdc28aecc", + "0x3b126bf9cec4d38408de16abe4ad3e37fda0cdfb9b529a3944cec0fb0002fe18", + "0x207578a3c801ee996262bf48758c64dc5dee340acff86a019645b02d4e6c74c4", + "0x3240b16dc703c5319a04391025c2d580eac2002516a58adfd21e5e91a03adae9", + "0x591c064b39e7ce2796bdc6eecd9a59454271bfcef70c8c8b1e37ada5d6af7460", + "0x0a19a277639a56259a82385ce2f76b5a34f82b766a45a70bf6fdc3faea97b6c5", + "0x3b05954fb191e93a96df6bbdf9ac2c6dab554a395f12e8c8873cb3cd7330ad1d", + "0xd193e6db7ce63d8a872370e1869ca3b2b0f8dfcb03f660409e9291570041c94d", + "0x4104f38d0898f11eb83792364435cda9f9c796717c5f019fad67643d3a5f119e", + "0xb339df1509cd46b01fcd1754bb9aa7896f092a4db4ee948ba142ab99cf7e82a3", + "0x5ff4ceb016e91332e7756aa2ec5abb8c2946399833ffe9475ed36b1c2c0a644f", + "0xf55565169495ebcd3a4e6189e9b57643ed454354947dcbf0e8f36037e021a9f7", + "0x01ec24790062d9cadd54f7eef2fff08f2d4c6ae1ec40e4c14e2edc52d4df387c", + "0x00e1b46ba26791d220ce9bd1466bf7535561e8a5332244777ee125aab8404fbb", + "0x73cf9fc9d87af9c319cb8bfd4d62c7397c0aae246521d5bc65a617e1d42c9888", + "0x903c53b767fefc344149aea5c6f012bf806e2295d26ee09c725e7a7844810279", + "0xd3794732bb5866755f80f98f33a8582aeaa3a6fcd39e8020c3839f18faffc910", + "0x0dc7d1b89601438f6c84b22d78702380e299b042273d1e521d5ab66f78e2ae77", + "0x0e1d28ee0d6792943aba0cd4953e915f0baa572aaf8485295e8ec16d3792e16f", + "0xa317217fc59650d60eb5a170164dac6d67124adffb9759088003cc3995807853", + "0x69f85349fb348be33c270a9b381ab5d04e10c218dc901cf6a2d104873aed4b1f", + "0x6fc876e038a0c7282d68e9e5684ced830cc86529e6d059ac502b9eb1fe2a4a74", + "0x8c683feeed5f2f29cdf7009b6099da17d107a3b976db0971ecad4fe8ad9ca86c", + "0xf6bbf20cfd59c3e48f01bb532aeb3bcd0ca45235069cbc09bd8ccc622b409508", + "0x9c0cabf794a61af956116c0b7182d8ec78b540645d4e967714c72a3ba9ede87d", + "0x3839c20cdd445ec0634a429bb66cef9bbe5f94f8ac0ee5ca9deb6bd78a1d7a9e", + "0x90da2c6b23c61b53730e697cfe3db5978755fd58e69f9384fc69b8084d447cb9", + "0xf1b40a8505c734fc4de4805756aafe46e0263e7118e1116334b224109006329c", + "0x24c3366b0fa68d33b1a0f09d760759036763ef47fd2b7b13e83c4876d554e73c", + "0xbfd80734e935a2af2415d201fb87d1dda5aea542ef4a76dcf26c91fc5bff9603", + "0xa5bd0cd46eafdd399d8a227431745f5f08ad5d6fd8daa509cb1b10f50b5f0e1b", + "0xb4a541b63a8da08fcc5d9a21535f652eee04fc70cfba7da908e7780fa92ca6c8", + "0x26d6434430c7083b1d17415f4f11e53aaa79270dc22045e361329d0c9821f9bc", + "0x0db69286e0bd5f808dc58766d5c301ea9e88e22a79ce026d43639a14162ff973", + "0xc76640923490407a7983c15d05a28f5d3ccf21d908092b444a259e54ee5b3d07", + "0xc0fccc6411f5153146f6c178cc0daea0686c4c471a3423203933ded03baa8be7", + "0xa6b01ae91dfc4eec65d6913f8ab446288a103179c3a8cfccb125f2e3aed6397e", + "0x4ac1e929f0ffa7b020a599d90c252dfcb63836017e31904e32757c4b1fa2984f", + "0x654da4188d385f9eaa3ee0ae3190c7835a9d6b26a9970c092a4bb9c1f54b78cf", + "0x4e29427161cb1c9c1f7dc21c0d6deada7d2144bcfe51dcc2e68d921271edc365", + "0xa3ad2bb2868c5d5a733676398bcec315e546932932e419eadc1debd92b92bbcc", + "0x536472049b93df449ce20ba4daffbb88f9120475f957ad0df6aaf17c3e1a04c0", + "0x25ecb3940fcf854205f5f690886df3d1510cc452cfafe16bbf0e6aba639b321c", + "0xda2749f7287f3f04255cdc9f35e8612f9e5c81255c19fc0520c828db9f74bdbb", + "0x6dbb8ba3285e8773634794b08bc565b6b4aeb6f0b2a2a6473f323ba429e388a3", + "0x6b88e565b448346004b50ce69d71b1213ecb014d40b1ca2b62c75e1e20b7865a", + "0x024a327ff6987da3a1455cd913368fb5224c25c07468d899a9cd0aab51119bcd", + "0xb6efb51174dd044a376d3deeb4f0875c9a79e366cea2c9416e31c2c2f1dfac46", + "0x2e2b073b7a50d2da16698ca9bf07ea4f7ca34c9d1cbf29683f2dc4efbb41e7b1", + "0x9ec5cffe0496577c7d006b980a21d7e2b1845338a4c1f9522b84ee1351078e2c", + "0x94cf61152cd1f41b168a0dd2f92164e77f0eaa2280e74dfbc3a21236f1db67b3", + "0x8353c97cf93c5a4db1ac6b0c8d6ea0baecb5031e728f72dc80dd51eae7a71481", + "0xa826b527f726bf326b4bf5d140e4cf8b424797d768745107515f01f9dacc5c1f", + "0x920c77649a8f3865717ac17498642164350f2a1db0ec7a373d099e446a42c3b2", + "0xfd6eeb07733e1c74c801986432805266837a691009205af683828c3d5466ca53", + "0xcc69a010251b5b609e898c948dadd3a393b8f5911dbc10ec074a3aa5edbb426e", + "0xd60b9792e328706d35ab143240ef40c677f5569630abce688606d3a57740219c", + "0xb6a1a98e987617fd9c51810d39fab31248f2e4e251883e4a71c1dfb3949182a4", + "0x75a3e7c79f4bac4bd1efa81ed568d014b1a465b462ab26c6c26ee90e774d5164", + "0x1808189230382b5150f05b6b5e7aa783685493f3e89cdf190e23f9604d8352e6", + "0x344964d349c217124e6354e667d50309c3cbebd1bf81b9363378a60d8de8cb2c", + "0x12d6b292ff08dc249bb9c38351740018d598382c2ae1f37bb7b625d46f34d033", + "0x3115a238affc7cc50ad40536f87514c33a75935c72520d876fa9011651a819b0", + "0xe9b3c0e687e2cc5f28eb2042decce3039e2d296bec673c98cd9e264aad9f73cb", + "0x0330df9a1c2fe42d1ac3cd393527ffe01e59a808fcd7ffe2fbe918a82b4e1413", + "0x254b23e5a6e403fa1df82d90633c051bd463049d521eca349e33f26a4e22443d", + "0x56d62e6ff41a89670cd0b58f3f5842b7059027c1ed7f1f178052894dd5439b09", + "0x83b738db92b8e789d5502de38a36d20d78e92d6975e07ad803a75a1c181cae70", + "0x439beab00d517d81edd9e3cd2867df5fb9aa335e61b6203700426ad5b0dfc9a7", + "0x28ade6a2d26a001c10eca939e58dea51d9d0c226642d268e230409b301ce0a58", + "0xdbe038170721346bdba08663c6026c9e7573dc7d7ea2f56276ff95040d069f3e", + "0x0500db2e22ad39bf7d4d62c07375ab2f46eb363d8b9b7dcbe4f4f912d9168655", + "0x703dff8ff55e11f57ecd13101a677eacf1a4819b0424943a48da6a4a280a8a34", + "0xc21c01581110d5199576c79b1c6d1a7ec1bb72739454a38b997da81f731e7695", + "0x45cc74ac2b338a887bdc722c482122e39718251cf1319de75b9ba313272d8f5f", + "0x06a4e54aa37b99b3335ab7702d6c4f026c8f27a578373fb5853489b6958b15e3", + "0x12d1423a834f74fcf279e32a639ce5f4542001e421c9743eb905fed7bf0a6cee", + "0x49f1dc5818186e91030e09eb615a0bb82393ce2874f9ee36ea968cd6906c7a71", + "0xcfaff643a75fbf1eb89ae488902b3a9bc8e66b8c300e0e816f223675e5dc65a0", + "0xd228d415cdd5a37109f621d62447fe5906ba7462acb65efda2e2a0965c2b984d", + "0xb38ea82d658e85c65d3ce9a576bf6e6ffb0e1f1c7dd554d124cc8a2c568d1ce9", + "0x4eda30e35f5d4c726201d22a0c4c05c6986b73cd5b19c4af2f2f591bd81c50ca", + "0xde7d2cb40910c98cda5b17bf931b9e2761b5dbcf73de4ca6fd659cac415b7841", + "0xf6320ef9228420d1808b74b63202f96eb291f99616f76f73248e45c3d8c36f10", + "0xc6c03a85d998fe38f84ad79e16bc557722c04ffc3b79ac0e1d0940b2f59648c3", + "0x07be4386488ccccba5f162630241b00e8fccebeaee946867e2808bc2a93b16b0", + "0x2ab690bc438084f7791bcf9589c4fcd3d94a2189f40e98c9420071f2ea5e6573", + "0xcf0fc0827c824378e2c2174d11dea0fe34a2a4bb874e88c50e40d0401514137e", + "0x2ada7bdd5af69bba2b9977b811d6d611790ea9f6817701a1e4c0ff7b7b28cce1", + "0x19f78ed4654d9ea98d26f1fc808890f8ea49232647891973df375b7b4be84dfc", + "0x992f145952e6e56f6e0b6c573c052ad7b38f55ce6a07b72698be9ec4e325839f", + "0x184eba0a8a2df9c1cb81d331347c62336f939cdb6b26ad8f50803b685dea5c0f", + "0xb7f9f64ef6e4b458f6bbc6be094c8bf98a081ed16a9541f9e039a0427a949d26", + "0x1512358c838d7c2c6afa1137868c7ad0fe3cc516e3201549f3cb3d4267ffc261", + "0x8ebf459d29023a6664205d88b73b6fbe03f3a8d58f7190cc15a7c0b82849a166", + "0xf2cceb56f58173ae33637c04f6ebae6bdac71d203b0fe430594d3d6be971dbd3", + "0x559511da5e412b3695bd7c377f55e7883fa08f68dd5660600bc5e09338288b27", + "0x50e872da55a1653cdbce2bc2bdc5ee19f8d1ffaacef6af75bd874fe47b77f371", + "0x7a905e060419b238821bbc5513223483c106412663f64ff6a019cde75b420879", + "0xa328246a599423850df4012528cb5d61d9be303cdea4202f946b0e3a2a12c0d0", + "0x15e4b9a3a475cb5221e7b281c657335d04bb243266e9c75e46f03c0ff8ccffd4", + "0x835fc9e31d0c5a15d7906006d5b291490d52b5c79c3d777b34d497ecd59ddf50", + "0x886b5f07f5dede599b3c692660bd84300e74eea5f48834b4925b6f9dfed6aecb", + "0xfc835d61674acea24b648647df71787400c51dfb5892a2a7043dab45adcc6730", + "0x48cc0e8061b8fd5c812e139b75e0460ea142150dfeab913c82252a26993af6ed", + "0x984eb490ac031f55596a4ecbf57580350e4b9f266c5eb94431f371aa4a14a78d", + "0x3fc77c60434bf79a471724600e12efd8120f9f78e201e46657afa87f68f0a001", + "0x6f234e54de04b9506a5b78233d110d6329e30ea223edcb8e902ef3cd089b2f85", + "0x8068bbc755d0b10e40c8024660ac142d44aede73cd62137a63cbec48613c572e", + "0xe7beec3a0554febce53e90c838e6aab0bf05fb02ab13b446187423e4d374b04e", + "0xbe879a01ddebea34c5f6d401f271db75ac5852c5fa5e5d46beaebc6a7ed66d3e", + "0x67038d88e0920d79dc4083ff02591bdb181ed9778fc3954aad25bb78bbe9123a", + "0x19caa0b1ce83f546d93290a3f77b1ad9b08e7f1bd0245c9fc1a5347bc03c01a1", + "0x9a37436c2a0b2e7e576e95fb6bb6d4c68d301ec1201e72734a0c9303af418474", + "0x95ebbe7bb838501fca3f14ca7ef25dd5be7a1447cec71d62004597ac9c726e61", + "0xa043556767bed1e2519b1cd4192e6c300de50970e0cb369731c02aa7ee17475f", + "0x9b68ba75b041f0dd71145d11c681bda5861b31b43c4c9f8a0cec3fc65847b6db", + "0xd0a4d11096863e0c74387154f58f4c9efb2b947ae4ce7a1da77b8a4ea9f0c869", + "0x074a3e887f280751e7dcd1fd02f93dd12695b9e14a4fff45e2fcb3e26991c768", + "0xa9ea4bde6a319b4f053c92a76d6e72928a089d680eacbb3670decb749f454659", + "0xfed003b25b35e122adaf2a94fbb7069622846f86cdcb79a5e93e3f1f122cbc6a", + "0xa158088c237ee341658d410ff6aa1f43b40a607248479330fce34731cc2de3bc", + "0x62b4f39e1545eee1893e697e634e6e7441e8ceca5fc8be3ca8684cfd70b4b452", + "0x39063f1e2c8fccd7fd2220a595f969d5148b3227a635aee5d3da7793341de814", + "0x02b8c915c81e902a050090bbbcc51dd167f2ff075178bbc00966ee193da6344b", + "0x4d45cab0e4554fb86eb6657df7969092eb77ecc8a099ae09ab0e2ae264db61c8", + "0x484a0d21957e5d0d711bcf630102a793de1c16990d4f0be0f589176f6c9484a0", + "0xb797d1fa33bf9bfff63eec0a30a51d02f1f88bd400d0a6f4ef5f8429997ea547", + "0x5df2b265dc8181782e4e5dd25b32728605a77818598c5ec67fe99c6fc3e35ef7", + "0x31aa525b9dfa0a57cb36206643c4822eb2c1061cc7d5f21e0cfbd72023f8e997", + "0x9d7c6172f750e7d18593c71f36a3ffdea5f0e3565cba656a3b7e2ea361be18bf", + "0xcfb4ac621266fcc2f5b33e249d8989efd98820964f68540ba8b7e3af27b83a9c", + "0xd1c0c7aaca4e2b0dcfca44c2b570eeec6c4982512a50e6a82b65ebb6dbdc3195", + "0xdc4095ea235c260e67c4896e465383605d55c5e8d96b27a512bc8c3f7b72ba1c", + "0x11df12ba1b0bef7378ef88955aa026ec93e87c625a9c7d832eff44ff94aba7d9", + "0x733dd930527eefa4454b56f5eb4c3aa29c4a0e99072e2c1684abfcc6ee09d833", + "0xa7c38c7080fb588e42127de256b7b3d259055c2460900f76de9ef036d3a03377", + "0x27b90a4f0708d7fcbd61dc42570d0d569acd86b7578d479f56d823f35ba4411e", + "0x7cb065f986407568958ed7fb7ba18c2babfb49b02bc9b3b88756695411f31d7e", + "0x648061097b5f547c60290afc290c91696367852d0dcb87be712382f09c9cd1b4", + "0x194bd726e882fb0411c45d51da92d4d8949edf5ea53bb5e3282af1aa25217363", + "0xa3b6c3ae24ca9cd0986610f3cf83d1250c8bad3110c645d9e98a8fd7a85d4867", + "0xcf58b289f156df5285c791d7a8c8ea77104e34b254f600319cb9ef9582638997", + "0xbbbbc3512166bcba6b870a314ec68698b6c36e594e40f73cdead3402ce69f2d4", + "0xf9589e517f83fec8f31d79af06166719dd7870530697716ed1e603050bd3cd08", + "0x63b199bc52c448f48ef989e5cf45b9a9fd3cb7d0b47686ba113dab00f08cd9ce", + "0x366ec4dd2374d0328cc58f74dfe3993e33cf37881506dfd2de0462f01683659f", + "0x24e19f5fee0f703516bc39c4a089bcda7d111e2ef39b138cb760f79272f0382e", + "0x63aa5570647f5bb0aaa8190dd92e6581ac8fd7ca432a6cdca4caa9eb6ca6ebd4", + "0xd04499317d5c640c71617dcd7c2bcb6e7ba84278162c3f7298e2b67a0d50a7cf", + "0x36ea61183d313cae00bf55795ed9d798f18a17a543e9d6de49834cf128cbbdea", + "0x5d6fdce8a398f24f97908926c0528b224f02823116fa2f302cb431ba06c9982b", + "0x34f1e74f0bb9e36ce61aa75847d86e8d4cb9d4e555f0e8a4f93c5edced10a81c", + "0xd40d82620603252580f5cf54f307170ca5868c086ddc345e633325d4f78f07b9", + "0x79b3c34bfd5040d39878501ef0dbec691ed3d806e4adb7782220feb1756a6acd", + "0xc43e045abff53b8077a017596e531359672b0531d129cb6a0302df2a0c59800b", + "0xa5fd2680ea8bec22cbf5da6bf0f8f7f42c569a4a9068de15399c0b386f2afcd0", + "0xe3c0ce648f3c4d5a76d96b30287933ae5a79b60bf5bddfba0f102bb06b9f2b86", + "0x5c068aad633ce416a4340c5425d133616c0eaf30dc042d919786dfafea4e2968", + "0x2a12b2aa6359401efd17d464209547657d01992bcdad081a386628a60ec3924b", + "0x10de6b8c58816feb6145f9b39544a09d67f04ca758ed0b9a80e540ce8b117ead", + "0xf5632116f787967f9954600c783ca2ae46be42d36cc693b5d847a5dd830b6c06", + "0x1798366afb7398e8cce0b35d38c59d8ea2eb3cfb1a85b165fe4ba68a15088c3e", + "0x8cd71c3c3cc517d8997115eefbc7907ab871321f8167e7da90d42c33114d557d", + "0x3795c6454c0d734e71a33e8d4596a2e9af0a4d3aca1bb0452f2da4676f4cafae", + "0x853f13cd1e6c0cad486db441bbc58a266f35bcc367f7ecd9ded5a4b2ce96ede1", + "0x2a557d24d969f703c9fbb2b8efd4c89f43930e21c5a5a7b03c1e53d94b73696f", + "0x66ae745b56d3d5f9082953d9b267e2a98dcab60a302bc783d79aad6c3816ee67", + "0x904f9d8510005aaa955a2654de93af4ec0271205472740a7b86a90375fed50eb", + "0x74e9fef60a9911345324a22e50fc74982b24849f3c4973a5d55b73092dc46ea4", + "0x1571a667030f301ab8657d70607c3dfb02599cac15b44e9e48a4935d68d74028" + ] + }, + "accounts": { + "0x0000000000000000000000000000000000000001": { + "balance": "1", + "builtin": { + "name": "ecrecover", + "activate_at": "0", + "pricing": { + "linear": { + "base": 3000, + "word": 0 + } + } + } + }, + "0x0000000000000000000000000000000000000002": { + "balance": "1", + "builtin": { + "name": "sha256", + "activate_at": "0", + "pricing": { + "linear": { + "base": 60, + "word": 12 + } + } + } + }, + "0x0000000000000000000000000000000000000003": { + "balance": "1", + "builtin": { + "name": "ripemd160", + "activate_at": "0", + "pricing": { + "linear": { + "base": 600, + "word": 120 + } + } + } + }, + "0x0000000000000000000000000000000000000004": { + "balance": "1", + "builtin": { + "name": "identity", + "activate_at": "0", + "pricing": { + "linear": { + "base": 15, + "word": 3 + } + } + } + }, + "0x0000000000000000000000000000000000000005": { + "balance": "1", + "builtin": { + "name": "modexp", + "activate_at": "0", + "pricing": { + "modexp": { + "divisor": 20 + } + } + } + }, + "0x0000000000000000000000000000000000000006": { + "balance": "1", + "builtin": { + "name": "alt_bn128_add", + "pricing": { + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} + } + } + } + }, + "0x0000000000000000000000000000000000000007": { + "balance": "1", + "builtin": { + "name": "alt_bn128_mul", + "pricing": { + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} + } + } + } + }, + "0x0000000000000000000000000000000000000008": { + "balance": "1", + "builtin": { + "name": "alt_bn128_pairing", + "pricing": { + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} + } + } + } + }, + "0x1204700000000000000000000000000000000005": { + "constructor": "0x60806040523480156200001157600080fd5b50604051620024c8380380620024c883398101806040528101908080518201929190602001805190602001909291905050506000825182603282111580156200005a5750818111155b801562000068575060008114155b801562000076575060008214155b15156200008257600080fd5b600092505b8451831015620001bd57600260008685815181101515620000a457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620001335750600085848151811015156200011057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15156200013f57600080fd5b60016002600087868151811015156200015457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828060010193505062000087565b8460039080519060200190620001d5929190620001e8565b50836004819055505050505050620002bd565b82805482825590600052602060002090810192821562000264579160200282015b82811115620002635782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000209565b5b50905062000273919062000277565b5090565b620002ba91905b80821115620002b657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200027e565b5090565b90565b6121fb80620002cd6000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101e457806320ea8d86146102275780632f54bf6e146102545780633411c81c146102af57806354741525146103145780637065cb4814610363578063784547a7146103a65780638b51d13f146103eb5780639ace38c21461042c578063a0e67e2b14610517578063a8abe69a14610583578063b5dc40c314610627578063b77bf600146106a9578063ba51a6df146106d4578063c01a8c8414610701578063c64274741461072e578063d74f8edd146107d5578063dc8452cd14610800578063e20056e61461082b578063ee22610b1461088e575b6000341115610175573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34801561018357600080fd5b506101a2600480360381019080803590602001909291905050506108bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f057600080fd5b50610225600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108f9565b005b34801561023357600080fd5b5061025260048036038101908080359060200190929190505050610b92565b005b34801561026057600080fd5b50610295600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3a565b604051808215151515815260200191505060405180910390f35b3480156102bb57600080fd5b506102fa60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d5a565b604051808215151515815260200191505060405180910390f35b34801561032057600080fd5b5061034d600480360381019080803515159060200190929190803515159060200190929190505050610d89565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b506103a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e1b565b005b3480156103b257600080fd5b506103d160048036038101908080359060200190929190505050611020565b604051808215151515815260200191505060405180910390f35b3480156103f757600080fd5b5061041660048036038101908080359060200190929190505050611105565b6040518082815260200191505060405180910390f35b34801561043857600080fd5b50610457600480360381019080803590602001909291905050506111d0565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156104d95780820151818401526020810190506104be565b50505050905090810190601f1680156105065780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561052357600080fd5b5061052c6112c5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561056f578082015181840152602081019050610554565b505050509050019250505060405180910390f35b34801561058f57600080fd5b506105d06004803603810190808035906020019092919080359060200190929190803515159060200190929190803515159060200190929190505050611353565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106135780820151818401526020810190506105f8565b505050509050019250505060405180910390f35b34801561063357600080fd5b50610652600480360381019080803590602001909291905050506114c4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561069557808201518184015260208101905061067a565b505050509050019250505060405180910390f35b3480156106b557600080fd5b506106be611701565b6040518082815260200191505060405180910390f35b3480156106e057600080fd5b506106ff60048036038101908080359060200190929190505050611707565b005b34801561070d57600080fd5b5061072c600480360381019080803590602001909291905050506117c1565b005b34801561073a57600080fd5b506107bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061199e565b6040518082815260200191505060405180910390f35b3480156107e157600080fd5b506107ea6119bd565b6040518082815260200191505060405180910390f35b34801561080c57600080fd5b506108156119c2565b6040518082815260200191505060405180910390f35b34801561083757600080fd5b5061088c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119c8565b005b34801561089a57600080fd5b506108b960048036038101908080359060200190929190505050611cdd565b005b6003818154811015156108ca57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561093557600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561098e57600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610b13578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a2157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b06576003600160038054905003815481101515610a7f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610ab957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b13565b81806001019250506109eb565b6001600381818054905003915081610b2b91906120fe565b506003805490506004541115610b4a57610b49600380549050611707565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610beb57600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c5657600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff16151515610c8657600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610e1457838015610dc8575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610dfb5750828015610dfa575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610e07576001820191505b8080600101915050610d91565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5557600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610eaf57600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff1614151515610ed657600080fd5b60016003805490500160045460328211158015610ef35750818111155b8015610f00575060008114155b8015610f0d575060008214155b1515610f1857600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038590806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b6003805490508110156110fd5760016000858152602001908152602001600020600060038381548110151561105e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110dd576001820191505b6004548214156110f057600192506110fe565b808060010191505061102d565b5b5050919050565b600080600090505b6003805490508110156111ca5760016000848152602001908152602001600020600060038381548110151561113e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111bd576001820191505b808060010191505061110d565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112a85780601f1061127d576101008083540402835291602001916112a8565b820191906000526020600020905b81548152906001019060200180831161128b57829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b6060600380548060200260200160405190810160405280929190818152602001828054801561134957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116112ff575b5050505050905090565b60608060008060055460405190808252806020026020018201604052801561138a5781602001602082028038833980820191505090505b50925060009150600090505b600554811015611436578580156113cd575060008082815260200190815260200160002060030160009054906101000a900460ff16155b8061140057508480156113ff575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156114295780838381518110151561141457fe5b90602001906020020181815250506001820191505b8080600101915050611396565b8787036040519080825280602002602001820160405280156114675781602001602082028038833980820191505090505b5093508790505b868110156114b957828181518110151561148457fe5b906020019060200201518489830381518110151561149e57fe5b9060200190602002018181525050808060010191505061146e565b505050949350505050565b6060806000806003805490506040519080825280602002602001820160405280156114fe5781602001602082028038833980820191505090505b50925060009150600090505b60038054905081101561164b5760016000868152602001908152602001600020600060038381548110151561153b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561163e576003818154811015156115c257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156115fb57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b808060010191505061150a565b8160405190808252806020026020018201604052801561167a5781602001602082028038833980820191505090505b509350600090505b818110156116f957828181518110151561169857fe5b9060200190602002015184828151811015156116b057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611682565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174157600080fd5b60038054905081603282111580156117595750818111155b8015611766575060008114155b8015611773575060008214155b151561177e57600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561181a57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561187657600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156118e257600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a361199785611cdd565b5050505050565b60006119ab848484611f85565b90506119b6816117c1565b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0457600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a5d57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ab757600080fd5b600092505b600380549050831015611ba0578473ffffffffffffffffffffffffffffffffffffffff16600384815481101515611aef57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b935783600384815481101515611b4657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ba0565b8280600101935050611abc565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611d3857600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611da357600080fd5b8460008082815260200190815260200160002060030160009054906101000a900460ff16151515611dd357600080fd5b611ddc86611020565b15611f7d57600080878152602001908152602001600020945060018560030160006101000a81548160ff021916908315150217905550611efa8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015487600201805460018160011615610100020316600290049050886002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ef05780601f10611ec557610100808354040283529160200191611ef0565b820191906000526020600020905b815481529060010190602001808311611ed357829003601f168201915b50505050506120d7565b15611f3157857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611f7c565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b5b505050505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff1614151515611fae57600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201908051906020019061206d92919061212a565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b6000806040516020840160008287838a8c6187965a03f19250505080915050949350505050565b8154818355818111156121255781836000526020600020918201910161212491906121aa565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061216b57805160ff1916838001178555612199565b82800160010185558215612199579182015b8281111561219857825182559160200191906001019061217d565b5b5090506121a691906121aa565b5090565b6121cc91905b808211156121c85760008160009055506001016121b0565b5090565b905600a165627a7a72305820b0d992f257e70d565448b927a3ae764342039a864112d5d5bb1ac1bd52e4104e00290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000060000000000000000000000000cb1437200aea736788f1fc56f327c0456c3598d00000000000000000000000074dd76e24b2cfb43c1b1a4498295d553d0843746000000000000000000000000eeb4ceee443f9e0d17bdbd6daa241681ee5e51c2000000000000000000000000a005caea55375ae20e3aaef746113535503abc1900000000000000000000000090ae948bb410838bff9d024ed849df6a7267dacf000000000000000000000000740a5c5742833bed72489fe6bf7efc9b79428989" + }, + "0x1204700000000000000000000000000000000003": { + "constructor": "0x60806040523480156200001157600080fd5b50604051620024c8380380620024c883398101806040528101908080518201929190602001805190602001909291905050506000825182603282111580156200005a5750818111155b801562000068575060008114155b801562000076575060008214155b15156200008257600080fd5b600092505b8451831015620001bd57600260008685815181101515620000a457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620001335750600085848151811015156200011057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15156200013f57600080fd5b60016002600087868151811015156200015457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828060010193505062000087565b8460039080519060200190620001d5929190620001e8565b50836004819055505050505050620002bd565b82805482825590600052602060002090810192821562000264579160200282015b82811115620002635782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000209565b5b50905062000273919062000277565b5090565b620002ba91905b80821115620002b657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200027e565b5090565b90565b6121fb80620002cd6000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101e457806320ea8d86146102275780632f54bf6e146102545780633411c81c146102af57806354741525146103145780637065cb4814610363578063784547a7146103a65780638b51d13f146103eb5780639ace38c21461042c578063a0e67e2b14610517578063a8abe69a14610583578063b5dc40c314610627578063b77bf600146106a9578063ba51a6df146106d4578063c01a8c8414610701578063c64274741461072e578063d74f8edd146107d5578063dc8452cd14610800578063e20056e61461082b578063ee22610b1461088e575b6000341115610175573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34801561018357600080fd5b506101a2600480360381019080803590602001909291905050506108bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f057600080fd5b50610225600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108f9565b005b34801561023357600080fd5b5061025260048036038101908080359060200190929190505050610b92565b005b34801561026057600080fd5b50610295600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3a565b604051808215151515815260200191505060405180910390f35b3480156102bb57600080fd5b506102fa60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d5a565b604051808215151515815260200191505060405180910390f35b34801561032057600080fd5b5061034d600480360381019080803515159060200190929190803515159060200190929190505050610d89565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b506103a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e1b565b005b3480156103b257600080fd5b506103d160048036038101908080359060200190929190505050611020565b604051808215151515815260200191505060405180910390f35b3480156103f757600080fd5b5061041660048036038101908080359060200190929190505050611105565b6040518082815260200191505060405180910390f35b34801561043857600080fd5b50610457600480360381019080803590602001909291905050506111d0565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156104d95780820151818401526020810190506104be565b50505050905090810190601f1680156105065780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561052357600080fd5b5061052c6112c5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561056f578082015181840152602081019050610554565b505050509050019250505060405180910390f35b34801561058f57600080fd5b506105d06004803603810190808035906020019092919080359060200190929190803515159060200190929190803515159060200190929190505050611353565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106135780820151818401526020810190506105f8565b505050509050019250505060405180910390f35b34801561063357600080fd5b50610652600480360381019080803590602001909291905050506114c4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561069557808201518184015260208101905061067a565b505050509050019250505060405180910390f35b3480156106b557600080fd5b506106be611701565b6040518082815260200191505060405180910390f35b3480156106e057600080fd5b506106ff60048036038101908080359060200190929190505050611707565b005b34801561070d57600080fd5b5061072c600480360381019080803590602001909291905050506117c1565b005b34801561073a57600080fd5b506107bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061199e565b6040518082815260200191505060405180910390f35b3480156107e157600080fd5b506107ea6119bd565b6040518082815260200191505060405180910390f35b34801561080c57600080fd5b506108156119c2565b6040518082815260200191505060405180910390f35b34801561083757600080fd5b5061088c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119c8565b005b34801561089a57600080fd5b506108b960048036038101908080359060200190929190505050611cdd565b005b6003818154811015156108ca57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561093557600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561098e57600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610b13578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a2157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b06576003600160038054905003815481101515610a7f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610ab957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b13565b81806001019250506109eb565b6001600381818054905003915081610b2b91906120fe565b506003805490506004541115610b4a57610b49600380549050611707565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610beb57600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c5657600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff16151515610c8657600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610e1457838015610dc8575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610dfb5750828015610dfa575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610e07576001820191505b8080600101915050610d91565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5557600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610eaf57600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff1614151515610ed657600080fd5b60016003805490500160045460328211158015610ef35750818111155b8015610f00575060008114155b8015610f0d575060008214155b1515610f1857600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038590806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b6003805490508110156110fd5760016000858152602001908152602001600020600060038381548110151561105e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110dd576001820191505b6004548214156110f057600192506110fe565b808060010191505061102d565b5b5050919050565b600080600090505b6003805490508110156111ca5760016000848152602001908152602001600020600060038381548110151561113e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111bd576001820191505b808060010191505061110d565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112a85780601f1061127d576101008083540402835291602001916112a8565b820191906000526020600020905b81548152906001019060200180831161128b57829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b6060600380548060200260200160405190810160405280929190818152602001828054801561134957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116112ff575b5050505050905090565b60608060008060055460405190808252806020026020018201604052801561138a5781602001602082028038833980820191505090505b50925060009150600090505b600554811015611436578580156113cd575060008082815260200190815260200160002060030160009054906101000a900460ff16155b8061140057508480156113ff575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156114295780838381518110151561141457fe5b90602001906020020181815250506001820191505b8080600101915050611396565b8787036040519080825280602002602001820160405280156114675781602001602082028038833980820191505090505b5093508790505b868110156114b957828181518110151561148457fe5b906020019060200201518489830381518110151561149e57fe5b9060200190602002018181525050808060010191505061146e565b505050949350505050565b6060806000806003805490506040519080825280602002602001820160405280156114fe5781602001602082028038833980820191505090505b50925060009150600090505b60038054905081101561164b5760016000868152602001908152602001600020600060038381548110151561153b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561163e576003818154811015156115c257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156115fb57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b808060010191505061150a565b8160405190808252806020026020018201604052801561167a5781602001602082028038833980820191505090505b509350600090505b818110156116f957828181518110151561169857fe5b9060200190602002015184828151811015156116b057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611682565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174157600080fd5b60038054905081603282111580156117595750818111155b8015611766575060008114155b8015611773575060008214155b151561177e57600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561181a57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561187657600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156118e257600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a361199785611cdd565b5050505050565b60006119ab848484611f85565b90506119b6816117c1565b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0457600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a5d57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ab757600080fd5b600092505b600380549050831015611ba0578473ffffffffffffffffffffffffffffffffffffffff16600384815481101515611aef57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b935783600384815481101515611b4657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ba0565b8280600101935050611abc565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611d3857600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611da357600080fd5b8460008082815260200190815260200160002060030160009054906101000a900460ff16151515611dd357600080fd5b611ddc86611020565b15611f7d57600080878152602001908152602001600020945060018560030160006101000a81548160ff021916908315150217905550611efa8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015487600201805460018160011615610100020316600290049050886002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ef05780601f10611ec557610100808354040283529160200191611ef0565b820191906000526020600020905b815481529060010190602001808311611ed357829003601f168201915b50505050506120d7565b15611f3157857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611f7c565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b5b505050505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff1614151515611fae57600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201908051906020019061206d92919061212a565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b6000806040516020840160008287838a8c6187965a03f19250505080915050949350505050565b8154818355818111156121255781836000526020600020918201910161212491906121aa565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061216b57805160ff1916838001178555612199565b82800160010185558215612199579182015b8281111561219857825182559160200191906001019061217d565b5b5090506121a691906121aa565b5090565b6121cc91905b808211156121c85760008160009055506001016121b0565b5090565b905600a165627a7a72305820b0d992f257e70d565448b927a3ae764342039a864112d5d5bb1ac1bd52e4104e00290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000060000000000000000000000000cb1437200aea736788f1fc56f327c0456c3598d00000000000000000000000074dd76e24b2cfb43c1b1a4498295d553d0843746000000000000000000000000eeb4ceee443f9e0d17bdbd6daa241681ee5e51c2000000000000000000000000a005caea55375ae20e3aaef746113535503abc1900000000000000000000000090ae948bb410838bff9d024ed849df6a7267dacf000000000000000000000000740a5c5742833bed72489fe6bf7efc9b79428989" + }, + "0x120470000000000000000000000000000000000a": { + "balance": "10901790566666700000000000", + "constructor": "0x60806040523480156200001157600080fd5b50604051620024c8380380620024c883398101806040528101908080518201929190602001805190602001909291905050506000825182603282111580156200005a5750818111155b801562000068575060008114155b801562000076575060008214155b15156200008257600080fd5b600092505b8451831015620001bd57600260008685815181101515620000a457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620001335750600085848151811015156200011057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15156200013f57600080fd5b60016002600087868151811015156200015457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550828060010193505062000087565b8460039080519060200190620001d5929190620001e8565b50836004819055505050505050620002bd565b82805482825590600052602060002090810192821562000264579160200282015b82811115620002635782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000209565b5b50905062000273919062000277565b5090565b620002ba91905b80821115620002b657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016200027e565b5090565b90565b6121fb80620002cd6000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101e457806320ea8d86146102275780632f54bf6e146102545780633411c81c146102af57806354741525146103145780637065cb4814610363578063784547a7146103a65780638b51d13f146103eb5780639ace38c21461042c578063a0e67e2b14610517578063a8abe69a14610583578063b5dc40c314610627578063b77bf600146106a9578063ba51a6df146106d4578063c01a8c8414610701578063c64274741461072e578063d74f8edd146107d5578063dc8452cd14610800578063e20056e61461082b578063ee22610b1461088e575b6000341115610175573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b005b34801561018357600080fd5b506101a2600480360381019080803590602001909291905050506108bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f057600080fd5b50610225600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108f9565b005b34801561023357600080fd5b5061025260048036038101908080359060200190929190505050610b92565b005b34801561026057600080fd5b50610295600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3a565b604051808215151515815260200191505060405180910390f35b3480156102bb57600080fd5b506102fa60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d5a565b604051808215151515815260200191505060405180910390f35b34801561032057600080fd5b5061034d600480360381019080803515159060200190929190803515159060200190929190505050610d89565b6040518082815260200191505060405180910390f35b34801561036f57600080fd5b506103a4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e1b565b005b3480156103b257600080fd5b506103d160048036038101908080359060200190929190505050611020565b604051808215151515815260200191505060405180910390f35b3480156103f757600080fd5b5061041660048036038101908080359060200190929190505050611105565b6040518082815260200191505060405180910390f35b34801561043857600080fd5b50610457600480360381019080803590602001909291905050506111d0565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183151515158152602001828103825284818151815260200191508051906020019080838360005b838110156104d95780820151818401526020810190506104be565b50505050905090810190601f1680156105065780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b34801561052357600080fd5b5061052c6112c5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561056f578082015181840152602081019050610554565b505050509050019250505060405180910390f35b34801561058f57600080fd5b506105d06004803603810190808035906020019092919080359060200190929190803515159060200190929190803515159060200190929190505050611353565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106135780820151818401526020810190506105f8565b505050509050019250505060405180910390f35b34801561063357600080fd5b50610652600480360381019080803590602001909291905050506114c4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561069557808201518184015260208101905061067a565b505050509050019250505060405180910390f35b3480156106b557600080fd5b506106be611701565b6040518082815260200191505060405180910390f35b3480156106e057600080fd5b506106ff60048036038101908080359060200190929190505050611707565b005b34801561070d57600080fd5b5061072c600480360381019080803590602001909291905050506117c1565b005b34801561073a57600080fd5b506107bf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061199e565b6040518082815260200191505060405180910390f35b3480156107e157600080fd5b506107ea6119bd565b6040518082815260200191505060405180910390f35b34801561080c57600080fd5b506108156119c2565b6040518082815260200191505060405180910390f35b34801561083757600080fd5b5061088c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119c8565b005b34801561089a57600080fd5b506108b960048036038101908080359060200190929190505050611cdd565b005b6003818154811015156108ca57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561093557600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561098e57600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610b13578273ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a2157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b06576003600160038054905003815481101515610a7f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610ab957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b13565b81806001019250506109eb565b6001600381818054905003915081610b2b91906120fe565b506003805490506004541115610b4a57610b49600380549050611707565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a2505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610beb57600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c5657600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff16151515610c8657600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35050505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610e1457838015610dc8575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610dfb5750828015610dfa575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610e07576001820191505b8080600101915050610d91565b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e5557600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610eaf57600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff1614151515610ed657600080fd5b60016003805490500160045460328211158015610ef35750818111155b8015610f00575060008114155b8015610f0d575060008214155b1515610f1857600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038590806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b6000806000809150600090505b6003805490508110156110fd5760016000858152602001908152602001600020600060038381548110151561105e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110dd576001820191505b6004548214156110f057600192506110fe565b808060010191505061102d565b5b5050919050565b600080600090505b6003805490508110156111ca5760016000848152602001908152602001600020600060038381548110151561113e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111bd576001820191505b808060010191505061110d565b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015490806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112a85780601f1061127d576101008083540402835291602001916112a8565b820191906000526020600020905b81548152906001019060200180831161128b57829003601f168201915b5050505050908060030160009054906101000a900460ff16905084565b6060600380548060200260200160405190810160405280929190818152602001828054801561134957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116112ff575b5050505050905090565b60608060008060055460405190808252806020026020018201604052801561138a5781602001602082028038833980820191505090505b50925060009150600090505b600554811015611436578580156113cd575060008082815260200190815260200160002060030160009054906101000a900460ff16155b8061140057508480156113ff575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b156114295780838381518110151561141457fe5b90602001906020020181815250506001820191505b8080600101915050611396565b8787036040519080825280602002602001820160405280156114675781602001602082028038833980820191505090505b5093508790505b868110156114b957828181518110151561148457fe5b906020019060200201518489830381518110151561149e57fe5b9060200190602002018181525050808060010191505061146e565b505050949350505050565b6060806000806003805490506040519080825280602002602001820160405280156114fe5781602001602082028038833980820191505090505b50925060009150600090505b60038054905081101561164b5760016000868152602001908152602001600020600060038381548110151561153b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561163e576003818154811015156115c257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156115fb57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b808060010191505061150a565b8160405190808252806020026020018201604052801561167a5781602001602082028038833980820191505090505b509350600090505b818110156116f957828181518110151561169857fe5b9060200190602002015184828151811015156116b057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611682565b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174157600080fd5b60038054905081603282111580156117595750818111155b8015611766575060008114155b8015611773575060008214155b151561177e57600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a1505050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561181a57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561187657600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156118e257600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a361199785611cdd565b5050505050565b60006119ab848484611f85565b90506119b6816117c1565b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0457600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611a5d57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ab757600080fd5b600092505b600380549050831015611ba0578473ffffffffffffffffffffffffffffffffffffffff16600384815481101515611aef57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b935783600384815481101515611b4657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ba0565b8280600101935050611abc565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25050505050565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611d3857600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611da357600080fd5b8460008082815260200190815260200160002060030160009054906101000a900460ff16151515611dd357600080fd5b611ddc86611020565b15611f7d57600080878152602001908152602001600020945060018560030160006101000a81548160ff021916908315150217905550611efa8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015487600201805460018160011615610100020316600290049050886002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611ef05780601f10611ec557610100808354040283529160200191611ef0565b820191906000526020600020905b815481529060010190602001808311611ed357829003601f168201915b50505050506120d7565b15611f3157857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611f7c565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b5b505050505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff1614151515611fae57600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201908051906020019061206d92919061212a565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a2509392505050565b6000806040516020840160008287838a8c6187965a03f19250505080915050949350505050565b8154818355818111156121255781836000526020600020918201910161212491906121aa565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061216b57805160ff1916838001178555612199565b82800160010185558215612199579182015b8281111561219857825182559160200191906001019061217d565b5b5090506121a691906121aa565b5090565b6121cc91905b808211156121c85760008160009055506001016121b0565b5090565b905600a165627a7a72305820b0d992f257e70d565448b927a3ae764342039a864112d5d5bb1ac1bd52e4104e00290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000060000000000000000000000000cb1437200aea736788f1fc56f327c0456c3598d00000000000000000000000074dd76e24b2cfb43c1b1a4498295d553d0843746000000000000000000000000eeb4ceee443f9e0d17bdbd6daa241681ee5e51c2000000000000000000000000a005caea55375ae20e3aaef746113535503abc1900000000000000000000000090ae948bb410838bff9d024ed849df6a7267dacf000000000000000000000000740a5c5742833bed72489fe6bf7efc9b79428989" + }, + "0x0cB1437200aea736788f1Fc56F327c0456c3598D": { + "balance": "250000000000000000" + }, + "0x74dd76E24B2CFB43C1b1a4498295d553D0843746": { + "balance": "250000000000000000" + }, + "0xeeB4CEEe443F9e0D17BdBD6Daa241681EE5E51c2": { + "balance": "250000000000000000" + }, + "0xA005caEa55375ae20e3aAEF746113535503ABC19": { + "balance": "250000000000000000" + }, + "0x90ae948bB410838bff9D024ed849dF6A7267Dacf": { + "balance": "250000000000000000" + }, + "0x740a5C5742833bEd72489fE6bf7EFc9B79428989": { + "balance": "250000000000000000" + }, + "0x1204700000000000000000000000000000000001": { + "constructor": "0x60806040523480156200001157600080fd5b5060405162002d7138038062002d71833981018060405260608110156200003757600080fd5b81019080805190602001909291908051906020019092919080516401000000008111156200006457600080fd5b828101905060208101848111156200007b57600080fd5b81518560208202830111640100000000821117156200009957600080fd5b5050929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002d216024913960400191505060405180910390fd5b60018151101562000242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018062002d45602c913960400191505060405180910390fd5b62000253836200046160201b60201c565b6200026482620005c360201b60201c565b60008090505b81518110156200040e57600073ffffffffffffffffffffffffffffffffffffffff168282815181106200029957fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156200032c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f56616c696461746f7220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b6001600360008484815181106200033f57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836003811115620003a057fe5b02179055508060036000848481518110620003b757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555080806001019150506200026a565b508060029080519060200190620004279291906200064a565b50600260019080546200043c929190620006d9565b506001600060146101000a81548160ff02191690831515021790555050505062000776565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe8ec518081a7aa1fc5d586a5443a858ab130be8b8e39b545172c879a7e242c6b60405160405180910390a250565b828054828255906000526020600020908101928215620006c6579160200282015b82811115620006c55782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200066b565b5b509050620006d5919062000730565b5090565b8280548282559060005260206000209081019282156200071d5760005260206000209182015b828111156200071c578254825591600101919060010190620006ff565b5b5090506200072c919062000730565b5090565b6200077391905b808211156200076f57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000737565b5090565b90565b61259b80620007866000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80639f723637116100b8578063b98049091161007c578063b980490914610562578063bd21442a146105be578063c805f68b14610681578063d826b7f1146106c5578063f2fde38b14610733578063f3aeac021461077757610137565b80639f723637146103dc578063a00745b61461043b578063a6940b0714610497578063b3f05b97146104e1578063b7ab4db51461050357610137565b8063455701d6116100ff578063455701d6146102c35780634d238c8e1461032257806375286211146103665780638da5cb5b146103705780638f32d59b146103ba57610137565b8063267fa41d1461013c57806334ba3c1b1461019857806340550a1c146101b657806340a141ff146102125780634183495514610256575b600080fd5b61017e6004803603602081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107d3565b604051808215151515815260200191505060405180910390f35b6101a0610845565b6040518082815260200191505060405180910390f35b6101f8600480360360208110156101cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610852565b604051808215151515815260200191505060405180910390f35b6102546004803603602081101561022857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610933565b005b6102986004803603602081101561026c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a7e565b604051808360038111156102a857fe5b60ff1681526020018281526020019250505060405180910390f35b6102cb610aaf565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561030e5780820151818401526020810190506102f3565b505050509050019250505060405180910390f35b6103646004803603602081101561033857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b3d565b005b61036e610d47565b005b6103786111b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103c26111db565b604051808215151515815260200191505060405180910390f35b6103e4611232565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561042757808201518184015260208101905061040c565b505050509050019250505060405180910390f35b61047d6004803603602081101561045157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611361565b604051808215151515815260200191505060405180910390f35b61049f611442565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104e9611468565b604051808215151515815260200191505060405180910390f35b61050b61147b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561054e578082015181840152602081019050610533565b505050509050019250505060405180910390f35b6105a46004803603602081101561057857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611509565b604051808215151515815260200191505060405180910390f35b61067f600480360360808110156105d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561063b57600080fd5b82018360208201111561064d57600080fd5b8035906020019184600183028401116401000000008311171561066f57600080fd5b909192939192939050505061157a565b005b6106c36004803603602081101561069757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117d6565b005b610731600480360360608110156106db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611989565b005b6107756004803603602081101561074957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be3565b005b6107b96004803603602081101561078d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c69565b604051808215151515815260200191505060405180910390f35b6000600160038111156107e257fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561083d57fe5b149050919050565b6000600180549050905090565b60006001600381111561086157fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156108bc57fe5b148061092c57506003808111156108cf57fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561092a57fe5b145b9050919050565b61093b6111db565b6109ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600060149054906101000a900460ff16610a12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124e16022913960400191505060405180910390fd5b80610a1c81610852565b610a71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124bf6022913960400191505060405180910390fd5b610a7a82611cdb565b5050565b60036020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60606002805480602002602001604051908101604052809291908181526020018280548015610b3357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610ae9575b5050505050905090565b610b456111db565b610bb7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600060149054906101000a900460ff16610c1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124e16022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f56616c696461746f7220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b610cc881610852565b15610d3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f546869732076616c696461746f7220697320616c72656164792061637469766581525060200191505060405180910390fd5b610d4481611f2e565b50565b600060149054906101000a900460ff1615610dca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f56616c696461746f72207365742069732066696e616c697a656400000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f74207468652052656c617920636f6e747261637481525060200191505060405180910390fd5b6001600060146101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610fbe57600060036000600260016002805490500381548110610f1a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160000160006101000a81548160ff02191690836003811115610fa257fe5b02179055506001600280549050038160010181905550506110f1565b600060036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083600381111561103f57fe5b0217905550600060036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6002600190805461110392919061238d565b507f8564cd629b15f47dc310d45bcbfc9bcf5420b0d51bf0659a16c67f91d27632536001604051808060200182810382528381815481526020019150805480156111a257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611158575b50509250505060405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060018054905060028054905011156112d45760028054806020026020016040519081016040528092919081815260200182805480156112c857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161127e575b5050505050905061135e565b600180548060200260200160405190810160405280929190818152602001828054801561135657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161130c575b505050505090505b90565b60006002600381111561137057fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156113cb57fe5b148061143b57506003808111156113de57fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561143957fe5b145b9050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1681565b606060018054806020026020016040519081016040528092919081815260200182805480156114ff57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116114b5575b5050505050905090565b600060038081111561151757fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561157257fe5b149050919050565b8461158481610852565b6115d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124bf6022913960400191505060405180910390fd5b846115e381610852565b611638576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124bf6022913960400191505060405180910390fd5b844381106116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f426c6f636b206e756d626572206973206e6f742076616c69640000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611771576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f74207468652052656c617920636f6e747261637481525060200191505060405180910390fd5b858773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f729a19138e072a5a8d3a56d74ae0b5c84530f09aacd6e12b24c5b2fdc3f8a3d060405160405180910390a45050505050505050565b6117de6111db565b611850576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806124746024913960400191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561197d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806125036040913960400191505060405180910390fd5b61198681612003565b50565b8261199381610852565b6119e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124bf6022913960400191505060405180910390fd5b826119f281610852565b611a47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124bf6022913960400191505060405180910390fd5b82438110611abd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f426c6f636b206e756d626572206973206e6f742076616c69640000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f74207468652052656c617920636f6e747261637481525060200191505060405180910390fd5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fbc459bd9db54016b1966d0fe812bbe0a82cd627ae3eacd01727dc63a432ca41b60405160405180910390a4505050505050565b611beb6111db565b611c5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b611c668161208a565b50565b600060026003811115611c7857fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff166003811115611cd357fe5b149050919050565b600160028054905011611d39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806124986027913960400191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905060006001600280549050039050600060028281548110611d9c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060028481548110611dd757fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506002805480919060019003611e7b91906123df565b5060038060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836003811115611eda57fe5b021790555083600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f286121eb565b50505050565b6002600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836003811115611f8d57fe5b021790555060028190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506120006121eb565b50565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe8ec518081a7aa1fc5d586a5443a858ab130be8b8e39b545172c879a7e242c6b60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060146101000a81548160ff021916908315150217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a084718a600143034060026040518363ffffffff1660e01b8152600401808381526020018060200182810382528381815481526020019150805480156122da57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612290575b50509350505050602060405180830381600087803b1580156122fb57600080fd5b505af115801561230f573d6000803e3d6000fd5b505050506040513d602081101561232557600080fd5b810190808051906020019092919050505061238b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180612543602d913960400191505060405180910390fd5b565b8280548282559060005260206000209081019282156123ce5760005260206000209182015b828111156123cd5782548255916001019190600101906123b2565b5b5090506123db919061240b565b5090565b81548183558181111561240657818360005260206000209182019101612405919061244e565b5b505050565b61244b91905b8082111561244757600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612411565b5090565b90565b61247091905b8082111561246c576000816000905550600101612454565b5090565b9056fe52656c617920636f6e747261637420616464726573732063616e6e6f74206265203078305468657265206d757374206265206174206c6561737420312076616c696461746f72206c65667441646472657373206973206e6f7420616e206163746976652076616c696461746f7256616c696461746f7220736574206973206e6f742066696e616c697a6564207965744e65772072656c617920636f6e747261637420616464726573732063616e6e6f74206265207468652073616d65206173207468652063757272656e74206f6e6552656c617920636f6e747261637420496e6974696174654368616e67652063616c6c6261636b206661696c6564a165627a7a72305820f9ae418c0431b0892a4b904426be15d82d8486d433a3d6b9814bd5d1a377bb30002952656c617920636f6e747261637420616464726573732063616e6e6f74206265203078305468657265206d757374206265206174206c6561737420312076616c696461746f7220696e697469616c6c790000000000000000000000001204700000000000000000000000000000000005000000000000000000000000120470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000003000000000000000000000000d65b4c25a4ce1e024ff13425df1e0e574a1a0e9b00000000000000000000000083329c3fd90d7ee2efd546e0dc6453e9172a0643000000000000000000000000de15831ac319dab5eae5fd1fd9d52876c5e50f20" + }, + "0x1204700000000000000000000000000000000000": { + "constructor": "0x608060405273fffffffffffffffffffffffffffffffffffffffe600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006557600080fd5b506040516040806114d48339810180604052604081101561008557600080fd5b810190808051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361016b8261018160201b60201c565b61017a816102e260201b60201c565b50506104f4565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610386576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f416464726573732063616e6e6f7420626520307830000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561042d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806114926042913960600191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4fea88aaf04c303804bb211ecc32a00ac8e5f0656bb854cad8a4a2e438256b7460405160405180910390a3505050565b610f8f806105036000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063b7ab4db511610071578063b7ab4db514610209578063bd96567714610268578063c476dd40146102ac578063d3e848f11461034f578063d69f13bb14610399578063f2fde38b146103e7576100a9565b806375286211146100ae5780638da5cb5b146100b85780638f32d59b14610102578063a084718a14610124578063ae3783d6146101bf575b600080fd5b6100b661042b565b005b6100c0610572565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61010a61059b565b604051808215151515815260200191505060405180910390f35b6101a56004803603604081101561013a57600080fd5b81019080803590602001909291908035906020019064010000000081111561016157600080fd5b82018360208201111561017357600080fd5b8035906020019184602083028401116401000000008311171561019557600080fd5b90919293919293905050506105f2565b604051808215151515815260200191505060405180910390f35b6101c761070c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610211610732565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610254578082015181840152602081019050610239565b505050509050019250505060405180910390f35b6102aa6004803603602081101561027e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610832565b005b61034d600480360360608110156102c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561030957600080fd5b82018360208201111561031b57600080fd5b8035906020019184600183028401116401000000008311171561033d57600080fd5b90919293919293905050506108b8565b005b6103576109e7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103e5600480360360408110156103af57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a0d565b005b610429600480360360208110156103fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b06565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53656e646572206973206e6f742073797374656d00000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663752862116040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561055857600080fd5b505af115801561056c573d6000803e3d6000fd5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610f426022913960400191505060405180910390fd5b837f55252fa6eee4741b4e24a74a70e9c11fd2c2281df8d6ea13126ff845f7825c89848460405180806020018281038252848482818152602001925060200280828437600081840152601f19601f820116905080830192505050935050505060405180910390a2600190509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7ab4db56040518163ffffffff1660e01b815260040160006040518083038186803b15801561079c57600080fd5b505afa1580156107b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156107da57600080fd5b8101908080516401000000008111156107f257600080fd5b8281019050602081018481111561080857600080fd5b815185602082028301116401000000008211171561082557600080fd5b5050929190505050905090565b61083a61059b565b6108ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b6108b581610b8c565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd21442a33868686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109c957600080fd5b505af11580156109dd573d6000803e3d6000fd5b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d826b7f13384846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610aea57600080fd5b505af1158015610afe573d6000803e3d6000fd5b505050505050565b610b0e61059b565b610b80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b610b8981610d9e565b50565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f416464726573732063616e6e6f7420626520307830000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526042815260200180610f006042913960600191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4fea88aaf04c303804bb211ecc32a00ac8e5f0656bb854cad8a4a2e438256b7460405160405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fe4e65772072656c6179656420636f6e747261637420616464726573732063616e6e6f74206265207468652073616d65206173207468652063757272656e74206f6e6553656e646572206973206e6f74207468652052656c6179656420636f6e7472616374a165627a7a723058204045b88d4bc25183a0d657cfec6f8f8b976fd6aca20ab02e07cc6d76f43e7bd100294e65772072656c6179656420636f6e747261637420616464726573732063616e6e6f74206265207468652073616d65206173207468652063757272656e74206f6e6500000000000000000000000012047000000000000000000000000000000000050000000000000000000000001204700000000000000000000000000000000001" + }, + "0x1204700000000000000000000000000000000002": { + "constructor": "0x608060405273fffffffffffffffffffffffffffffffffffffffe600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b5060405160408062001bad833981018060405260408110156200008857600080fd5b810190808051906020019092919080519060200190929190505050620000b36200016360201b60201c565b60786000805490501462000113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018062001b866027913960400191505060405180910390fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a81905550505062000878565b60405180610f0001604052806704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704395680a6af46808152602001670438cfa9de4a0e808152602001670437eeee904c06808152602001670436b44ebcb52e8081526020016704351fca638586808152602001670433316184bd0e808152602001670430e914205bc680815260200167042e46e23661ae80815260200167042b4acbc6cec6808152602001670427f4d0d1a30e80815260200167042444f156de868081526020016704203b2d56812e80815260200167041bd784d08b0680815260200167041719f7c4fc0e808152602001670412028633d44680815260200167040c91301d13ae808152602001670406c5f580ba46808152602001670400a0d65ec80e8081526020016703fa21d2b73d068081526020016703f348ea8a192e8081526020016703ec161dd75c868081526020016703e4896c9f070e8081526020016703dca2d6e118c68081526020016703d4625c9d91ae8081526020016703cbc7fdd471c68081526020016703c2d3ba85b90e8081526020016703b98592b167868081526020016703afdd86577d2e8081526020016703a5db9577fa0680815260200167039b7fc012de0e808152602001670390ca06282946808152602001670385ba67b7dbae80815260200167037a50e4c1f54680815260200167036e8d7d46760e8081526020016703627031455e06808152602001670355f900bead2e80815260200167034927ebb2638680815260200167033bfcf220810e80815260200167032e78140905c680815260200167032099516bf1ae80815260200167031260aa4944c6808152602001670303ce1ea0ff0e8081526020016702f4e1ae7320868081526020016702e59b59bfa92e8081526020016702d5fb208699068081526020016702c60102c7f00e8081526020016702b5ad0083ae468081526020016702a4ff19b9d3ae808152602001670293f74e6a6046808152602001670282959e95540e808152602001670270da0a3aaf0680815260200167025ec4915a712e80815260200167024c5533f49a86808152602001670238da1d6b04400081526020016702260c5cdf4d240081526020016702138f83989f90008152602001670201639196fb840081526020016701ef8886da61000081526020016701ddfe6362d0040081526020016701ccc5273048900081526020016701bbdcd242caa40081526020016701ab45649a564000815260200167019afede36eb6400815260200167018b093f188a1000815260200167017b64873f324400815260200167016c10b6aae40000815260200167015d0dcd5b9f4400815260200167014e5bcb51641000815260200167013ffab08c3264008152602001670131ea7d0c0a400081526020016701242b30d0eba4008152602001670116bccbdad6900081526020016701099f4e29cb0400815260200166fcd2b7bdc90000815260200166f0570896d08400815260200166e42c40b4e19000815260200166d8526017fc2400815260200166ccc966c0204000815260200166c19154ad4de400815260200166b6aa29df851000815260200166ac13e656c5c400815260200166a1ce8a1310000081526020016697da151463c4008152602001668e36875ac1100081526020016684e3e0e627e4008152602001667be221b6984000815260200166733149cc1224008152602001666ad1592695900081526020016662c24fc62284008152602001665b042daab900008152602001665396f2d45904008152602001664c7a9f4302900081526020016645af32f6b5a4008152602001663f34adef724000815260200166390b102d386400815260200166333259b00810008152602001662daa8a77e144008152602001662873a284c40000815260200166238da1d6b044008152602001661ef8886da610008152602001661ab45649a5640081526020016616c10b6aae4000815260200166131ea7d0c0a4008152602001660fcd2b7bdc90008152602001660ccc966c0204008152602001660a1ce8a131000081526020016607be221b69840081526020016605b042daab900081526020016603f34adef7240081526020016602873a284c4000815260200166016c10b6aae400815260200165a1ce8a1310008152602001652873a284c4008152506000906078620007e5929190620007fe565b5062080520600181905550607860015402600281905550565b8280548282559060005260206000209081019282156200083d579160200282015b828111156200083c5782518255916020019190600101906200081f565b5b5090506200084c919062000850565b5090565b6200087591905b808211156200087157600081600090555060010162000857565b5090565b90565b6112fe80620008886000396000f3fe608060405234801561001057600080fd5b50600436106101205760003560e01c80634476d66a116100ad57806394f7f62b1161007157806394f7f62b1461045d578063df6a50301461049f578063e6e100db146104bd578063f91c289814610515578063fb1ac5251461068057610120565b80634476d66a146103515780634f4013fb14610393578063553a5c85146103b157806358ceb672146103cf57806360d4b8be146103d957610120565b80631a488047116100f45780631a488047146101f157806330f6eb161461020f57806333ea51a81461027157806337339a16146102b55780633d84b8c1146102f957610120565b8062f380f414610125578063078d8e7a1461016f5780630f411cdb1461019157806318129375146101af575b600080fd5b61012d61069e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101776106c4565b604051808215151515815260200191505060405180910390f35b6101996106d4565b6040518082815260200191505060405180910390f35b6101db600480360360208110156101c557600080fd5b81019080803590602001909291905050506106da565b6040518082815260200191505060405180910390f35b6101f96106fb565b6040518082815260200191505060405180910390f35b61025b6004803603604081101561022557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610701565b6040518082815260200191505060405180910390f35b6102b36004803603602081101561028757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610726565b005b6102f7600480360360208110156102cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107a7565b005b61033b6004803603602081101561030f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108ae565b6040518082815260200191505060405180910390f35b61037d6004803603602081101561036757600080fd5b81019080803590602001909291905050506108c6565b6040518082815260200191505060405180910390f35b61039b6108de565b6040518082815260200191505060405180910390f35b6103b96108e3565b6040518082815260200191505060405180910390f35b6103d76108e9565b005b61041b600480360360208110156103ef57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061094d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104896004803603602081101561047357600080fd5b8101908080359060200190929190505050610980565b6040518082815260200191505060405180910390f35b6104a76109c4565b6040518082815260200191505060405180910390f35b6104ff600480360360208110156104d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ca565b6040518082815260200191505060405180910390f35b6105e16004803603604081101561052b57600080fd5b810190808035906020019064010000000081111561054857600080fd5b82018360208201111561055a57600080fd5b8035906020019184602083028401116401000000008311171561057c57600080fd5b90919293919293908035906020019064010000000081111561059d57600080fd5b8201836020820111156105af57600080fd5b803590602001918460208302840111640100000000831117156105d157600080fd5b90919293919293905050506109e2565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561062857808201518184015260208101905061060d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561066a57808201518184015260208101905061064f565b5050505090500194505050505060405180910390f35b610688610edb565b6040518082815260200191505060405180910390f35b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106cf43610ee1565b905090565b60025481565b600081815481106106e757fe5b906000526020600020016000915090505481565b600a5481565b6008602052816000526040600020602052806000526040600020600091509150505481565b80600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f742074686520636f6d6d756e6974792066756e6481525060200191505060405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915090505481565b60076020528060005260406000206000915090505481565b607881565b60035481565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061098b82610ee1565b1561099957600090506109bf565b600060015483816109a657fe5b04815481106109b157fe5b906000526020600020015490505b919050565b60045481565b60056020528060005260406000206000915090505481565b606080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aa8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c6572206973206e6f74207468652073797374656d000000000000000081525060200191505060405180910390fd5b838390508686905014610b06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806112ae6025913960400191505060405180910390fd5b60018686905014610b7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f42656e65666163746f7273206c697374206c656e677468206973206e6f74203181525060200191505060405180910390fd5b600084846000818110610b8e57fe5b9050602002013561ffff1661ffff1614610bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061128c6022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1686866000818110610c1857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610c5c5750610c5b43610ee1565b5b15610cd2576000604051908082528060200260200182016040528015610c915781602001602082028038833980820191505090505b506000604051908082528060200260200182016040528015610cc25781602001602082028038833980820191505090505b5081915080905091509150610ed2565b60606002604051908082528060200260200182016040528015610d045781602001602082028038833980820191505090505b50905060608151604051908082528060200260200182016040528015610d395781602001602082028038833980820191505090505b509050610d6e88886000818110610d4c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16610ef0565b82600081518110610d7b57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610dbe43610980565b81600081518110610dcb57fe5b602002602001018181525050610e02600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ef0565b82600181518110610e0f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5481600181518110610e5957fe5b602002602001018181525050610e9782600081518110610e7557fe5b602002602001015182600081518110610e8a57fe5b6020026020010151610f9d565b610ec982600181518110610ea757fe5b602002602001015182600181518110610ebc57fe5b6020026020010151611145565b81819350935050505b94509492505050565b60015481565b60006002548210159050919050565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f935782915050610f98565b809150505b919050565b61100081600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060004381526020019081526020016000205461120390919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000438152602001908152602001600020819055506110a681600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120390919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061110f81600760004381526020019081526020016000205461120390919063ffffffff16565b600760004381526020019081526020016000208190555061113b8160035461120390919063ffffffff16565b6003819055505050565b61115a8160045461120390919063ffffffff16565b6004819055506111b281600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461120390919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111ff8282610f9d565b5050565b600080828401905083811015611281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f766572666c6f77206572726f7200000000000000000000000000000000000081525060200191505060405180910390fd5b809150509291505056fe42656e65666163746f72206973206e6f742074686520626c6f636b20617574686f7242656e65666163746f72732f7479706573206c697374206c656e6774682064696666657273a165627a7a72305820ef1c2590551666e2ac227034529ee69c33ec91868d23c0a0a887d514094ec6030029526577617264206375727665206973206e6f7420746865207265717569726564206c656e67746800000000000000000000000012047000000000000000000000000000000000030000000000000000000000000000000000000000000000000856d3dfb6e26d00" + }, + "0x1204700000000000000000000000000000000004": { + "balance": "41198207933333333690000000", + "constructor": "0x608060405260006001556a22140f53c2d216263ba2803073ffffffffffffffffffffffffffffffffffffffff16311462000085576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806200150b6023913960400191505060405180910390fd5b620000956200010260201b60201c565b6a22140f53c2d216263ba28060015414620000fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180620014ba6028913960400191505060405180910390fd5b62001133565b62000136722d4606b65c033769968bcdc63881b90b0853f569264876ff9c85a7a8ee00635df22bc06200105960201b60201c565b6200016a726e371c454a2d081f3966c180ba2c6165d87de66901c3c03b52c63f027880635df22bc06200105960201b60201c565b6200019e72c2f65230815d30eaa1a4d057bcf0b72fe3cc4e6902a5a058fc295ed00000635df22bc06200105960201b60201c565b620001d37303cccdc799d4dc37d56e3f9dba7f9c210fa1086f6902a5a058fc295ed00000635df22bc06200105960201b60201c565b6200020873047d955877a55fbdac768573a9259f29b103a0666902a5a058fc295ed00000635df22bc06200105960201b60201c565b6200023d7306920bb91f7027176cf373996d39b539ba436d876969e10de76676d0800000635d79dee06200105960201b60201c565b620002727306fdb93aa64f33a8fb40a36c462a3f7a074d632c6901c3c03b52c63f027880635df22bc06200105960201b60201c565b620002a7730ad7ba4af33b485e6f2505c417554631a3e5643f6902a5a058fc295ed00000635df22bc06200105960201b60201c565b620002dc730dd959deb4c458cc2ac379898bf2c99f7a8f399b6901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000311731153818a2eb49f0a71b27313c32814fc02e4db50694220bb939da668600000635df22bc06200105960201b60201c565b6200034773120470000000000000000000000000000000000a6a084595161401484a000000635d79dee06200105960201b60201c565b6200037c7315696134ebeed360dc90dc97ddd00bd07e1c11e96934f086f3b33b68400000635df22bc06200105960201b60201c565b620003b1731f0c30b1aa4c468b5beb02bac8df8f27617a2296692346646590efbaf71200635df22bc06200105960201b60201c565b620003e6732540ded041b6fedc0ff6f0cf26b891ec97c954006901c3c03b52c63f027880635df22bc06200105960201b60201c565b6200041b7325ae7b45d8646580dfcae403d29164729eb8642f691a784379d99db4200000635df22bc06200105960201b60201c565b6200045073349ebc5a6e853df121c84e999081e5992928e64f6934f086f3b33b68400000635df22bc06200105960201b60201c565b62000485733885d15573e45228dd54cd4fde9bfac64d702ed46901c3c03b52c63f027880635df22bc06200105960201b60201c565b620004ba733a9d83766c03c465851a38daa364ef7deccd1ece6934f086f3b33b68400000635df22bc06200105960201b60201c565b620004ef733abaa3f24428d6028f5a7fc5b18ce9d04ccec2296902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000524733c9f867d9b3a595987e198786fa9ab722e5c2f9b6934f086f3b33b68400000635df22bc06200105960201b60201c565b62000559733f11b4ad17fde4695cad64e109ae92a679d87bfc6969e10de76676d0800000635d79dee06200105960201b60201c565b6200058e733f12af735238c6e2fa45efb5b2f3fae82df4c9226901c3c03b52c63f027880635df22bc06200105960201b60201c565b620005c373404bb9c13364522133b363d5c4adb7a88056b19d6902d2cd2bb7a39658b500635df22bc06200105960201b60201c565b620005f873428ab4b019ee3a9b9863b2b4bf1885ce6dff9a736902a5a058fc295ed00000635df22bc06200105960201b60201c565b6200062d7347428fc08e56388372e7c81ad4a1140d932d10966969e10de76676d0800000635d79dee06200105960201b60201c565b620006627348ee57faf61c0b963113e7921e6173629e6bc4436902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000697734d0aa1c3459bf41e3ad4e4f40bbf029cb5723d836934f086f3b33b68400000635df22bc06200105960201b60201c565b620006cc7357f33efad76d4b783cf42c9e6cb08f4425dfe96e6902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000701735b3fb4e1d6040615f3e681bec4c80b5d7c9580716901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000736735fbb9c482034d287c5b3848fc2f9272abdd5bfa26903878076a58c80674b00635df22bc06200105960201b60201c565b6200076b73656e5569bef7781bf0db199d32027766053501ff69438ec266600555e00000635df22bc06200105960201b60201c565b620007a073664f991cdb2ffe6b6a568ede65b0208dbcce6f72691a784379d99db4200000635df22bc06200105960201b60201c565b620007d67369af0912dd44dce2b2373db4021788cbad84ff356a0422ca8b0a00a4250000006360c3f9006200105960201b60201c565b6200080b736a0a5da2a48ea87c2a906c53b3373642c29a4b6c6934f086f3b33b68400000635df22bc06200105960201b60201c565b62000840736cf32cc52e220c023c2d92b1d62310f46a6e2a136901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000875736d516767e4068fc331bdb331fba7578bdb07a68c69234b04a2777d0408ee00635df22bc06200105960201b60201c565b620008aa736dd10e41a7a84fe23ab35fefa2f46c9895f87a2d693c8c4bde2deef1680000635df22bc06200105960201b60201c565b620008df737030892dbf9c2048e796296dda597f145754a1856969e10de76676d0800000635d79dee06200105960201b60201c565b62000914737ed62cf71d519d3bf293ef90829508f92f4ccccb6902a5a058fc295ed00000635df22bc06200105960201b60201c565b6200094a73871ba4266793ad11da537d4857de7ad49eab662b6a017293b0a9e69fd9c00000635df22bc06200105960201b60201c565b6200097f73880e8b0ece0171edd0247f8d13d348d77a6b9b296903878076a58c80674b00635df22bc06200105960201b60201c565b620009b373887f2b16847248bc757b69f3c695f24ff344daf268e9062e03b5c2908780635df22bc06200105960201b60201c565b620009e8738c994ada51d35b8519424368807fb99c103366866969e10de76676d0800000635d79dee06200105960201b60201c565b62000a1d739196e46d664ceda55cb45a2cc5ab5bd1b7e614e26902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000a5273943c85b13f24083ec73815f7ba763b7c42ae02886902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000a87739467b762550673f08b14423f8562048d5e3694226902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000abc73949423db1bfee1ddec99c9d24a12a6ea27cb34896901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000af17396a5eb172efdf262ed6beaaf0e20c6af71831fc96934f086f3b33b68400000635df22bc06200105960201b60201c565b62000b2673a69dca0814eaadc89b6dbe94c5e2110497690f6c6903878076a58c80674b00635df22bc06200105960201b60201c565b62000b5b73a720a8ee90f5013cae9bf7bcac1d153e42815454691a784379d99db4200000635df22bc06200105960201b60201c565b62000b9073b080454f190e76eb8e719560fa8cae50c71bcea96901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000bc573b476ee7d610dae7b23b671ebc7bd6112e97729696902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000bfb73b561618a3ea959a5e363643b267c4cb8fe4b1df76a0422ca8b0a00a4250000006360c3f9006200105960201b60201c565b62000c3073b5b6d8885fbf28f843cc7886de242b811d6952056901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000c6573b61c11b6e42d459efaee8995c44db08507e468e169477d5529f68a63000000635df22bc06200105960201b60201c565b62000c9a73b999004b49c6b907d4278067da5c85195dcd7fc769081e0dddaff653f8b500635df22bc06200105960201b60201c565b62000ccf73be4888c5b021e5f16cd254de2d4eaf17625685c46934f086f3b33b68400000635df22bc06200105960201b60201c565b62000d0473c1d441a2ad43af7b4a3d8e3200d2ceb3a973099d6934f086f3b33b68400000635df22bc06200105960201b60201c565b62000d3973c58a20e290e858542d8e8bb07b600aeb9195fe306903878076a58c80674b00635df22bc06200105960201b60201c565b62000d6f73cfe7964b0b6412b013dc019bdf3afef58be565936a055084cc99f0bdbadd0000635df22bc06200105960201b60201c565b62000da473d33d4f83e85c92e0b53ffe4fc0e18b0e3632c0976901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000dd973d44fb8de580d34f44789408cc9335c9a9ce0ce4d691ad0235eb930a0540000635df22bc06200105960201b60201c565b62000e0e73dacd80d8e1d4f117515caa477ee7599cdfc766196902a5a058fc295ed00000635df22bc06200105960201b60201c565b62000e4373db6cc57168c07b83a00f1f8871538446068824fc691a784379d99db4200000635df22bc06200105960201b60201c565b62000e7873de6b493d368316b9078454e37dce4968482dfbe96969e10de76676d0800000635d79dee06200105960201b60201c565b62000ead73e23c7cb60189bb2fd60625d2c2747b1e68f107766934f086f3b33b68400000635df22bc06200105960201b60201c565b62000ee273e6e8a111c89b05337049de9349c7c4880a396ef1691a784379d99db4200000635df22bc06200105960201b60201c565b62000f1773ebbddf28bf3224791b0510a2ab8813f182fe4e2b6901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000f4c73f4e31018a926f64cb780cb9f5f027377bcfb26fc6907f0e10af47c1c700000635df22bc06200105960201b60201c565b62000f8173f8e6ecb4b0f17576525749bdf85524652cbf002e6901c3c03b52c63f027880635df22bc06200105960201b60201c565b62000fb773fd679097fe0f914642af9857e5799332fe2efa296a01a784379d99db42000000635d79dee06200105960201b60201c565b62000fed73fd7a30d3c2bd017a458610274c275059d308b2e76a01ff1675f219f5a8780000635df22bc06200105960201b60201c565b6200102273ffcf98c62c1bad480ab6846717b173a72e2dd090691a784379d99db4200000635df22bc06200105960201b60201c565b6200105773ffd9b871df6e93803c0877e98fc1722b39c00d786902a5a058fc295ed00000635df22bc06200105960201b60201c565b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000154148015620010b4575060008160010154145b6200110b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180620014e26029913960400191505060405180910390fd5b8260016000828254019250508190555082816000018190555081816001018190555050505050565b61037780620011436000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806318a5bbdc14610051578063192e7a7b146100b057806330f0dbe0146100f45780639976e12f14610112575b600080fd5b6100936004803603602081101561006757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610130565b604051808381526020018281526020019250505060405180910390f35b6100f2600480360360208110156100c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610154565b005b6100fc610336565b6040518082815260200191505060405180910390f35b61011a610345565b6040518082815260200191505060405180910390f35b60006020528060005260406000206000915090508060000154908060010154905082565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015411610210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f417661696c61626c6520616d6f756e742069732030000000000000000000000081525060200191505060405180910390fd5b80600101544211610289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f486f6c64696e6720706572696f64206973206e6f74206f76657200000000000081525060200191505060405180910390fd5b600081600001549050600082600001819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156102e2573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff167f221c08a06b07a64803b3787861a3f276212fcccb51c2e6234077a9b8cb13047a826040518082815260200191505060405180910390a2505050565b6a22140f53c2d216263ba28081565b6001548156fea165627a7a72305820b0165b18a29fae78ec1f58bf69134a67ab02e21d059e757412318d8362284866002954617267657420616d6f756e742073686f756c6420657175616c2061637475616c20616d6f756e74486f6c64696e6720666f72207468697320616464726573732077617320616c7265616479207365742e42616c616e63652073686f756c6420657175616c2074617267657420616d6f756e742e" + }, + "0x1204700000000000000000000000000000000006": { + "constructor": "0x60806040523480156200001157600080fd5b5060405160208062003ed2833981018060405260208110156200003357600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a362000111816200011860201b60201c565b506200027a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613c48806200028a6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806392698814116100c3578063e30bd7401161007c578063e30bd740146109b5578063eadf976014610a72578063ef5454d614610b17578063f25eb5c114610bc8578063f2fde38b14610bd2578063f6d339e414610c1657610158565b80639269881414610705578063ac4e73f91461074b578063ac72c120146107fc578063c3a3582514610842578063deb931a2146108d9578063df57b7421461094757610158565b80636795dbcd116101155780636795dbcd1461041c5780636a1acc3f146104df57806379ce9fac1461059c5780638da5cb5b146106025780638f32d59b1461064c57806390b97fc11461066e57610158565b806306b2ff471461015d57806319362a28146101b9578063267b69221461025e5780633f3935d1146102ff578063432ced04146103905780634f39ca59146103d6575b600080fd5b61019f6004803603602081101561017357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cd1565b604051808215151515815260200191505060405180910390f35b610244600480360360608110156101cf57600080fd5b8101908080359060200190929190803590602001906401000000008111156101f657600080fd5b82018360208201111561020857600080fd5b8035906020019184600183028401116401000000008311171561022a57600080fd5b909192939192939080359060200190929190505050610d31565b604051808215151515815260200191505060405180910390f35b61028a6004803603602081101561027457600080fd5b8101908080359060200190929190505050610fcb565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6103766004803603602081101561031557600080fd5b810190808035906020019064010000000081111561033257600080fd5b82018360208201111561034457600080fd5b8035906020019184600183028401116401000000008311171561036657600080fd5b909192939192939050505061102f565b604051808215151515815260200191505060405180910390f35b6103bc600480360360208110156103a657600080fd5b810190808035906020019092919050505061134e565b604051808215151515815260200191505060405180910390f35b610402600480360360208110156103ec57600080fd5b8101908080359060200190929190505050611546565b604051808215151515815260200191505060405180910390f35b61049d6004803603604081101561043257600080fd5b81019080803590602001909291908035906020019064010000000081111561045957600080fd5b82018360208201111561046b57600080fd5b8035906020019184600183028401116401000000008311171561048d57600080fd5b9091929391929390505050611a8d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610521600480360360208110156104f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bb2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610561578082015181840152602081019050610546565b50505050905090810190601f16801561058e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105e8600480360360408110156105b257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c62565b604051808215151515815260200191505060405180910390f35b61060a611f58565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610654611f81565b604051808215151515815260200191505060405180910390f35b6106ef6004803603604081101561068457600080fd5b8101908080359060200190929190803590602001906401000000008111156106ab57600080fd5b8201836020820111156106bd57600080fd5b803590602001918460018302840111640100000000831117156106df57600080fd5b9091929391929390505050611fd8565b6040518082815260200191505060405180910390f35b6107316004803603602081101561071b57600080fd5b81019080803590602001909291905050506120fa565b604051808215151515815260200191505060405180910390f35b6107e26004803603604081101561076157600080fd5b810190808035906020019064010000000081111561077e57600080fd5b82018360208201111561079057600080fd5b803590602001918460018302840111640100000000831117156107b257600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612245565b604051808215151515815260200191505060405180910390f35b6108286004803603602081101561081257600080fd5b81019080803590602001909291905050506127e7565b604051808215151515815260200191505060405180910390f35b6108c36004803603604081101561085857600080fd5b81019080803590602001909291908035906020019064010000000081111561087f57600080fd5b82018360208201111561089157600080fd5b803590602001918460018302840111640100000000831117156108b357600080fd5b9091929391929390505050612932565b6040518082815260200191505060405180910390f35b610905600480360360208110156108ef57600080fd5b8101908080359060200190929190505050612a57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109736004803603602081101561095d57600080fd5b8101908080359060200190929190505050612b72565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109f7600480360360208110156109cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c8d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a37578082015181840152602081019050610a1c565b50505050905090810190601f168015610a645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610afd60048036036060811015610a8857600080fd5b810190808035906020019092919080359060200190640100000000811115610aaf57600080fd5b820183602082011115610ac157600080fd5b80359060200191846001830284011164010000000083111715610ae357600080fd5b909192939192939080359060200190929190505050612d6e565b604051808215151515815260200191505060405180910390f35b610bae60048036036040811015610b2d57600080fd5b8101908080359060200190640100000000811115610b4a57600080fd5b820183602082011115610b5c57600080fd5b80359060200191846001830284011164010000000083111715610b7e57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061300b565b604051808215151515815260200191505060405180910390f35b610bd0613281565b005b610c1460048036036020811015610be857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613674565b005b610cb760048036036060811015610c2c57600080fd5b810190808035906020019092919080359060200190640100000000811115610c5357600080fd5b820183602082011115610c6557600080fd5b80359060200191846001830284011164010000000083111715610c8757600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136fa565b604051808215151515815260200191505060405180910390f35b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080546001816001161561010002031660029004905014159050919050565b600084600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610e0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b83600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a2600192505050949350505050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b600082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600073ffffffffffffffffffffffffffffffffffffffff16600160008380519060200120815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611156576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050503373ffffffffffffffffffffffffffffffffffffffff16600160008380519060200120815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611279576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4572726f723a204f6e6c79207768656e2070726f706f7365640000000000000081525060200191505060405180910390fd5b8484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091906112c7929190613b0e565b503373ffffffffffffffffffffffffffffffffffffffff167f098ae8581bb8bd9af1beaf7f2e9f51f31a8e5a8bfada4e303a645d71d9c91920868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a260019250505092915050565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204f6e6c79207768656e20756e7265736572766564000000000081525060200191505060405180910390fd5b611431611f81565b6114a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b336001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16837f4963513eca575aba66fdcd25f267aae85958fe6fb97e75fa25d783f1a091a22160405160405180910390a36001915050919050565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b823373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b83600260006001600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180828054600181600116156101000203166002900480156117cb5780601f106117a95761010080835404028352918201916117cb565b820191906000526020600020905b8154815290600101906020018083116117b7575b5050915050604051809103902014156119da576001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd600260006001600089815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561194a5780601f1061191f5761010080835404028352916020019161194a565b820191906000526020600020905b81548152906001019060200180831161192d57829003601f168201915b50509250505060405180910390a2600260006001600087815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006119d99190613b8e565b5b60016000858152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550503373ffffffffffffffffffffffffffffffffffffffff16847fef1961b4d2909dc23643b309bfe5c3e5646842d98c3a58517037ef3871185af360405160405180910390a3600192505050919050565b600083600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b60016000868152602001908152602001600020600201848460405180838380828437808301925050509250505090815260200160405180910390205460001c9150509392505050565b60026020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c5a5780601f10611c2f57610100808354040283529160200191611c5a565b820191906000526020600020905b815481529060010190602001808311611c3d57829003601f168201915b505050505081565b600082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611d3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b833373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613bfc6021913960400191505060405180910390fd5b836001600087815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16867f7b97c62130aa09acbbcbf7482630e756592496f1759eaf702f469cf64dfb779460405160405180910390a460019250505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600083600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156120b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b6001600086815260200190815260200160002060020184846040518083838082843780830192505050925050509081526020016040518091039020549150509392505050565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156121d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600073ffffffffffffffffffffffffffffffffffffffff16600160008380519060200120815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561236c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b848460405180838380828437808301925050509250505060405180910390203373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612462576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b6000868660405180838380828437808301925050509250505060405180910390209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156125d3575080600260006001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180828054600181600116156101000203166002900480156125c45780601f106125a25761010080835404028352918201916125c4565b820191906000526020600020905b8154815290600101906020018083116125b0575b50509150506040518091039020145b1561270a57600260006001600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006126599190613b8e565b6001600082815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd888860405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a25b846001600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f728435a0031f6a04538fcdd24922a7e06bc7bc945db03e83d22122d1bc5f28df888860405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a2600193505050509392505050565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156128c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415915050919050565b600083600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b60016000868152602001908152602001600020600201848460405180838380828437808301925050509250505090815260200160405180910390205460001c9150509392505050565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b600081600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612c4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6060600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d625780601f10612d3757610100808354040283529160200191612d62565b820191906000526020600020905b815481529060010190602001808311612d4557829003601f168201915b50505050509050919050565b600084600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612e4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b8360001b600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a2600192505050949350505050565b600083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600073ffffffffffffffffffffffffffffffffffffffff16600160008380519060200120815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613132576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b61313a611f81565b6131ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b8484600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091906131fa929190613b0e565b508273ffffffffffffffffffffffffffffffffffffffff167f098ae8581bb8bd9af1beaf7f2e9f51f31a8e5a8bfada4e303a645d71d9c91920868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a260019150509392505050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156133545780601f1061332957610100808354040283529160200191613354565b820191906000526020600020905b81548152906001019060200180831161333757829003601f168201915b5050505050600073ffffffffffffffffffffffffffffffffffffffff16600160008380519060200120815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613439576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156135395780601f1061350e57610100808354040283529160200191613539565b820191906000526020600020905b81548152906001019060200180831161351c57829003601f168201915b50509250505060405180910390a260016000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180828054600181600116156101000203166002900480156135e55780601f106135c35761010080835404028352918201916135e5565b820191906000526020600020905b8154815290600101906020018083116135d1575b50509150506040518091039020815260200190815260200160002060010160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006136719190613b8e565b50565b61367c611f81565b6136ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b6136f7816139ad565b50565b600084600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156137d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146138ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660001b600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a2600192505050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613a50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613b4f57803560ff1916838001178555613b7d565b82800160010185558215613b7d579182015b82811115613b7c578235825591602001919060010190613b61565b5b509050613b8a9190613bd6565b5090565b50805460018160011615610100020316600290046000825580601f10613bb45750613bd3565b601f016020900490600052602060002090810190613bd29190613bd6565b5b50565b613bf891905b80821115613bf4576000816000905550600101613bdc565b5090565b9056fe4572726f723a206e6f207472616e7366657220746f206164647265737320307830a165627a7a72305820fe186a600f547c59523f333a7eb66cd1de74492306acaa3db2cd4c8a1b426b5a00290000000000000000000000001204700000000000000000000000000000000005" + }, + "0x1204700000000000000000000000000000000007": { + "constructor": "0x608060405234801561001057600080fd5b506040516040806108658339810180604052604081101561003057600080fd5b810190808051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3610116816101a160201b60201c565b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167fcc57a97257d7703be97e9d538cb08b3fa1ff2784b776d505942d49a95dc2891460405160405180910390a25050610302565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610554806103116000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80636ddc4a071461005c5780638da5cb5b146100a65780638f32d59b146100f0578063f2fde38b14610112578063fe64d6ff14610156575b600080fd5b61006461019a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100ae6101c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100f86101e9565b604051808215151515815260200191505060405180910390f35b6101546004803603602081101561012857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610240565b005b6101986004803603602081101561016c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102c6565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6102486101e9565b6102ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b6102c3816103c7565b50565b6102ce6101e9565b610340576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fcc57a97257d7703be97e9d538cb08b3fa1ff2784b776d505942d49a95dc2891460405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561046a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fea165627a7a723058204d73401a5cbb107ba765457948a3c2a2612436446f9125c3696f0f4cc7e06980002900000000000000000000000012047000000000000000000000000000000000090000000000000000000000001204700000000000000000000000000000000005" + }, + "0x1204700000000000000000000000000000000008": { + "constructor": "0x60806040523480156200001157600080fd5b506040516040806200298b8339810180604052620000339190810190620002a8565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000141816200014960201b60201c565b5050620003da565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b3906200032b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000815190506200028b81620003a6565b92915050565b600081519050620002a281620003c0565b92915050565b60008060408385031215620002bc57600080fd5b6000620002cc8582860162000291565b9250506020620002df858286016200027a565b9150509250929050565b6000620002f8601f836200034d565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b600060208201905081810360008301526200034681620002e9565b9050919050565b600082825260208201905092915050565b60006200036b8262000386565b9050919050565b60006200037f826200035e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620003b1816200035e565b8114620003bd57600080fd5b50565b620003cb8162000372565b8114620003d757600080fd5b50565b6125a180620003ea6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063954029c911610097578063eab7ad9211610066578063eab7ad92146102b2578063ee7ee0fd146102ce578063f2fde38b146102fe578063fbd74f841461031a576100f5565b8063954029c91461021a578063a999809f14610236578063b71da0d114610266578063da5393d514610296576100f5565b80636a564261116100d35780636a5642611461017857806370a05b18146101ae5780638da5cb5b146101de5780638f32d59b146101fc576100f5565b80631bab58f5146100fa5780632c5653e21461012a57806332d91c0e14610148575b600080fd5b610114600480360361010f9190810190611d82565b61034a565b60405161012191906123f7565b60405180910390f35b610132610767565b60405161013f919061233a565b60405180910390f35b610162600480360361015d9190810190611d82565b61078d565b60405161016f9190612355565b60405180910390f35b610192600480360361018d9190810190611d82565b61097e565b6040516101a597969594939291906122af565b60405180910390f35b6101c860048036036101c39190810190611d82565b610c2d565b6040516101d5919061228d565b60405180910390f35b6101e6610e1e565b6040516101f39190612257565b60405180910390f35b610204610e47565b6040516102119190612272565b60405180910390f35b610234600480360361022f9190810190611d82565b610e9e565b005b610250600480360361024b9190810190611d82565b610ff5565b60405161025d9190612355565b60405180910390f35b610280600480360361027b9190810190611d82565b6111e6565b60405161028d9190612272565b60405180910390f35b6102b060048036036102ab9190810190611d82565b611276565b005b6102cc60048036036102c79190810190611dd4565b611371565b005b6102e860048036036102e39190810190611d82565b611673565b6040516102f59190612272565b60405180910390f35b61031860048036036103139190810190611d82565b6117d9565b005b610334600480360361032f9190810190611d82565b61182c565b604051610341919061228d565b60405180910390f35b610352611b4b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ba57600080fd5b505afa1580156103ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103f29190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461045f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045690612377565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e0016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105e45780601f106105b9576101008083540402835291602001916105e4565b820191906000526020600020905b8154815290600101906020018083116105c757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106865780601f1061065b57610100808354040283529160200191610686565b820191906000526020600020905b81548152906001019060200180831161066957829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107285780601f106106fd57610100808354040283529160200191610728565b820191906000526020600020905b81548152906001019060200180831161070b57829003601f168201915b505050505081526020016004820160009054906101000a900460ff16151515158152602001600582015481526020016006820154815250509050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f757600080fd5b505afa15801561080b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061082f9190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461089c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089390612377565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109725780601f1061094757610100808354040283529160200191610972565b820191906000526020600020905b81548152906001019060200180831161095557829003601f168201915b50505050509050919050565b6001602052806000526040600020600091509050806000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a2a5780601f106109ff57610100808354040283529160200191610a2a565b820191906000526020600020905b815481529060010190602001808311610a0d57829003601f168201915b505050505090806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ac85780601f10610a9d57610100808354040283529160200191610ac8565b820191906000526020600020905b815481529060010190602001808311610aab57829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b665780601f10610b3b57610100808354040283529160200191610b66565b820191906000526020600020905b815481529060010190602001808311610b4957829003601f168201915b505050505090806003018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c045780601f10610bd957610100808354040283529160200191610c04565b820191906000526020600020905b815481529060010190602001808311610be757829003601f168201915b5050505050908060040160009054906101000a900460ff16908060050154908060060154905087565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9757600080fd5b505afa158015610cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ccf9190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3390612377565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e125780601f10610de757610100808354040283529160200191610e12565b820191906000526020600020905b815481529060010190602001808311610df557829003601f168201915b50505050509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0657600080fd5b505afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f3e9190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa290612377565b60405180910390fd5b43600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555050565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b15801561105f57600080fd5b505afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110979190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb90612377565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111da5780601f106111af576101008083540402835291602001916111da565b820191906000526020600020905b8154815290600101906020018083116111bd57829003601f168201915b50505050509050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154109050919050565b61127e610e47565b6112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b4906123d7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490612397565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b1580156113d957600080fd5b505afa1580156113ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114119190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147590612377565b60405180910390fd5b8888600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000191906114cf929190611b8a565b508686600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019190611521929190611c0a565b508484600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002019190611573929190611b8a565b508282600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030191906115c5929190611c0a565b5080600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006101000a81548160ff02191690831515021790555043600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555050505050505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b1580156116dd57600080fd5b505afa1580156116f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117159190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177990612377565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff169050919050565b6117e1610e47565b611820576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611817906123d7565b60405180910390fd5b61182981611a1d565b50565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff1660e01b815260040160206040518083038186803b15801561189657600080fd5b505afa1580156118aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118ce9190810190611dab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290612377565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a115780601f106119e657610100808354040283529160200191611a11565b820191906000526020600020905b8154815290600101906020018083116119f457829003601f168201915b50505050509050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a84906123b7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060e001604052806060815260200160608152602001606081526020016060815260200160001515815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611bcb57803560ff1916838001178555611bf9565b82800160010185558215611bf9579182015b82811115611bf8578235825591602001919060010190611bdd565b5b509050611c069190611c8a565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c4b57803560ff1916838001178555611c79565b82800160010185558215611c79579182015b82811115611c78578235825591602001919060010190611c5d565b5b509050611c869190611c8a565b5090565b611cac91905b80821115611ca8576000816000905550600101611c90565b5090565b90565b600081359050611cbe81612539565b92915050565b600081519050611cd381612539565b92915050565b600081359050611ce881612550565b92915050565b60008083601f840112611d0057600080fd5b8235905067ffffffffffffffff811115611d1957600080fd5b602083019150836001820283011115611d3157600080fd5b9250929050565b60008083601f840112611d4a57600080fd5b8235905067ffffffffffffffff811115611d6357600080fd5b602083019150836001820283011115611d7b57600080fd5b9250929050565b600060208284031215611d9457600080fd5b6000611da284828501611caf565b91505092915050565b600060208284031215611dbd57600080fd5b6000611dcb84828501611cc4565b91505092915050565b60008060008060008060008060008060c08b8d031215611df357600080fd5b6000611e018d828e01611caf565b9a505060208b013567ffffffffffffffff811115611e1e57600080fd5b611e2a8d828e01611cee565b995099505060408b013567ffffffffffffffff811115611e4957600080fd5b611e558d828e01611d38565b975097505060608b013567ffffffffffffffff811115611e7457600080fd5b611e808d828e01611cee565b955095505060808b013567ffffffffffffffff811115611e9f57600080fd5b611eab8d828e01611d38565b935093505060a0611ebe8d828e01611cd9565b9150509295989b9194979a5092959850565b611ed981612489565b82525050565b611ee88161249b565b82525050565b611ef78161249b565b82525050565b6000611f0882612424565b611f128185612456565b9350611f228185602086016124f5565b611f2b81612528565b840191505092915050565b6000611f4182612419565b611f4b8185612445565b9350611f5b8185602086016124f5565b611f6481612528565b840191505092915050565b6000611f7a82612419565b611f848185612456565b9350611f948185602086016124f5565b611f9d81612528565b840191505092915050565b611fb1816124d1565b82525050565b6000611fc28261243a565b611fcc8185612478565b9350611fdc8185602086016124f5565b611fe581612528565b840191505092915050565b6000611ffb8261242f565b6120058185612467565b93506120158185602086016124f5565b61201e81612528565b840191505092915050565b60006120348261242f565b61203e8185612478565b935061204e8185602086016124f5565b61205781612528565b840191505092915050565b600061206f601383612478565b91507f4572726f723a206f6e6c794c6f676963204462000000000000000000000000006000830152602082019050919050565b60006120af602983612478565b91507f4572726f723a206e65774c6f6f6b5570206973206e6f7420616c6c6f7765642060008301527f746f2062652030783000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612115601f83612478565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b6000612155601383612478565b91507f53656e646572206973206e6f74206f776e6572000000000000000000000000006000830152602082019050919050565b600060e08301600083015184820360008601526121a58282611f36565b915050602083015184820360208601526121bf8282611ff0565b915050604083015184820360408601526121d98282611f36565b915050606083015184820360608601526121f38282611ff0565b91505060808301516122086080860182611edf565b5060a083015161221b60a0860182612239565b5060c083015161222e60c0860182612239565b508091505092915050565b612242816124c7565b82525050565b612251816124c7565b82525050565b600060208201905061226c6000830184611ed0565b92915050565b60006020820190506122876000830184611eee565b92915050565b600060208201905081810360008301526122a78184611efd565b905092915050565b600060e08201905081810360008301526122c9818a611f6f565b905081810360208301526122dd8189612029565b905081810360408301526122f18188611f6f565b905081810360608301526123058187612029565b90506123146080830186611eee565b61232160a0830185612248565b61232e60c0830184612248565b98975050505050505050565b600060208201905061234f6000830184611fa8565b92915050565b6000602082019050818103600083015261236f8184611fb7565b905092915050565b6000602082019050818103600083015261239081612062565b9050919050565b600060208201905081810360008301526123b0816120a2565b9050919050565b600060208201905081810360008301526123d081612108565b9050919050565b600060208201905081810360008301526123f081612148565b9050919050565b600060208201905081810360008301526124118184612188565b905092915050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612494826124a7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006124dc826124e3565b9050919050565b60006124ee826124a7565b9050919050565b60005b838110156125135780820151818401526020810190506124f8565b83811115612522576000848401525b50505050565b6000601f19601f8301169050919050565b61254281612489565b811461254d57600080fd5b50565b6125598161249b565b811461256457600080fd5b5056fea265627a7a7230582045fea88fa096a11a15a5bb8e9f5993ca3ab8a38132e6c7a04eb7cd5458378c906c6578706572696d656e74616cf5003700000000000000000000000012047000000000000000000000000000000000070000000000000000000000001204700000000000000000000000000000000005" + }, + "0x1204700000000000000000000000000000000009": { + "constructor": "0x60806040523480156200001157600080fd5b506040516040806200208d8339810180604052620000339190810190620002a8565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000141816200014960201b60201c565b5050620003da565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b3906200032b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000815190506200028b81620003a6565b92915050565b600081519050620002a281620003c0565b92915050565b60008060408385031215620002bc57600080fd5b6000620002cc8582860162000291565b9250506020620002df858286016200027a565b9150509250929050565b6000620002f8601f836200034d565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b600060208201905081810360008301526200034681620002e9565b9050919050565b600082825260208201905092915050565b60006200036b8262000386565b9050919050565b60006200037f826200035e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b620003b1816200035e565b8114620003bd57600080fd5b50565b620003cb8162000372565b8114620003d757600080fd5b50565b611ca380620003ea6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638f32d59b1161005b5780638f32d59b14610101578063b71da0d11461011f578063ec2626111461014f578063f2fde38b1461016d57610088565b806312127ed71461008d5780633f67c333146100a957806389c3ce1e146100b35780638da5cb5b146100e3575b600080fd5b6100a760048036036100a2919081019061118d565b610189565b005b6100b16107d7565b005b6100cd60048036036100c89190810190611164565b610a23565b6040516100da91906119c0565b60405180910390f35b6100eb610aee565b6040516100f891906117b7565b60405180910390f35b610109610b17565b604051610116919061186a565b60405180910390f35b61013960048036036101349190810190611164565b610b6e565b604051610146919061186a565b60405180910390f35b610157610c22565b6040516101649190611885565b60405180910390f35b61018760048036036101829190810190611164565b610c48565b005b610191610b17565b6101d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c790611940565b60405180910390fd5b600085511415610215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020c906118e0565b60405180910390fd5b60008451141561025a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025190611980565b60405180910390fd5b60008351141561029f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610296906118a0565b60405180910390fd5b6000825114156102e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102db906118c0565b60405180910390fd5b8480519060200120600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbd74f84886040518263ffffffff1660e01b815260040161034791906117b7565b60006040518083038186803b15801561035f57600080fd5b505afa158015610373573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061039c919081019061129f565b8051906020012014801561046c57508380519060200120600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a999809f886040518263ffffffff1660e01b815260040161040e91906117b7565b60006040518083038186803b15801561042657600080fd5b505afa15801561043a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061046391908101906112e0565b80519060200120145b801561053457508280519060200120600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a05b18886040518263ffffffff1660e01b81526004016104d691906117b7565b60006040518083038186803b1580156104ee57600080fd5b505afa158015610502573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061052b919081019061129f565b80519060200120145b80156105fc57508180519060200120600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332d91c0e886040518263ffffffff1660e01b815260040161059e91906117b7565b60006040518083038186803b1580156105b657600080fd5b505afa1580156105ca573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506105f391908101906112e0565b80519060200120145b80156106b55750801515600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee7ee0fd886040518263ffffffff1660e01b815260040161066191906117b7565b60206040518083038186803b15801561067957600080fd5b505afa15801561068d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106b19190810190611276565b1515145b156106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ec90611960565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eab7ad928787878787876040518763ffffffff1660e01b815260040161075a969594939291906117ed565b600060405180830381600087803b15801561077457600080fd5b505af1158015610788573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fc9e49a024d50440c73d2d12d0ae05064094dca76b46dc95e99ea6848eb8f27e960405160405180910390a2505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbd74f84336040518263ffffffff1660e01b815260040161083491906117d2565b60006040518083038186803b15801561084c57600080fd5b505afa158015610860573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610889919081019061129f565b5114156108cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c2906119a0565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1663b71da0d1336040518263ffffffff1660e01b815260040161090491906117d2565b60206040518083038186803b15801561091c57600080fd5b505afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109549190810190611276565b15610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90611900565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663954029c9336040518263ffffffff1660e01b81526004016109ef91906117d2565b600060405180830381600087803b158015610a0957600080fd5b505af1158015610a1d573d6000803e3d6000fd5b50505050565b610a2b610dc9565b610a33610dc9565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631bab58f5846040518263ffffffff1660e01b8152600401610a8e91906117b7565b60006040518083038186803b158015610aa657600080fd5b505afa158015610aba573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610ae39190810190611321565b905080915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b71da0d1836040518263ffffffff1660e01b8152600401610bcb91906117b7565b60206040518083038186803b158015610be357600080fd5b505afa158015610bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c1b9190810190611276565b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c50610b17565b610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690611940565b60405180910390fd5b610c9881610c9b565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0290611920565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060e001604052806060815260200160608152602001606081526020016060815260200160001515815260200160008152602001600081525090565b600081359050610e1781611c24565b92915050565b600081359050610e2c81611c3b565b92915050565b600081519050610e4181611c3b565b92915050565b600082601f830112610e5857600080fd5b8151610e6b610e6682611a0f565b6119e2565b91508082526020830160208301858383011115610e8757600080fd5b610e92838284611be0565b50505092915050565b600082601f830112610eac57600080fd5b8135610ebf610eba82611a3b565b6119e2565b91508082526020830160208301858383011115610edb57600080fd5b610ee6838284611bd1565b50505092915050565b600082601f830112610f0057600080fd5b8151610f13610f0e82611a3b565b6119e2565b91508082526020830160208301858383011115610f2f57600080fd5b610f3a838284611be0565b50505092915050565b600082601f830112610f5457600080fd5b8151610f67610f6282611a67565b6119e2565b91508082526020830160208301858383011115610f8357600080fd5b610f8e838284611be0565b50505092915050565b600082601f830112610fa857600080fd5b8135610fbb610fb682611a93565b6119e2565b91508082526020830160208301858383011115610fd757600080fd5b610fe2838284611bd1565b50505092915050565b600082601f830112610ffc57600080fd5b815161100f61100a82611a93565b6119e2565b9150808252602083016020830185838301111561102b57600080fd5b611036838284611be0565b50505092915050565b600060e0828403121561105157600080fd5b61105b60e06119e2565b9050600082015167ffffffffffffffff81111561107757600080fd5b61108384828501610e47565b600083015250602082015167ffffffffffffffff8111156110a357600080fd5b6110af84828501610f43565b602083015250604082015167ffffffffffffffff8111156110cf57600080fd5b6110db84828501610e47565b604083015250606082015167ffffffffffffffff8111156110fb57600080fd5b61110784828501610f43565b606083015250608061111b84828501610e32565b60808301525060a061112f8482850161114f565b60a08301525060c06111438482850161114f565b60c08301525092915050565b60008151905061115e81611c52565b92915050565b60006020828403121561117657600080fd5b600061118484828501610e08565b91505092915050565b60008060008060008060c087890312156111a657600080fd5b60006111b489828a01610e08565b965050602087013567ffffffffffffffff8111156111d157600080fd5b6111dd89828a01610e9b565b955050604087013567ffffffffffffffff8111156111fa57600080fd5b61120689828a01610f97565b945050606087013567ffffffffffffffff81111561122357600080fd5b61122f89828a01610e9b565b935050608087013567ffffffffffffffff81111561124c57600080fd5b61125889828a01610f97565b92505060a061126989828a01610e1d565b9150509295509295509295565b60006020828403121561128857600080fd5b600061129684828501610e32565b91505092915050565b6000602082840312156112b157600080fd5b600082015167ffffffffffffffff8111156112cb57600080fd5b6112d784828501610eef565b91505092915050565b6000602082840312156112f257600080fd5b600082015167ffffffffffffffff81111561130c57600080fd5b61131884828501610feb565b91505092915050565b60006020828403121561133357600080fd5b600082015167ffffffffffffffff81111561134d57600080fd5b6113598482850161103f565b91505092915050565b61136b81611b77565b82525050565b61137a81611b2f565b82525050565b61138981611b41565b82525050565b61139881611b41565b82525050565b60006113a982611aca565b6113b38185611afc565b93506113c3818560208601611be0565b6113cc81611c13565b840191505092915050565b60006113e282611abf565b6113ec8185611aeb565b93506113fc818560208601611be0565b61140581611c13565b840191505092915050565b61141981611b89565b82525050565b600061142a82611ae0565b6114348185611b1e565b9350611444818560208601611be0565b61144d81611c13565b840191505092915050565b600061146382611ad5565b61146d8185611b0d565b935061147d818560208601611be0565b61148681611c13565b840191505092915050565b600061149e602083611b1e565b91507f436861696e537065635368612073686f756c64206e6f7420626520656d7074796000830152602082019050919050565b60006114de602083611b1e565b91507f436861696e5370656355726c2073686f756c64206e6f7420626520656d7074796000830152602082019050919050565b600061151e601d83611b1e565b91507f446f636b65725368612073686f756c64206e6f7420626520656d7074790000006000830152602082019050919050565b600061155e601883611b1e565b91507f4572726f723a20416c726561647920436f6e6669726d656400000000000000006000830152602082019050919050565b600061159e601f83611b1e565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b60006115de601383611b1e565b91507f53656e646572206973206e6f74206f776e6572000000000000000000000000006000830152602082019050919050565b600061161e602583611b1e565b91507f4572726f723a204e6f206368616e67657320696e20746865207061737365642060008301527f53746174650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611684601e83611b1e565b91507f446f636b65724e616d652073686f756c64206e6f7420626520656d70747900006000830152602082019050919050565b60006116c4601f83611b1e565b91507f4572726f723a20596f7520617265206e6f7420612076616c696461746f7221006000830152602082019050919050565b600060e083016000830151848203600086015261171482826113d7565b9150506020830151848203602086015261172e8282611458565b9150506040830151848203604086015261174882826113d7565b915050606083015184820360608601526117628282611458565b91505060808301516117776080860182611380565b5060a083015161178a60a08601826117a8565b5060c083015161179d60c08601826117a8565b508091505092915050565b6117b181611b6d565b82525050565b60006020820190506117cc6000830184611371565b92915050565b60006020820190506117e76000830184611362565b92915050565b600060c0820190506118026000830189611371565b8181036020830152611814818861139e565b90508181036040830152611828818761141f565b9050818103606083015261183c818661139e565b90508181036080830152611850818561141f565b905061185f60a083018461138f565b979650505050505050565b600060208201905061187f600083018461138f565b92915050565b600060208201905061189a6000830184611410565b92915050565b600060208201905081810360008301526118b981611491565b9050919050565b600060208201905081810360008301526118d9816114d1565b9050919050565b600060208201905081810360008301526118f981611511565b9050919050565b6000602082019050818103600083015261191981611551565b9050919050565b6000602082019050818103600083015261193981611591565b9050919050565b60006020820190508181036000830152611959816115d1565b9050919050565b6000602082019050818103600083015261197981611611565b9050919050565b6000602082019050818103600083015261199981611677565b9050919050565b600060208201905081810360008301526119b9816116b7565b9050919050565b600060208201905081810360008301526119da81846116f7565b905092915050565b6000604051905081810181811067ffffffffffffffff82111715611a0557600080fd5b8060405250919050565b600067ffffffffffffffff821115611a2657600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115611a5257600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115611a7e57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115611aaa57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611b3a82611b4d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611b8282611bad565b9050919050565b6000611b9482611b9b565b9050919050565b6000611ba682611b4d565b9050919050565b6000611bb882611bbf565b9050919050565b6000611bca82611b4d565b9050919050565b82818337600083830152505050565b60005b83811015611bfe578082015181840152602081019050611be3565b83811115611c0d576000848401525b50505050565b6000601f19601f8301169050919050565b611c2d81611b2f565b8114611c3857600080fd5b50565b611c4481611b41565b8114611c4f57600080fd5b50565b611c5b81611b6d565b8114611c6657600080fd5b5056fea265627a7a7230582070f7a284b1ab092d7cf8a14ca7bf4b7a68d6e2cb8441f82436e624a898b0ebd46c6578706572696d656e74616cf5003700000000000000000000000012047000000000000000000000000000000000080000000000000000000000001204700000000000000000000000000000000005" + } + }, + "nodes": [ + "enode://cc67008e850c4b64702f1664f18704dd23980fb574138588904270739dca3a9c417ac3f97077b0f4e4872a5db109195f7137c156314dbcc724eabd809044553e@ewc-bootnode-02.energyweb.org:30303", + "enode://34f97743b9c07fac84c2db921337f006b5932e14c29df496951bdcfe3fce71e3d1504c25d66156dae01065623849b4fe940168c7e3f21c49b538af0cabb5805f@ewc-bootnode-03.energyweb.org:30303", + "enode://80e49825bb6bdfbf69576fd4a5f7bb173db98c08439bd7a019e2d42548afbb1f70232b74ede42dbd99cc0de3990a0101d49543c1b299027d2fd6f5a2c81eff75@ewc-bootnode-05.energyweb.org:30303", + "enode://1cd00f54ddaa41793d32500f0cb123d43e95f5ed18220c367d5a4db7d111e5fb59f250c397e40977562881875827f022d88a51e51171daaebf916beaa60e2139@ewc-bootnode-06.energyweb.org:30303", + "enode://3a8588bd883ea3bce606b08e7ca71d55717077cb3d25d3c00421ac371fbae286b94f58ba2e739b17b64c4d0d3e19f1b0ae2e47962703b42d7f36f1b9a448d4ea@ewc-bootnode-09.energyweb.org:30303", + "enode://69749dbe7e6f5fceaeb0a16f60353b3ec04825a12400e6d581fe980275e96fecb464276e61d79fc1628e448f1f74da2985d778ea54e0e8e7c64d980f2b3b6a94@ewc-bootnode-10.energyweb.org:30303" + ] } diff --git a/ethcore/res/ethereum/expanse.json b/ethcore/res/ethereum/expanse.json index 5b950e28b02..bbaa4275d2e 100644 --- a/ethcore/res/ethereum/expanse.json +++ b/ethcore/res/ethereum/expanse.json @@ -79,12 +79,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "0xC3500", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0xC3500": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -92,12 +93,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "0xC3500", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0xC3500": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -105,14 +107,13 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0xC3500", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0xC3500": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/foundation.json b/ethcore/res/ethereum/foundation.json index f55e5492b8f..dd7b1b6eaae 100644 --- a/ethcore/res/ethereum/foundation.json +++ b/ethcore/res/ethereum/foundation.json @@ -163,7 +163,11 @@ "eip658Transition": "0x42ae50", "eip145Transition": "0x6f1580", "eip1014Transition": "0x6f1580", - "eip1052Transition": "0x6f1580" + "eip1052Transition": "0x6f1580", + "eip1283Transition": "0x8a61c8", + "eip1706Transition": "0x8a61c8", + "eip1884Transition": "0x8a61c8", + "eip2028Transition": "0x8a61c8" }, "genesis": { "seal": { @@ -181,9 +185,9 @@ "stateRoot": "0xd7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544" }, "hardcodedSync": { - "header": "f90212a0113ba3b1153987fc483b01ccfe9ecadbdc36a7b264be75d6486cb6b694cc38a1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493479452bc44d5378309ee2abf1539bf71de1b7d7be3b5a0d91db5900e312a1ba8d39505406a95dc0ea20393b723c4bf488ade4e3c4ee4c3a05e63ab076852043b1c2fe010e2f14ab13dcc8e1c546ac497a24ce88c4abf3056a0b72e4a776f895459b6bf0937040990d868b1f45889aeaa26684e07472263fc31b90100b00200000063664554889124822ce2001022840543085d5810042382888542ca3816801780384384cd6851081cdc4d4b2b205a814b049198110a6869d60f4009a79c3854c9000581044889080000611c09142200106552000044027024004038092102814ed6c48040a8715851088a20108e80165f8c0c514019037a0000121304b2343416800b029000024404248238a06818414cb8690244879491855405026bc8250220520992c2380099d10024411c6048424083d1307822442d8444700405147883c4c041300aaa2408bb61084012983825a22830040a180106b5e27182088060b111515832902903a8f1d432a48004d0250437106a503491000048a91587067a897789f4d78371d801837a309c8379ffd7845c9d879e9150505945206e616e6f706f6f6c2e6f7267a0db22736cb3f06f9c86804902731fa6841eaaa1cd6326ea2a30e9c304d48bdd04880323b06837344cb8", - "totalDifficulty": "9633968582330911261986", - "CHTs": [ + "header": "f90215a0ec6330e9082f796d1d40cd146f1c504efc5823b486633f81a9f8ee31e799d41aa01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794ea674fdde714fd979de3edf0f56aa9716b898ec8a0d815854242c0f817a92beff41d66fc19dbfb2e4769762da7a2d4e49a9cf831c2a0e7e0ffc7d9a8ab82a7713cbf850628bf9a5227d80b0fe75d10b682be74bd90b9a0933423cb40b87bbcc53383c7d0a24d2ce5e8de99f2ba9213e51b4bb86b2fbb27b901008a0200250d21200aa00806e32495058b8880962440b0005dc4900000fc63451012c084c8c6224a0234ded20e96099533b08856aa0288a3bd00666137612c5680400000c4ec3ec5118ca2fa5c40804026c782e0188e4602502500c34460101adb47400d1b52c6884995204ac402d0bc10df7c1929827a9880b4a4051190406049368a1387c24c840a90b6c2b4e48e003e28459dc479c00042184824b2b8780308f3a660d05438a115a68804a16b209101020c0d9046812b61bc8004871b04402b1d904406114120beb0ea108a1cafe6983d9010c984882d2424301200000a78e0b03074ead02004044702412122423cbd2c5a4020ca9ca041998158050838033d8708cce2eaf2fd8b838640018397cc4d83979c13845db0992894505059452d65746865726d696e652d6575312d32a033a7c1a79360234b45773d79bb2d017ccf33414e59502691c87fea0a3ec26163880e5c7838013df6da", + "totalDifficulty": "12517645144159165893352", + "CHTs": [ "0x0eb474b7721727204978e92e27d31cddff56471911e424a4c8271c35f9c982cc", "0xe10e94515fb5ffb7ffa9bf50db4a959b3f50c2ff75e0b8bd5f5e038749e52a11", "0x816e7463af7b5d2fcb804ba55f09e8452182b0ba6c995a34e144245d76333d55", @@ -3826,7 +3830,660 @@ "0x64b862e2d5a6c24d569f3352b8524ebfecfd5a3205a3200ec78df72d79a66838", "0x6da8edf169a9c78307258a723c1ac1d96db20a7131018efad16f0606683c0f07", "0xbae1427beab8c3e71cea57e5f9cdd55bc278c6d6073ae2628f0d3efbf9894a42", - "0x389bbd1b3fa390e8d3339cf5b018ec64d9cfc02bbcb801acad0857fe377ed83b" + "0x389bbd1b3fa390e8d3339cf5b018ec64d9cfc02bbcb801acad0857fe377ed83b", + "0x819c3a7f682db122c56c004c1128a9e219f13052c9b78e59e838ca850e7ff191", + "0xaa860c92d60059cc76b9c07d9b942e132b72940f09952a6ea84e03e0d481a409", + "0x3a1ed0df289c45f80aca59d16f9a8fc2363faa591ff2259767965138155057f7", + "0xebd67ae495f5d5f4b2d36676bd9e4619043dc83e00766b92eb0ac9ecc46cb9ba", + "0x2ff9b30bfee54deed34ac25e2c7e1d7825ce27d270b27ac8350f33e0021a894b", + "0x5344883f5098af546dfeed7e76dae5597b6a2eade7eba066c1f3fd2ca37b5a9c", + "0xd8220eed4c1e6c3fc9edf342c7691e0b7a09b1bc93ca8ee101f549d1c416dd13", + "0x89122f929f806e2f345539d74a3b67a59976a996427a301f608f67e9067d337a", + "0xbb288743f3da50ba5ba8c3493e267c30b83c67b77a22df96fb194fbe3d6fbdcf", + "0x1f4d12a9c756fd7a8e6a35df39a35888a47fea0f4191ffb303503c1c007f0959", + "0xf4a47acf8c2ecdf67bfbb0fa49b02a372e16ea554d7911eba4527647564b773a", + "0xc4ea1bb4b007889b8a81b306367ef03d2213a17e44ca13dd0d30f98e0327644a", + "0x1da665d430e25a551e5a2cc6b09942c906559337df136af4b81934a14b44f2fb", + "0x429c1fac7e8ae535baf1024b797708ab758420bdf6dc73331f2c48bb27edc2e2", + "0x3cb6d3d2836e4132b090dc084df9347f6cea34d23b3252301b65d2ae125c057a", + "0x82aa375fa96569741873b0fbe883f5901dfc2bb80dc9cf8c77622fe57ae7922c", + "0x44ecf8444c6f4cf718a9d785b74ee71d483c02b8a4499065d4822d4c4b7dd098", + "0x35879d2288d42165f3329be77fc7125ef63947d99647022cf85d9d78bf5c3376", + "0x5119fb54e3eec69ddb94091f3f446e3dccb7bb91d11345f4895734765ce74740", + "0xcac39a05efa882556d8f2afc987563d61e1728dc00365c2b19182bfea7e9e1f4", + "0x3a5bac1d3d0751d1101245c4fc5594ddf6b2b87e1ca2afe97e3b94659f2d6a6c", + "0x433bfa0e7110d38ac86b893e892f3ba7f5acedccc5482a34b6045fcabeb27a75", + "0x4f25ccd53e8bd308c7aac31f47ca3b0efc803ec7787904d41e4f40ff1a7c9936", + "0xe290ba09a6f6b5a975f2a0b87717d83c64128af3d84ee5a8e3e6b73dc963bfdc", + "0x7a4d734fe57c4ae23fc10f17863eaf0fd35b71f7bd1f03196c4466028b143d0d", + "0x191c097cb3f00ed9f5f8b8e6cee02f8e8a11c4500f92ec2f99fa2140173f6e07", + "0x7f21cd1e87804e63c0973dd9f66e792181aedc5d8cd931eaa1d80d14880f8dce", + "0x4ae1193f849d7833b9efb7c615dc7e88026a3f3d01a72aecaa040b4754eb6c5d", + "0x84e7bd0b8f59390667f6e211ea89a17a13279190de24a33b744f71149eff9165", + "0x5765adf9a49a7594f0e9ed443858f3a822b293cf8bfdae93f36739e1989b1961", + "0x80abd196d81322281597ed14ed996987e15bafcb372c5b386a28e5df8cee57fa", + "0x24e9ac57c579c3edb8b3d40231436c8a5a4316fa73810855f5cf4a89b858c563", + "0x3378c60cb4879b9d4205db9b4cafdba13e9923993dc5e8b155d909ba2bd0b270", + "0x0e4e9289f83c3a8bcc6d6a6d7645ca919bee8c278e3776e2085b4fc347627934", + "0x2879e00c5e77faef512162ec3b28c132cda5377f72fdec476d0f09be9d002e42", + "0x8e0de62a93882ddab17038a7250734c354340e976dd643f609fd497381a3562b", + "0x8730ceb5206279126dbebf0676f922f12b5ecd13be08bf301d7d652473f79001", + "0x0df58042003ef56cd28013d9794180ad11cfb28485970bfd79f62e1893f39dfd", + "0xbf555dc1708cbeb96069194d2d2cb75208ef2cc73fcac3b4f35abae97dfc26ad", + "0xa38a19e71f0b7176b3428cd3e635405fb1df56ce3ab60f711521b1c6dd5921ef", + "0x7748a206bb39f27841e3fd6caec4c00a68ed50ca1e474cf8a943e99a21013742", + "0xb1e82160b63784d3e9b434033c8b79c2f9f8bd713e392581fa7db2290512a437", + "0x0569198adc593a471ea4fba27d0aa659361395b18185de08442aba1128b321b3", + "0x4821034a9f0e2d3badf586be65a04fdbd035c960265d0f2bd07cc5403e1ec002", + "0xfc3b5dfbb770fba26e68a2cf15ab6d9fd0cbc841c8b7e4cb67f975f0d1e9a456", + "0xa85944d5b68b690c8eae612b09e71e422f96234bfc55860159e99371b17db96a", + "0x704ddeb5089de9f58c7677150ca4dc64b9f8eaeb8d1e24dcafaad48ec910dc7e", + "0x223938a7097dddac139a909c0c33880b8da9dc45c86e1493d21909f809531132", + "0xa07403c373e4edbdc13e207241577de01d2cc9baec6529ca28afcdef27ac04d4", + "0x385fcf679306dad9d1d2323caca5d17aa3197316bc4ae3dbe126a7f687280e13", + "0x81c27cce7a06b71cfe276b0440865cf2c0f444bbd6904bc30f2e2380074d1020", + "0x2fbae35e1c82c0d8afda61f1a0e95dd5ca47fd603450a7f2fa4fa5bcd73ac5db", + "0xea14be904f027e364092837e583dc19500addf6e5ecb59af1dab4cd0a132a04b", + "0x409f1a6a99ff08ac262addb8ffaf3fb3d08db086716c92bbccbc2b8c738b8866", + "0xfcd3cf7e04c6eabe6c648368cff1ef62ffff8fd5f3279176781d2238db715f04", + "0x5f38c3238f5b52cfa9f45249651e468a53a2b62f1b62a5c543bd663dbae07204", + "0x265a6954be72496fec70afabb4224f7ce4258caeeebfc4c6d27550e17cce58b9", + "0x58b2fae8d925846b08310b557ca5b7262a9ee1f3b729863e699fbfa91ccb9ef0", + "0xbbb46cd133cbbeea781699fe620831b93db03bc3f7d77da64c0367fe5d8170a2", + "0x9b57cf784efd6d4d484486ed7ac6a7093fe0fe087931eca10e9f7a0084c4fbbb", + "0x1ef9d5604fbb21e365d259c10b0b24070a5d5ba4dda6ab44f37337d62c4a84e4", + "0x2502589834ad081fd22d5df57be4047001ac7df36ebc5733bca560ac5e463b02", + "0x425cac90caa07eed1eaa6c020bd2d7141601b5d007fbd5905d455fa6e00cf804", + "0x65d3376222597121fbf6fa541998a61605f8c344bb68b646c32a5d10a215f955", + "0x087c94ab1aebbf52e158c0caf0ffb1ccdc179b3d3b9ce136653d6e72a918e96a", + "0x5524392fb09e03a0bd8440d8e9f038a82954f95332bf4beb8f8e4d5be6deb904", + "0x134ac78af0626fa56dd62f27ea658570652e5fc3c627c57d737d178a31688f7d", + "0xf2e565457b1d938a18a8fe1c3732d70386f9344be91380d8cae740ffccdac58a", + "0xc203bc327d1085ba09cafbe5645657d73e64450ed314dac5c84e7f356cae01de", + "0x9c847099e82e8b2c1be8a7cf440ecb85c8cc20111931c0bedbb7ce778c7404e0", + "0xc22206c94e653a7439faf69cba997d9feb1c5b34829bf00a4c85d0adfe79d911", + "0xce0d9b43dce7b340e847e7340aa7d58c03b778a57e493a8f8dc9d63ccb06b6a9", + "0x20f416746af1522273b7119f31000c4848ee66597d5945492053cbcce359c6ff", + "0x9f789bec24566fc2ee6179b336be2b08e67fa39a367787063f07b7424f8f77f5", + "0xdaff9cecfb864d02ea03a7fc76d24760303c1d28a93613bfd659dea6997d8cdc", + "0x522c6b0c2334ddeb39a0fa8092851535e6980e3bfb1ceaccf86247ca4209c392", + "0x35e1440e9e6851ec26dd112b07761023637bdeb54c9a4045475b8616eac8f2c7", + "0x160df7b24ed8a0d4e2d6556add5318aed08656dc2f218b75badfa7dcd2d6085d", + "0x1219ccc41d673e6e1d8eb1e2a1edf6360318a611bf5917f40394216c3398af30", + "0x5237d29b94e6427a41e552dfa0db1281381a6f7f5eca72134e1638a8a7acb790", + "0x596d64fb8478cf32fd3d72d70c4ddc8a348b4d2aaefabeffc906a8ce656884a5", + "0x6cd01fc463582e85e433263128bbcb75d8cea197d650034bdf0ca0fba50abf92", + "0xe879011882783b1f085cb14abe05fa2fb008f3f25d303c96532c7b63091fcd50", + "0xad0e0237bfc7ca75073ab1328770fe3fa2099c7aad98d659747446efc271860a", + "0x1ef22d01e144466d68c09600e54425756024d95f323064a7bace055678533223", + "0xeb4f046e6c9eafb07c8615513b096dac0c30a7a9983a9b9d282ced0502baefac", + "0xa5ec8188ed11607e0c166d809bf6f4a624b63a04cdde6c9b38ca991cc363f07d", + "0x757cbd504e40ed1fb80967cbfbf0d73d649f381e07d3d774f6fb6a958872e13c", + "0xa9d67e8749177c72fef84684a3ddf25f280e624fce571e202eac7f4713675f07", + "0x05fffd3d981ec6411342264732be62a03ced7c7fbd2ccaae53fee75c81017316", + "0x673bf4e2016572077879057f6d122ad7e29da0a17c62a97679dfc6913820d42b", + "0x3f3e2d80251eb582daf8057af384c4e4a419873e1fa8b9ec32a6ed7054de1efa", + "0x860291469fec3ecb7c78b2a3c291722f43aaf747fbf3bd88cc4061083516b64a", + "0x3c30c64ffb77b39132c64e8856024abf0736cd2603da0091f52f1e81983e67ba", + "0xae8e21ce50f85fc0ea64696b973f53ae1cd877d64e30f13904d15b34d4bac6c5", + "0xb4ca3d97e33e9526ad1c7796a7f9efa5858ebec2605d1367862c880f78c86272", + "0x6c20893dcf39f711700bf6be5e360ef38102a7f7129ed83e24c5fc24f42584c9", + "0xd520870cbe314b46c1b7edc21399986870303d38cde9cbce3f4e25807124b1fe", + "0x9a24dc78fdfaa16af729b4b27c324a95068b7fd09eaecfa6564c7a815b8e9084", + "0x9b8c6c28860af11376931e082ad7bf12b0cb75f2582c8284c6e587ef2cdb8842", + "0x656f2096414bd7ad74c7abc1cd8222c61697b15ad68d7a5e76c1dc41086129c4", + "0x95bc4027611b90d1fb1ca0eed5bd326464cd1e4de67ff8640683496785c38c04", + "0x20e3c8545a8c05022d3b83a1bcc94db7239a6f509f13053d19b8ff7db126d093", + "0x767a60be20b494d792b1d4ea6fbc35f4affa633841f7f07f6c95b8b14ddad8c9", + "0x521dbc01a89820776a38d4989b6ba794d7c0251ad939dd0caff9a7b99579d0ee", + "0x814c1693d5e763b3e91b49ab8c192dfac0848993839e2cafab76e5cab13c6f7b", + "0x6626910d3525d978e25f14a92e3e2795dcd2f7844dcaae556127716ecbdbf747", + "0x685257b9002ba7808aed5b69dced6fcf1eb9b75e1e3646541aafe90caf3ce1b5", + "0xaa3d255fbf57445aca9fb45babd6fb58c89a95c6625f6b80601bb656a5eab344", + "0x2795d9516f8f2f15da8904741d24cc0675803c9a7ddb342fc66caa7d5050bca9", + "0x283f89476887c625c534bd277fcf5523df8ded877479517728358b71efaacdf2", + "0xc2044a35800edb0b6848341004928307ed023660fd22d7eaad2422146cef294f", + "0x01d35757346541a85a4b86f41d1b5b21701c1efce3f287a034497942483f52db", + "0x43d7f8c173717cfdbb3cbf38cc8cdda9c6ea8f05bfd435efe1f74144c9c84f24", + "0x6463d12f4bd83d544a14948fdce6c7e9e0da0e9812bedfb314b6e91157c0c682", + "0xa7cc32d879feab7508b84fa364fadc0af5a7cb1164b61d7d6cc5d7d1a76c32eb", + "0x37cd4953d262b095fa8a5a0708224d006ed9ef93d1ee5edeb285d410c5d86a8a", + "0xe896567b6be24f3ff1d962e05015f574443ac86c58b07bb943d12255cd94ed11", + "0x51d07ecc06ee4be7bc9700631ae07818756aca34d1eb2ac6eae7112ea9e9df41", + "0x72ba4e79031a1f2616b8e788fa578b9ea830e08823467fc875dd603badf6b79b", + "0xe06f71635f9df9bcecbd6553ab32f1af94275d8ccd59d1969c248822e3b6feb2", + "0x0484a049e43ac9f424ee9b2dfbd4c5932cafca539c1bec00d32d90561746e12e", + "0xe03a17de161d63503962f3d5cfaf28cba22ed622cb88547c8224509e77e2bfea", + "0x203acc2c14b68b80292f381fd440da199c9f8f0e043c42e0b0adc67be71bb807", + "0xba3d7f8a15b76afa8a834b44a922332713014a5d5ec3e52f729007c6717d5324", + "0x01e4a4e25bbfad7dbb0a23adf6fc873c40561319ba7bfbffa3c7a379606433cc", + "0x6252660ed44dc18d448fc1cf49bbae98c4c31817b6e372c71d45832556261a1c", + "0x1442a2a2eb665994c951d8134726c91989f7fd13145ca146de4e87a203ed1c31", + "0x017e10ab064887aaf7354bf1108d6946d31b435838a56d5c43bd70d3b5fe7c6e", + "0xc9f0213c74e6f3ee3bf7505c66620b61b147597ae8a4c3f0324463cb57d07f78", + "0x321a1e72fb858b8df990639bb7b05e10b7c094772af92fea9a8882b84a91d33e", + "0xcd57ed7635c2c59e8d2fa2ff04afc2c851d1a792fcf2e0192769404dd96b3be5", + "0xaf89e85dabaa1fd91efc15f0a60e2fb10be92c6ab2d726d6f7afc8ab94d5639f", + "0xf8425ba5813b811a587ad8b9fffa64adc22ad5660ff77a94ecaf479dadc7deff", + "0x9d602387122f2c064924d32fa3a62ed2e39dbdeb570b55af7a6b138534ace4d1", + "0x2569b3f2c09c18ec14468c4615355afd9fcadf2bb6c9d527e4a3457a068bb808", + "0x96a695ce507be20ae2636449116850e8cf86485eb756bca499aca80790c3dd3a", + "0xbb91a27d4a244d199c1b9dd22d0a6e687fdd340731c13c7016b7009ac49771fb", + "0x468a1b2fd3c8835f1f1b7e16f35a5a401cd4e7e0e50920198cfd3f27b5971f7e", + "0xce2aea8f42295d49480f6ccdb2f0c2d33af2b44f1f3b0b4eb45e3975397ee264", + "0x786c6d63ef22e083b0aa3c1cd2de64c238efa8963532e84471ca40a1fb210f4c", + "0x86f90dae63767ef7819d0c779ac362b2a23e8c457bb7f5c901e89dcab8a5ea14", + "0xf689fdf55a5d1e1474b9dcb1b591f14448cd017d2d708bc522157688a728cc8b", + "0xc4be4c521cc105651c4a2a0449d206c2d7052123d06bb02ba3afc1b22d802177", + "0x64debdb7293aaac3e610bececfcd7b53e103c27b03173f0cfa401db4d385023f", + "0x3d4b4017e6ffe74f2a96cf8cba7b21edd627ba5105bb87e79cb1ea88b3657366", + "0x74161c9fd283d80490b55731ddec4ebf2a1e328e518ac17b2526bb93d069ecdd", + "0x89f522f48230fcbe9fe87ffff8201ce5fd853bf7ff6536d3299368151b833871", + "0x090d72bee8471c51275662ac2fbe285e5a52552348af1eca33e657fac448db8c", + "0x2d76427152f13ec917a6e28430ad5f0f0e69b5abba49ef432a90c4fc2a875894", + "0xd490618c0aa63e1e963e457c6be096bb5242b10765b4797df232def9d0269aba", + "0x980445545153a80c8aa343a8874a80fe7fbb7beac68e58d5d90c4c5fa73d7e9d", + "0x0eeb2df77b486bf20203c9e80981787ae439fc38f39c583ffef93ea0aad82358", + "0xd0897e799d1152432c2d9cbfdbf72d2e522af23766e7ff93d51acd52ed869683", + "0xe740acfe918c168daf28f9e491cf94b3b168de4e807a80b5f1b097beff45f206", + "0x125580c9d014b8cb50a56f8a14f10ba4360fe448f18aa86829bc7f7e1cccbb77", + "0x7c9af1244e12d298778b3320718f096faabed0006acabdb0289bcb7b5c2bf8c1", + "0x76ac2ad7e52c2a1e7b23f03f21d607bb634a4290b800fe479c6c134c87d41703", + "0xdfb4b41974d53773300949ee46ce3edd2b5ea0f8be55d87bf9b2d1ba21dc30e7", + "0xde87fe285a4fb2dfe40dd79462488808c6efc4ca3cf26de46f3ac56c4fcfc0ec", + "0x72ddcbe95df0949ae31eb4ee5d532587ec1d30a358a3fa9588dc6749f3b0b673", + "0x4da323bf0509116d1dedd6ef0c486838a9c8fc7bf0d6f2899fa1c43c89791a5c", + "0x6ab3c6c40001407ecc8b5926692e6bda176b5d9685cbebf72a69a8bd01c8764c", + "0x85e1cd7421da9343f156f573c89d477f166cea452287d9cb8f19e71feb570cdf", + "0xa8f06a7f39e85e9e3c1abf454940c9d4a658f1d5df827935376f556b90670c53", + "0xa6ef83d45fe75050512a767f8d69b74a59a43b2d12a03204bea075839e9401c0", + "0x92d440c5683f941accc4b575e884bc402fedf6499b1a9f74e0500885eaf211e3", + "0xac5536524cc38b40c8f0b421af9eeaf9ed78be65bd1b180a469008d5b807cc1c", + "0x00bf19f0ca582188040b38756dc88388d1aca7cba42aa89e513628a433156b0c", + "0x220b5f691ad4fecf71e471a845862097fd754bd0ffaebc204c048aa48acb2bea", + "0xba7174d367fd0f9487aa9d1f2444a4fdf38f39d3686d7d41d18b0671653cfe6a", + "0x04e281d09ab1ff8fadd252a22c4682beafc436916ac90f81ef85d3c92fefe628", + "0x4aeb3ab7be3dd495dcdc78631a3cfece68ae9797bfbc4b5ac6ab13002d9fe6e0", + "0x0fd273deb137dcc98c8bc54f13098e355568bf56077a58f656e4c22e51ab0360", + "0x55438d435628bef382426565cad284695ebffa4ff7485e10c91c0988ba20ec25", + "0x049e4a80ef77096719ed90d324174d50a0f84cdc3da0c45d0b122a813028d2d5", + "0x200e2da004718c48d4850a0c5ea3fc9821f820af0cc24b733d80dab98d756ec0", + "0x9da660709c2b4ab2807df73bc4d11cd75a102ff5d47ded6781ad5a293ce22415", + "0xf29ee2bc658cac2d28a1e5809becab789b329938c3ce314bec172c6ae3861f4f", + "0xeca0f045b3777c894d3cc2be518cbb06b2f54c4c9d02374e6d27de0721c471f4", + "0x804b27ccfd7440ae1dd05edc6acc4194a288918958541de596530ca2b89b3b54", + "0xe0805890aed8a60e2e60d2bbf29a2d130c64ff69a82e3a78f63c9e483fee94d9", + "0xcdfde2f6274594a0a67a6d7b02dfa0fc735842c28b144a6859ef6eda842d6669", + "0x5e80068e6aa44fe7d9c810607d90e13bc364bdbf91255fa4675a7264bdc38998", + "0x622e0765bef88f51dd013b616f40fb80c6bbf6623fb226d3d811af52e4de7740", + "0x0ee735a5e83a5191c4e531c603179e90381eb43de0abb03e12e5f8d7b821031f", + "0x55eacedd69481b311baac1d17343a78a1587454e6acba2edbc560fc1c95ebc6d", + "0x2eda26ac17139e750560a6b705f60a4408487668df17fdfa29fd1f3d3fd76aac", + "0x18a465896c7cda9912dc2c7ba459224a924d0feca1d49825423277902b7a0094", + "0xf764b9bbab0bde6ce1cfbf84a8c280f1524f396aed6fb4569f59e2791afcf27f", + "0x7d7fbe746c72958cf2dc3d5b6a7f2b680c0e47247e9697a1135384486640a736", + "0xcc595d1e98d13809ed5a22277ec10f25f36f05ff7ef1aa91de45bdd471ce76ca", + "0xd9579a9c16117e08e441401696fe4b3687b40179cda267be384d044d27fea705", + "0x39c73747189563c6ee22de333270178803b17b5d1e300732143a3e553ddac6e0", + "0x52049d4f26ff9bcb9b4444e0a3d4551d2e68ba31787f1c69722754004e6c10c7", + "0xe15d9b70b804cac3efaf1eee6f980b146f2753cca6f60a338800fe67cbf47db6", + "0x150feb1be780bb1e166b4f7b54bd01434820fcb8e63244d259a56bed67eb1fb4", + "0x48441f61086ff68e3d7ea203193df77565ff8c846a5ef3aea5cdf52ead82c6b5", + "0x8fd3355dbe04679233da0c0aebf896128245349e8e3925e2f4b4e044ece35654", + "0x22395d1a8af82cc86af2697b45b86df13d5af07eb790a96624383d2d2cf35fbf", + "0x32c13c2498ca202482c0b2e7e5ed096bde4c36cdf15dbc0076042caea180d6ba", + "0xfb3fa42d8cca9e62d1226bce9a8a3d8e75cc461d2b34979751107ac656130a4f", + "0x2860141a7eb70cb951b3f45f13dd81c95ac8d86c97ee354e65c2ff31ad24f149", + "0x7c02d5bb3b990ac7d5c6a7f183fb4c4e3d2249605f6d963e12b6587e665bbad0", + "0x22a79a905b70c40eebf4aff3f9a595458e9e5a585ae7a18a32d99cb369cdda90", + "0x8e10f60b08c81d0ae43a1932f798e85bf0bac6d22ab3d399c22d1e3744134de7", + "0x03d6dda99b12d94960eeae1f67dd6ff8f41102ab00aa7b48055515262bcbcf01", + "0x2864090dfb4a667388f3c51dea1daac94245f2de71e804bd7e9f8c4a6206a827", + "0xf64e0a38264b190f611d8afe030e948064af722c1d85a16e3e20a5c4d6c9153a", + "0xb7706df2d787d33c13f2f100cdbbeab68dae726cd5a08a046d7fa8b34b029a23", + "0xf91f33d36525beb213fe0761808dc89921ed0d52c5214d704acbca639098622b", + "0xe1825f2cc40a1fefb24edbb3ee31c5118448abdd237a6e27f364623689a70a92", + "0x051450e257cd9e5d03081ab11de949a52b4391f7f7179fabe0e7f43e0cceded4", + "0xd09a4642c0fbbb0f29af7bf0ac06c080e468e2e287d1ef74e388163d5c0057dd", + "0xd7ff8cf1b7744f7c2d79255e5288e8a2c6b58ea7aac62894716149f42f3e020c", + "0xb108bbd52148c62ad106a9cd35aec9d8b111e094bbfcbb4d447745f8a54ae8fc", + "0xa4794deee36a670394a5ec4d908728a1796cea8c8564f61e41201a7ae985b0ab", + "0x4fa697253bab92379a876446a3af734dacb965722d568203a1194e078777c364", + "0x4222754bd0a480cd4e1bf0c9faa267d17a941496e557c0856d2ef9818f96bcfa", + "0x8ee7c73f3d4ba9c2764cc6e980f3b9a53fe7a1306c415c8fd8264a33dd5622f1", + "0x17f40c4b7109e2aec6c8c4eea793e196bc96c73f20c963a923fd311b23814590", + "0xc32018615cf1253161ea102dce96379f6fb9791e8008d75d86642f21bc555b3d", + "0xd38fa39699ea67d3c4892094309335ec3bfd0185790ad117d197866331a294cf", + "0xa770de6526cd0a07d0337cb18e371fa33a6ec0803203e54f1c93b276d1bd24ee", + "0x7377908db9acdbc040fd248b8ab85eefdf7edac2efa6ca90535d4241c2286d46", + "0xcb74aabcd157c732935f0d8b926ecedb3b643ca97ead5077301d2b4768324908", + "0x3885f8b2a341c91cf42d459a0f9e81bc11bea8da8e0080c884e357d79f0143a5", + "0x1c56ed46627a1c6b2495cd4d94473920b8a249c951b227e24b9bafaa00a3575c", + "0xc2e5a1d6afe982eaef9f35cfe30b4f80e224950c094d9ae39430476988199c98", + "0xd5c27345331cde1052278637de22a243e9c5022d4edc254cffb7c574615e661d", + "0xe89ad382c17daf957f02a2472fd509eefeed4a10317ca97085539839a80bc5f3", + "0x2bef80881328dbe76f8f87a6f7285209a1355e9400c31fe1e915d5a0323efec9", + "0x0a79f2fc887da96d5ea26722726d83506c1d5fcbcb50044ba6f74336d9ae8609", + "0x2d79e9b35b5bd7beb0bb392a4db71331c4bf41210c26e2a0f5e64c4de8d659f8", + "0x3a82b6fea11f99de12f1e39202c2fd69a21ea2fe5f4d1d62500ceee7de29c88f", + "0xeb1139baf2c45e867787be6df45acc8d21686cb21adb1f10866ebb1605741ade", + "0x691505332d0a4c6af51e0c49f11d578f834e961898279a21b680438b3dffd917", + "0x8cb46c9273d3ccecf1ddcd4cc86b9ae5f1e1bec57c15cd624853c2333aa7184a", + "0x06f1cb0b68758ada524d604ce8b6d5c273eaba7304d8650687869eb575799362", + "0xce7464c87dda228032c88dd3ed29b41524e847e31ebaa76b2248eee64ca41e70", + "0x64b6e5039609367f5c524c0d5266150515cad29a8a262c76614c5086c83f1bb8", + "0x76cbd65dfe8dd8eb21996529bfa0663bbcd851b675314ed4855689ed9f120939", + "0xea80a1c269e36cc9ef3aa3daa051a08e03deb23add31dd32cff7bbb86f53c8f3", + "0x575ed304982a8b6c44b3f6dbfad271ef13c13986776abfca33a9da2727f587c2", + "0x5a969beca5363e60be1c6ba433f6cc037806e1c617c78b9a3115d47d2e87865e", + "0x2b010bbdd97fbf30ff7b48263c8ef58690a2de5b4cf170829fd458d2309c7c09", + "0x7bbc16e0933d41a60d2fa96563ffe099fcbcb4427cfe884150f645f25af752b3", + "0xba7fabd6d879f55a747a3427b3b2c5e04917b0734d693f759c2ee5fe235c8e6b", + "0xa890505d5778b78e3dc6c9749e8c9c80e490aa84bf91a76f4fde2d39a8e68ad3", + "0x36e27f687d02db5cf074ec89896e557ccf240d6c0271b5858a6af8b2661104e6", + "0x6a18097d71c66f0564a0fd27b05346d2dc74ccbb1ae123ba575a2bde54f1e810", + "0xdf4b61a51fa7f576c212aa0ec1a93118668f8c5fae5e7a55a27d2d0033634734", + "0xb572f4dde7b9282f92de5efa836b9d8ba82476c229bc669eb1956e05a1a02923", + "0x616b7d8a8c29a6dea339ceb8241b86fead820cdbcee279f87680b9973c1ccf85", + "0x3c59231ae02993318e8244435bf7f51ad352ce971a2f174725f2c2456bf62812", + "0x66e778c1de1503722d7a610003596c092360261e4eff24c54f218baf5106a8b6", + "0x5b372b99a39105ab048a83fa36f2ee79de9c920addaaae0cfb5b569ed92d0fc7", + "0x1389b29e130b37d8aae7dd19b46f216c2ca8d8562c7e04be9113ace816b772eb", + "0xe947c173f63c2a4b5bc1d14617dff02d6221915debca30ce90af9c63123dccd7", + "0x18926071dedc42086bc9c90e9f3e80ea1ac09981677b7c8d75159a8b11043501", + "0xd196e45da07cd27ef03abb235166e4937b6027c0fd6de42ed71b5d9ec748767c", + "0x81440dee93f1b7ca2d634549e1f21b834e417df97338c7de56e2d630f15e662c", + "0x228a10cf2a02f134998dab3ac59a71a05681640f115cfea4dccc67baedf4f746", + "0x5ab8b611cb2eef244571059e61540fd338bdb1ee90e7ed7e5769e67f5eb2c793", + "0x3f044afb403947868f4d2deb1dce168dc9332451c1dd1bab4e94e4ff6de5bba7", + "0x6212ebee274a505464940ca808dc61d1f1a2df76820ce3a8cb9c26bfd49b67e2", + "0x6a89fdde963cc5b696beb902d174b99c0cf8ee2e2208cd8f1f25965fc2d7368c", + "0xbc5d4f775e4925e2201214b1e64c7f5080899125a01961b1e5a3d29aa6158d26", + "0x844b1f9e0da0aa6dea81cada5255248b14cc4655d739377feab11d99b77f48ca", + "0x8a972d2e563d3baa95cac6c73b23bb04e57e7db2eb27b2c6bd78f0f2b2285a17", + "0xd25370dc166a5a4ec801c652b9eb3b7f17c9c76f898c6da338dc686ea65fc108", + "0xb1d6e05e234624e144fd8db5189ed47da5befc84581fcee92176951aa7a6adc7", + "0xbae505f675148669eb640bb1183d5235260780e57f62398b244a289f6e920593", + "0xfb0cdb77ad3ad6dc5feab63979743a18d72aa7715f9e3518618be5de6c724d5c", + "0x78964f3f2e28bdc1d9f6bdd9c424cc8b211820f23bc59d61a00a4f5089eb8553", + "0x81985ebb740817d81784174ae06e160d3d37c1a1fd4b79b665fba428e6adf199", + "0xdfe038aa48f96bd190c570b92bb9771b49556a8e618bd17a3183d594cb303297", + "0x4c2866dccd714ca6e233da2349b91e7fea7dfd0055675235788e1bcc012fd297", + "0x4d9e866bf6bf2545608734b914a55f247b9acd17455d1262f6a352cc46499ef7", + "0x53be82bf17d1dc0d3d5e50be3a04fcf2f5191cd3547ca432a7814c038f709a82", + "0x1d5cda51a57e81d33e3caae568b083bb26f71fdb23fb68e1f7ceb4444514c13c", + "0x35633bad7488a5c222d4fcc3111768fb7c126065ad9b32c49dac3a44353539ae", + "0x857564f5cc2b7385db6cfb22e41a30047dfbbb333f5e2984bc5826805653e364", + "0x3346a3292d6d1f716a13fad02af61b18f6993d277cd891a162fb6df932333906", + "0x267114f270cb5c8d7be4016d4ac1e6950cfef777e36e746829963c9c08fa604d", + "0x9b133dba17f550b709ec7891bec8ddaa99a909482ff50dd1ab0f473a64ccbec0", + "0xbb9d1242e6dca8ac62b9cf77f5fea02bf6ca33cd8fc60b75370eca5050e7e3a8", + "0x4b03fff35d5eb647982f79cc8c6fdd3514a8b2d95d45af83a06352a9f857b770", + "0x1251e1e7d8ba37f5ed242c045d14bcee63d044bcbeb300d2036cb746675777c4", + "0x3ea4f140b4dc19071603745962ab84c2751c9fa7add74f165cc4955bd0a23384", + "0xdce6b80eb188a9e240c73c86c13554c89176a0a3a322538480683a9f1187e518", + "0xf67d61c218998a24048c4dd68f903190a0072c80066b53e34df7e3a837e18339", + "0x9f886a4835f3f8fc010ad96e3e2a3004647c0f3c744d98d527980383975dc6f3", + "0x8a7920678b5f2687620340ac774f00239e48bfe1cf443c795d6cf25fd885c98e", + "0x16dfb4a0448f4b05c18115f6e2c128be6d6596b338723c912f22cd80448de1d8", + "0x497588ed59d0e9b9733bb7caa08fc36deeaae3396bd3922272d69f4861f06420", + "0xd96c89c40ba3daeb23f18a83471be008dbf8cc75668a72bcf8d02cefa1efee7e", + "0xee4e9ee2ea8a057649b9105c68792f2479b7eca57276211d70da3097a9fe4904", + "0xfd789aa5a980fee8a509079acc5ad340c98faeaeb31a1774683b93b1753289fb", + "0xf9e19259a14a532c93e935d252145d41988c16faffa4a185df11ed5f23715d20", + "0xbb0b8e1c03cac49cf3b45bc031a229334f9f25aeb59d410a12fc17c7e78f759a", + "0x5993b045dcbc40baf27d780c48b881c864f9aa21a9d59b0d4ff0377aa64e7c7a", + "0x726dd11a76be09acae4dbe103f0ba092d654206dee07511d6ac97c673437d26f", + "0xb43c5f0bbd52398157dd6233a5d8a03c931166150df21e8643f02b6c767239c4", + "0xcad3878512998b146cb2c6eb61efe07206c09677687df4198d9174c66e3ef3c7", + "0xf8a7872ede6770b0f48c924888c3b4d1b410639ddf98944561f837acee7c21fa", + "0xb31f007ab3deec8e37f7b70d4c5102a06eb9b37abf384ba3da0d7f32d29d320e", + "0xde77b2e81f239a80caeb44731b1f272a10528909f7ef6e342e36dc29edf7373e", + "0xa9818a101b730940a6b7698f76d6c08ef7720b12fd267825202355c3edeccc72", + "0x962cdb425d23201004d3f39a045e10aa39994fb8425aca3a2298b4ef1c9cd6ae", + "0x3c2a14b29d91c93978fd5a178adf3cb1aa5d60c8eb0b60d4c05f3f32b79ea42d", + "0x86d861026e8918c570c3190e57244aa89be34d57aa0c0d4f65f98abbb547b255", + "0x91e3b5fdda9b9087f6d267741a383c6c9a566851e03501d9090228046d793a32", + "0xb8e4f9fa0c7ddaec74a87492af4679aec824a08fc3fb267dc6f41b764145040e", + "0x7da2db73f48b0ec869db149bdb9ee85f50587720cb0fd6a765a23586f47e61d0", + "0x04b81ae4616337f5a09700eafec29ec84af8b0babd528913c8155ae3a47545e2", + "0xd2ca213e6a01e43f2eaab755003f25512fde5c1fc9d809c0b6ec437b194d5899", + "0xaced62e93320daedde74a5aa1f72739698c286f9ef4848b7be0682d99fcdd385", + "0x4e2f1707f429a5be0f52b39936d90bd3faa1693a4c18f0926cc300e2c2fdf8f4", + "0xc840e1e29894fb3ff6fe5572075b0a1e98e33b251fd8dd5996cbccf041a48b4e", + "0xe3d69480c26d810001a144e37f251e3ac4bbbc7558a0550a4ed8f8d5a06f09f7", + "0x7bf69d3d3bc804cc504ef7d37fde00fd3649dcc2853541507585e40b67bead0b", + "0xafe6cfb04d00956f24e4ebc3e9e0a23e55b044bde113654a5787a8c05add0a4b", + "0x3d050577e4169f4205e19f28f309142665acfd296c2ab5c234b6b5acabab07be", + "0x2c74c7ab90ae5058daed0c9551f0c9a52a9a5b10871fb0f71733fa6c39969882", + "0xf3d37db16c16218aa47b1ece8b7d178c42f1d06ec0141cfa0e5ffca27b21969c", + "0x5894c5aea4a461941788104ba38e9d8d39718ec8e4948c2675d83195584d1df5", + "0x564b9061ef80ed588a658fb138240e5c6356a5e1bd557ea06f85b4507dc4b73a", + "0x6a802d7836b1db57aa5b6c68b43fc072941e2c8090e73e26de86a0956eda3876", + "0x05fd4b6d5633a83e48fc91638d3f39cc6df164dc4187c78c19f4bbe78dcd12ee", + "0x481d0df4eef16c19e38d8a08889da1c2279d56ad2b6c6961737585686ff42280", + "0x0faa8363d77063a3ec76a6ec5786e9d64e0d028912c3ba5272c06cbf7c1d7c52", + "0x2177ca5c3420989d7493b28534489f2269f28e97ba167772bf5d17e9f9efd274", + "0x0694512d03ba47a5f36d024abed8ce1d15741f56c32baf7deb5b9a5e3afe66c5", + "0x38364d47d110cc930dd32fdc5cb7aa4e96b88e783b7060d2302c8235da7b4e8b", + "0x7f63e39e98887db4dfdda2cdb29ef716425f30480371beea60f2f70a8df7263b", + "0x4069d32514b8216a07b21c23b75cb63f12967dabec053304c990ebc8de9cdb99", + "0x954da7bca7ec16e62189cc6ae2878dc347d1677895cd978f2dfaf31593cd6bce", + "0xe9eeb5d86aec47d3f43f2b899fdad816b0c30e3040cfad14fd3e821cc6962ecd", + "0xae81c8ca19bf6b92752fcfdce9441f7c5b540d911a5e4315e561e9eb22746a4a", + "0xc84bf9c8ea619e0658ff70101fe588dc385e1e997349dbe112d66968ed672113", + "0xb113ba865fbc89fd495934f9139731222940ef72804eaea010f12ee167406fa6", + "0xf70a9e70e90a08c8fd629ab4fe0d1497896ab2d5e00852d18fe672346e337155", + "0xc1e671394b86e70459a39449e8ae9cd0b3e05602639e256a9da4cc3c047f6cf7", + "0x577bbcb4066d1aad7cbb75b5ce0f8f1bd7885511b1a7652b8f8600492656d673", + "0xa836b6615e1a4b6e306399e9da4d2c661985446822c8c05939da1a35414cd328", + "0x7042af635abf9efb3d9f5d6a2d25e638b6e9b8c6ad61591a7f88cedd4b0667aa", + "0xffa0e1f57683d082733344e57ef4aa267dac50dc6d72e8f36125e7ba892d19bb", + "0x2ac6846383bb7ca0ec56883b797c379336d64d9753a16ce48ad14d4086da2388", + "0x21499ae4629bccd17845c58f7fd13a8a72ece3557f4c11cc68af46426d3c3057", + "0x7bbb60b32ca0ec25a830e77790f73d11ac92929d2c9dc8eb70b8be026c7a7489", + "0xbfbd58d0c7f635ecbef3eb27d114068f953c2ef4ba9407a33c5516156d622e77", + "0x08643068ca01cdad8fc46e5190a9c90423e1f95cb4960684977c6c7980e6c0ea", + "0xea194e1527fb2202da5fbac43239179f2cfca95206c34c56042f69ba76ef3cca", + "0xe7e1206b62032646bb310e8b11338d0c94fef89151731fa701767d22105570c4", + "0x222084eaaff69aa8c1addb139d566e71d95dabe7fbf1cfcfb7d604eb3ab133a9", + "0x615c903ae923f5f8769befa3d9850d53b36ee3b47f2f136545efdace34e72de8", + "0x20f73e2ac4f18b1664a1028184367aa3d7b4b6d16492e199991cb0cc334908ff", + "0xe6fba0dd6fca5aca6cdc8b64f1509e6bb2b7819906cae07649bc311cec2829b4", + "0x4d73a9c7d379fd300f03be9e842ceec41a4c00ff35610756e5754f33929e8719", + "0x875ce56746e3303d28b7b6345d21dcc26412625d5972944a9a6039cde722260c", + "0x8fbf9148420b9c2eebc075d757ffbcaf0ee18373f1827b6b7c1051abe1b47bc7", + "0x44f7288451825d7b7bd4e4c8f82d9e017844ab9c08b77b4cbcd01fa39a755420", + "0xc150ccccd85a88fbe1795603c84193173c6de5814952763be4915061bf9490ea", + "0x936a08521d40e87784ccfe3bd50bf5f0ce28e8ddba7e29b4ed4139ae5030ace1", + "0x023d64dab9457ad253e42455b83a48217bf31b6779365694ced4640b640327e6", + "0x89a921ab2c309f0b86689c3d8f1eb6e9daa745c83b0d1a04cbc5331f9f96238a", + "0xb6f2020f682f34cd41dd273f19e6449c6b2b0b35d3bd7bee96363f97f028c27f", + "0xe61f2638f6cdc94607c9e978d6cfdc936a126cbbec0a97e27ed6733683b0794d", + "0xb136303b946b359cdd76c1a588046757221bcbdef6b7c4c070d9603bbe575b29", + "0xabe07f82dab2b17a4990f425a0daa1b78fd22ad33e68c499a7fd418c5f09d6f0", + "0xaeacb7ce46ffc86a5e08d6a71b7304f8f7f5fd794ceb0710888bf1825e7b0620", + "0x5879c7fe56421aa2a41731a4c6aeffdfe690b27c1468f5467ca03f69e7c74149", + "0x8a962ce351c06748908f8565ce0aca5b874c2ff18e99611cf12843a1bf93dbc0", + "0xa7557ac54d37f207d069407ebc80c1bb84a85744763e585c15199ea0ca906b47", + "0x26b637ab94949a1e7243736fff67435d28513b978a9e2173d184a64659f3b225", + "0xb80d141f221fe90d9aa80875c1c7d4f82d16a8b170073c08248878aee057c78d", + "0x1e4e58da25f9c1feddecbb771f6089dabe79079c9c8c98d78f8854b004f0b5c6", + "0xdffa5016e82a215af34cb2d7b54535e32c8e0797dafd1ad0b829ca434ddb7596", + "0xb74197a700d2ac5ac4105291ffe1567d146b3eec5447af86701b1599e42637af", + "0x4104494199a7fae34759bca78e8490f41dfc1eec726f33555a2bf87b3f923a12", + "0x0100ddc8b90291faf2af0a2b36975b7c7e247dc65414ad429f4b1d68a2f2ab75", + "0xe4740fc1ca3cbd20871da439f3af9e7a0aa94ab9e1eed2fb04931272f5546c3b", + "0x69eb680f378798e9dd194e3b985078b71d18ed637199cf854cb8116c5d2ebf56", + "0x8828999c917e550baaa229b3157a7914d4eca4903d96f2778702a7ac578bf897", + "0x3db2bba067a16d29a3ee7c68c9b5ac825f2814fb9b8490a5db3c1bedaafa33a4", + "0x079ebcfdae5f5457bc5cd686d65af96d8c15806ef4152eea5f4681ee472cc303", + "0xd2609a6ffbadd712bca9ea357311b30f79334667973c024e03670e26d2420862", + "0x3168229643f898f3297d3af867e03e1360d99d265c1e83d1440f045b0739767b", + "0xd62aee5a8f14ad052619317a81852cf563bd716a0ec621bfb25a15f9736deb53", + "0x144bb80a52cca2b9813f7f1ac547e96a57485c345f7eb4fbef7a0c6772292848", + "0xd8f21d1aae77e7a8610aef8ebc35f28c9f8dcc07463f4852a5a17db1eccbe795", + "0x8d08043b6144cd3d22c23675390363dd517fe2e8b71e29a7d1107f18d98f7607", + "0xc5f997af5b8c39a7992a3d64ae05d10791c18507c93977477954c4e89b28da42", + "0xcdb5b0e653ff308a24fc98b6cc28f1bdb4739673f2d96ea567edf9ffddf50c05", + "0xecba2883399e952a885fa626663de0c922e98ea1eb57b8b286121f5bc0a6b147", + "0xf32c9760a0ca7966dbd017d7326f50f15daf020daf31a5258819d2d55fb224ee", + "0x8e5cae1773d0aa309991d024ee02ab1ffcd0ffe895503e2f94ae30551de3d7a1", + "0x49d378c0158bfeb25b7ac2914bc1b45ddee970e58001ece549f60033781a39cd", + "0xd19e11ff8d23a64ffae4c886669d7e52d48ac281ad1283885ebafaab53e8ff70", + "0x6c91b89d95efff6ce209d96bf5c1dbeb5d6c01710ba03379be0f0a845d3ac936", + "0x4e514d655f12589e3c57a6f9ca2879658ea9c6ab0a523f5f107ac1a543e2ce67", + "0x44e9876929bdbf0e6ca42c42ae2222812f6bfe6fd957ccbc5f70a9eac80f0892", + "0x545859fe34e436e0d4183b630cd69b103816d883a0648e67ad955328022d5aeb", + "0x121b2a96f0bbb59565fadcbf50a02de161d57a8dd5871ebf72e039832104ab20", + "0xa96f4ab77346235358b680a23cae7f1cacbe21cd0e1fe775c4b0721bbee46bf3", + "0x80b235a11a3114ef45cc9c563b4646c338eda7e7ba2b077b0acf640197fe48eb", + "0x1a11074a30d0cdd88a26e648e673d0c3b6376dd8e5c8bf23012684102a3af830", + "0x51b806c229bc0755a73f256da981ba450d32a008306e6bf59ba4c893e1cc5795", + "0xaa74491a1e7d0edb6bf4e979ebafa5af05dae7d5d0f067303627f00e8fa56afd", + "0xcbf802903c9d29e00b22fef9f2875944f3d0e36a87ce6e49beb230979fb4e838", + "0xb92c3755d629be2c446a19a4a0bba3212f60c1fa5b342d60930379a74d41169b", + "0x07ec15dd0bd56f2acb56a5db6a530a23cdc33b7a7a1c4a8464572e6fd9b8626e", + "0x7f9c7a9b5abe417243e3c74adcd571aa45783a9dece0187a1466760270ba3b6b", + "0xaf9740a3960868f6e759d8f18221f3c5f6a6138afd40672e9c8e37e437be9bbb", + "0x7ec7bbcb17bc86e276a13dcd41513d7effaf08b67e71aa618528087f34efc208", + "0xf2903fcde2aef9045af6f83a3677ab98bb23adc5bda60de7d46509bba777d5ff", + "0xcf83625f4d891af2a93114908f3be5319b89372c31bd23960ad20f8031b20ce6", + "0x18aa4145b728ef0427165710bd0437dd5551a69c5056dfb171b546e35753860a", + "0xe139097ab29aa83f4aac8765e9125b109ddf2984ea325e7a1b4d881495f29dd8", + "0xceaf62b97e71d8326d5f66e81b26ea2b0519fe38c6a4b1b38d693d90d3ebf1dc", + "0xd23c423fe5fa5ca547a84e7e34f401ddc846af42956c6b052eea15950a0fe79b", + "0x947bb7c1e8c90826f78c4139def8e188af907cdb04feddb80360b4d712e51103", + "0xb8c65dbc12478ee24def67d15e845c4a52d9c4ce4467674faa81df72120061e5", + "0x85a642a8743d2d4aba389ae7a7ffa9b0687d28d4702cf45130e2d66eb43a31d1", + "0xe913e63914798d9b3518f204a989328f97520460d0e5925e73c0596d62cfd9c7", + "0x7c7065599f3f5cdf0314cb9ff575feaf604507859c20ff3a63e86c3dfdd2a5b5", + "0xaa2d5c80b189f37cfa00285362abeaaf430b9dc198a042024f1e148b0e888585", + "0xd5c0cb01fcee8af87b0842ad630ea13ea0892c97acd8b1443f6a6c7bcf7bd5b4", + "0x7c41cef1c4af5d15900fb535f0b1f3ae78de50cab2046dd65785feb768ea9437", + "0xf125c0cf53777bf2c49f9b99b804b0df68155c1c3dc554db66bf0327ecd62a70", + "0x18441cdcbc196bc6a4e4a5d9216132d3e075e60d2efbafecfd352621e6b2175b", + "0x0c4b7a2df6e6f1c4a724a8f4cfac0297f3c1f4248ec298a98d4c871820219e40", + "0x43bb93b6bc4c61df7ce7547405fc95a0bcb3ad7874562413dedb1744826fc4cb", + "0xf5f736e014cc04ab828edabde6a104caffe3ec3b286f84d4f6ecc2f7e699974f", + "0x8a912ec8dfa51053430d2e1fcfb67e7961fb7c9eb34006d08848d2d3b21c742d", + "0xd2567779967cfde9018c42f059490cc0c3518b9a32ee5fb1306cd54ca0ced771", + "0x3098a48f2fdf02ac43531168734d661673f82ac0d2e120f10ef0a00460db134e", + "0x9777d31e299aa8fe591612462b85ebb3c1fa27d60248cae8e90e4ec8ff00a811", + "0x880ea730ca93d9639ef1c2ab33136b16eb447b52b89cfe5b74b7327e4d12e4eb", + "0x1ea9f641d8a740ed394d34d7d1648f837667ed622867dd05fcd5f1387efb32f3", + "0xda9f20e5b4a61f72291e1a0438095af7fba8a55196a448c88cf3d1e1ea9bfcd3", + "0x949bd03ef394076512b6cb8f41c09a8d41304e045642c4670585a4e4b54c539b", + "0xafc89365b92724884bce8e10ec1c5c9c9f3f4a7a38effe56392642a73df487c8", + "0x447f42123c8ee209e4940605aa753cba0590bb4cecf366d07ee7e15e11ba7447", + "0x9a99f57a47d31a95f015347d38a3e39f66aa942747dcd65fdfc5355f61ea31cf", + "0xc131af20ca03905d63e74dde7d44d9138d59ec6e95b8a283fea9de870b79ad84", + "0xebfd03f29b2251499f04227ddcff308d5367bf534cd59f42a090a5a6c64458af", + "0x071ee5f0da2f97fca59606b25edfc0642371251d9c07aaf0e8010e5afaad7bf9", + "0x5040af11773c0c1b13fdcf6f2a92dff924d7733ee7d1caa83cfaa84dd204ce3b", + "0xc25afdcda4dff3a3b6a15e6fa90dc54a05a5cf33dea503b9e152a7fde6ceb9d5", + "0x9604f964d6de2c263139cf011baaf97aed1ed08dfbca158ecb495986d461261b", + "0x177e263de95e9c29f3ad31f286117d30ef069e981d825e767bce8031e634d84c", + "0x72f10f3393dea1a41bbe4834d728e8429aa5651c043fdf5b881650328eb62118", + "0x3969a0524ce2ed0d59f839f4abefae7ad9b2750b698716aac552e92079fae19c", + "0x99876fc077b178d584e9c29160ed320fe62c908ed406a2fca7ddf47de487f3d1", + "0xbd211392c93f76c541ddcbd83702db71a90a2ded78d530ae61c00c7ba72d9509", + "0x5e75d857ede2f1af61f846b5f7072225bdec659543c33b24fdd1bddf04de2f93", + "0xdb4c0c2519e081e1a6ed40a3a397b9f093f8dd4b24613d3f18a1e4f7ef94af9d", + "0xb2dfec129fe8cd0f7ed568b0a984fc37dae704c497770110b944d003e53b3807", + "0x6ba3b9ecafc2a469338c398c7588806d499b98720d3bd9c9bb2aa07a0fbf63bf", + "0x69a711d99e3e061cffbc1f6b10f4036de181a9bdb3824ee1a7c83fe15fb2ad41", + "0x2340c3402304d06a71998d35a2431774cd2198a170a3cf62989205545c6f0dd0", + "0xf7b9a019517ef3f4fd6bc5c4a98dc4b97e742e2f0f088d94d8b6442447118c76", + "0xf556a0b838ac7dc6dcd57b0e52f53df4a9f171221d620bbe7958ca3d71671787", + "0x68ebf1d4a6009f64a8a2f1b53611d43404a539e8d51c46dae9873ac1fd9548a3", + "0xb37c2344e14dd698bf0988608ee56a8f6b31fd2d18629c9a7dc1f027955b39a5", + "0x066df722de25d7455976b6be2ec850d97a6afe7f934fc83dde99aa5d49cc912f", + "0xdcaa64c29d2e447d85fe9a0329b269a283e27885ac75d874793bc4989d726f3c", + "0x6ac4870c173b2404d30357e40bb14db4ec0b87f35437da89c07af88d7c265420", + "0xaff8d57640e559db7dbbacbffbe7436d2708f5c3be26370b1b54a8e771eb4141", + "0xec0a42a3464caf7ba5b95d185aed8ce0b9e0696a03e2638f71382a92106b3957", + "0x7b77e84bcd0b0602128148fc8c94dee2e4f28ff1a748ada7ca7f5d0855e1708d", + "0xe0a572dde38708200a814e0120522528bd0ad3be8862293a21c69151fd72659b", + "0x2580506cdacfa687e1dc7344aaeacf2cb2a2eb8a4830c7ad83ec8cc0ef70a1f5", + "0xf5379cfc470fd6989c140d3d3bc51f9ca7a18761928783424c1947ad33e07e4c", + "0x582097b699a9ce614e823fd7e95235e8e6f002d2eea67e87f56ef86735599f24", + "0xab1a683bb247b5f0f3efb6a91f1938e0938326e81e6cdde2278827e25aed99ea", + "0xf21eb6fa7877e3275690765bdc7f0186e5ba0a94b0bbf9ebf1b4b1bf7aad3add", + "0x3168d818b07b7cc71912d7d92f2ec15d10ecf22c9ec20da610068c972c933c4a", + "0xd3d49fa35320e95473a7197c2a9c98bcd13b4b491ee96ac0199f3fde94123706", + "0x193d71d673a1e1de8267df397c41b8e3d9fb5b189b96da91c31be63456afaada", + "0x6579fe55af7c0d58f00f241e257db748566b750a59b7c05372b0b14fb03282ca", + "0xf6195d1b7de28d81a3f7d50f34f2a60f7ba6cf48d4ea9593404e48e6b33b8857", + "0x3bf3d52ff3c498761bbc2598c449d64a0cebbbb28201dec3633c73d5493b048a", + "0x57c4f9be1b0fc5d7c6f86a9297aa4d1375e9f5848bb2f3c1f08851f2c77a614a", + "0xa6ca06afd1b9fae9533d53a9188aa8497a7c92e363ade6ac094023bcb0e5f46b", + "0x09c669b50d1b26685f20817d0a096168b7d2a4949a20e50a2d665be4c3d4086e", + "0x8aa7d92376364e98c4549669e798af1c2e654a776f0561c89c7f7b2540725539", + "0x935240267eb3e1a1a6a34966084681ca4d8792142c4fc45574fa669c518b2e8e", + "0x7e339371cb38e9babe203905f4026cb90f25c8b10def4781ab5330dd0a63af63", + "0xfb588a940601e578fc7c3286fb4ad68f76dc1fa3dd88251193d9655fea77e056", + "0x90a702a71779ee4176ed8eab503deb43c63628535d78f9742ac95ffa5f699464", + "0x122c0341b0838cdcbf934769322e8fb8df77d8f8a666fe106cf87373bb719eeb", + "0x53e7ace007789e4c3513b16eef872dff5b6353bea42d8a3e3912fd62e14b8f83", + "0x3bdad07ec3a785d36f8c41ac9c0716a2cad6004bcf1e7e899b06c640e1aa1d9a", + "0x6d95da2724a3609af3466474e44455a787b9286f0bc016f13690a867f2f89756", + "0x98cd50a72a2fe944b00613dec757270f61e8590002d2e1b35bdb6bd4290dcb31", + "0x3b995783e2812c5d7fdf10f83170c8fd142caf1526698a9d094a24314ebb1a09", + "0x81cf7500dd9e75fd872b00378005a1bd180fe07be7e7cc3dcdb06ee006c8721c", + "0x8e7f5b4940da9de2b59fde73201351d01e5ebdd3ee863cc7653a919c64c35e84", + "0x6bd0c1bae338f0922d5c0fc951d089f9c290a42a3744f0a5b4b0b61a5248a4b1", + "0xca6c19228395454d07246773fe87ea86891a0fdeee12e8bd261625a62a426c05", + "0x83d0b617af7fe6f23019ff4e04bc71b8267a4dd9b79ae4ac29470e99cbe7466b", + "0x901c51cf6fa4726b8217b807f7b0d2e0b4ebb71b6a28e8168d2493016919b267", + "0x6d101782b820ab580dbe1cf9aacbc065279c18407e70e965ba3315bb77537c77", + "0x831996d9ece576f424f0c11abe5f3847229500ca651c452fd6ac234cc48cda4e", + "0x5d8fe79678589811621ff19ebfd3d6c4e2d0035ace9a197368b58deadc8b6fc1", + "0x8eda2c20216008d1c04f5bc93b5c2d9f8c3635e2ee440cee379f0470cd1a3c9a", + "0xef3608f4b6e9e835f3360e78b097af504df75f96796b4e30c9b4e643caf9d07e", + "0xee7fd312bae21e15346a412bd82265cd4231449f5a11824938de30fbc6400b19", + "0xd659949d718dc3522af4a4794d0c46b346109b5de4a8b87247d1f1a4c414b766", + "0x7567bedd64cd79119167944a7e623997ddf134c308a546724e432c36ee2a2d39", + "0xf0adf777a52828b31e70712776b4e56215a1038e0c14f2a5ab5bbf035623067a", + "0x92daf2c7cef9eee82db16820db7c60a3113950448ae4b149a7b32eb6956326fb", + "0x83825ec2c5c8a323cb5ced10e99fa0d7e9df73b9a158c522267ab0fb05ee7030", + "0xbb9e1680cb85ae48da3322345b06055fe4b668ae7b31402fc4d13faf439b199c", + "0xb040722e777fe01ac533eafcc93b869cfab5bc67f9e2e1044ff505c011f55f1f", + "0x0c488f1776428ffdd8eb03083fcc9dde010d7a3d4c08c8f8df2fa93fb206b2bd", + "0x54a0b71a8cba973d26bb89e5e07421b8c73dc59bf95f6190bb3b86e7962788ea", + "0xadf110bccb6d34276e3fe4701119b2527a86431d6f057a02e30118a6c6cfed54", + "0xe01ab7f11ec408b5a17ffbf6cabc3268e16f6be0cd0b15d73ee8b8e2aaaeed54", + "0x7280b73efa14f10d39306f2d2dc7832c0e47fadbc14f990a821c76d60be529f9", + "0x3cd2b491fa5228b4cae420d5c2a2da9a5e07a32f2147f45f3fa35dbde38224f8", + "0xdcc642f2123fc607d991e9794210770453e1befdf52582df0bbaacf85a148048", + "0x79a1710d32bfb57c607c5bd23fbd2b8fe3356f586172e507d2688185be8993ca", + "0x9ed1335deff01eda0b660081d44718b7cfa0fc69c3e9946c9733dd7ea64d6f8f", + "0x37f70e002a78cb3e8266d5ce7959a45649359b6b6ada51482d097b9f32e93179", + "0x814f9b9e4af3c84c31f40af0028086d16900f9c63f519f7bc3c18c0eb5c407dc", + "0x9957e067f5e79fa6f40bef2036c6d19734146ef231ffc22263bda5c36a7a12ec", + "0xa1a240b8ce8973e91dec89bd147a3b7af274fa1e233cc56b9dd83bcc9311a029", + "0xac083bbbb8455d3e145f59424d19a8fd7c6162d32a193c67405291ff64113bab", + "0xf2182db4682212298b31bd8bd086171a719bd68424da98dc133c83ad043ae903", + "0xb3015688c0e0f55c6e97034615de00173151c4334c72aabe048c47c244ea5082", + "0x15ebd9c48235918e2d8b2260acda2610b71fe3c4ba7f853238df940d021cd60c", + "0x847729223cc8abde709cd283dcc4356375ff89651f39c9adab865fea75e10708", + "0x39c9a1bd9e21caf13132b33a272b429c68cb7af1b8db3df08280860dcce141b0", + "0x31f21eb219700c01c3d910b2a922788d790acf6ad91c8de739795f1a740c220e", + "0x7fee191fd2c31b723a1d4a57af9366662e62eec889d886b0325f0c1e2e4f9d57", + "0xc682c555d050a03b8164ca927920ac6f97be4f96eeb8efe8e4fe3d7b48cc8424", + "0x1b887661820a95c845fa5c8e0bf10028b81073bbfa072a2f81f82b4aaf3c68e2", + "0x4e86af7e8a0aaea28c67e2658b97540e84ebd4cd1a9dff33c99a45cdbd0de661", + "0xa93100e0dcab1d0799a13d40ddb459e32f6e95d2c661094d7e8d09e008ed2486", + "0x2d15cbd72ffe23920d63d6916f68c5a75d2400b0417283b54ade9dab8ba3af5c", + "0x72f199719868bb4b4546407f7dc690180b2e8359ab6e747fe3ca4861c59bcfdb", + "0xc3a9a2ad727ee7623ec35671a330ff150e504bd20365a7dfec0295909e9973a7", + "0xe4dec421f674d4917299076c9885c49c51e7cffdc5253696b552b9c3ab307cdc", + "0x426f724354ff7fb3114bc2e66360c996dfdb1e8585d3967738285a2030a89b07", + "0xf39f6051d26d8b21aa5592dffc3be99480a768a0be6afb8b8eb5bbcd4058d4e4", + "0x061bbe83ae46285c935b9bfd646cc54f4da034b33dfa8b3b8c902995a77b7d1e", + "0x37b7086aa13372623ea527ad0dbf08bb2162b274420972c55030c4001e86a1eb", + "0x2de6121506702ddf0eb5ec8e2eae6110ad41b3982c73cf8382bea329e77a8cfa", + "0x4e941c3da784368dc838b7b8a77ee51868160a79362aef6caf0981fed3ba3d36", + "0xad2e32669978cdc836e32d3dae7a7a89b1d0e28e5f938247d1a6233eb055b481", + "0x8d0d13cfe3e40eca8c6ec865aef23fee9f5af445131bf0aeffdc87e4640a1212", + "0x8bf162d69c4565050dd4496e244ebfffa69bf13abaa9e7770b8173999340009e", + "0x21a33a33d92a99de5af52ae238a799e3307258b8b91a959a485238bad31f913a", + "0x21a95996aa2f4abe48a35617de16894f14292afca769679a63a03d68350cc362", + "0x57bfa7d2037da6aaa07f44594cef60a598ed2bc1218b9f6af48dad1b42759e95", + "0x7324fefadaab09a26c065bd98d3e9a56eaa7ef78df1269c1152bbbaaa6693256", + "0x41722de103de41c72010d1f19166ae0ccee2bb72314c719945f4162ffa165ac1", + "0x19b2f1f42353f935f46f8f9421bcf06e2ee573304d0efa13071d676ea174e18d", + "0xd7fc39efd2a392efb8de6d7d1c7807ed7daee0c8b82115acc60beaa7f6d9b86f", + "0x5ae63df9ecf9aee8cac4d0ce1edd37a95069d61c8d8ef886a150eda4bad4c87b", + "0x6e7aba83a3654cae6b12a6f87a9739735dfeb43ff67e309fe4701b8b17937915", + "0xd624f46d01a186da11d15eef4d79250191605e51ce19b9e02b62e65d84dd1c38", + "0xbc134d2f8acb6a60d424d4c8c6087fbacbb5202251c89ef720dded9947e3c4d7", + "0x6e8e39dca2960de07134fc043f73c9757c42c6827ef22d063c44a5573ce6c8f1", + "0xe53089dd7ccb7e0e78f3cd7d7ea342ce5a2316b50d6bd033ae621f6ec4329a46", + "0xca3eca5da2a9ded537dcd471390b7d97716deb0c5cd9e0d6a7e2addbadd97cac", + "0xaa5799394d99d90642d013e8359a40f2cc72e6b49c91233ed930ea1d32b360f6", + "0x8ae22559b0296959ef540aec5702dcc03d2b2bd9411b69af756d7d9e12e6cb90", + "0x5067bf825ad66e89ae1c46f1ebbbee8a77c2d285fb66c01b732b6c3f629b2ca2", + "0xf2f1c4304b5ec8b314fc6a4f9a9df69472cf0a132577217eff1c0a80443885ae", + "0x4c888be868c74ae86a9c0648429bdb207d18794e3ad6b9ff79d9291dfb0d0b46", + "0x3083508ec1669fa69d5fa4ab1d84501868c7a054a24b0a432b74be1f3bd0ed1c", + "0x443f7e4cc89e3c798c788fd40185525d8402c2160e5f3434986922c6f8179ab1", + "0x16d395ee5e915ea950dfc7639f90a29fe04ccbb47a2b0cd303ea719acd48ed58", + "0x901df34bd40035ee95569ea61c8a9874fd9151fef5701e91f02578c896704f20", + "0x4ce474419d801fad788b158bbf40dc7d7bc2ba43e1c2424f91b858055a7b61ea", + "0x10b2d6126ce1183cb227e291b184d7541b3380e100a70d876587a0aef2fe588a", + "0xac68a6a550c4a40c723ae37abd07d9e2d8486a30cd4f2cf7285f6d74882368f7", + "0xa0800069211efb656d0df4a81f1febfb48f251c712ee973afdff37a2baf83b99", + "0x53293ec8346c1a44e3cf78017dd033dd90be4737045e1c55d27130d7f6f36dbf", + "0x0a92d75455eb5c2167e2c07e1575a9580c135debe7bafc8d15d1fc2a25b984ea", + "0x32e6f505ec66fa987746c67a470df78a7a0fd136ef814ed24f3b5e0988cb53b0", + "0x20e6f99aa4b002e35f97900a34322af373397dc98ec28ee668e9921bc41d7219", + "0xc309a8620421c52fdae475d4a29530a2e56dc0051a28f8c4205c09cba5443666", + "0x0fb5bbd851d3860876e1dd038fd3f8d9e5b8e8b4e0d3b83ba0bc3d06222ac9ed", + "0xd71830cb6f3ad0776795865aedf50ceee94ba9ec89533190d3dfe2107a9e0e9a", + "0x768040f6401331b029bb0222b7494ddd21525091d936641f4ef89f00cb5b20e8", + "0xc52b410050774495fb2e22e0a94bc97dc72aa86cba7b20e8ce6c8a20ff03c5e1", + "0x026072e68a13a5ae0721d9e47ace688b75e16ba76ef67ff01d0a11f10e80ddc3", + "0xcfb1040048b9312c0d274a6b2576c7907176a983f0c0e02b120c10bee28f438b", + "0xd3036d04273279c5fa5ec4a096b8fd8a68a46c0536c24519b0ee5368c5103d84", + "0xdb9bdc3edecf7280dabcc104885942eced615311e93c2fa06dea812adc626baf", + "0xa25ca25f83c418bbfcba8a16cf661902499d3651b497e75161aa0d0bc4c3717c", + "0x96221feae35068b02e1540f06be277c27e938459af8718a2c883406b2582ba31", + "0x5584e36296dc2cc61e21c1e6539f66d918b800025fd6460da31f869cbc357289", + "0x7a0de103b391af8b2a9af3e6e5c2c6bf309d61cebe805db82d3addfde5395b4d", + "0xc5b000944c368f67c77e6c6564c5be5bb1fb84eaac76ca2bb3c7ddfde64e5635", + "0x544ea39b4d37a698bcb0c2dbd689ef90590e160db52deefe446d65aa7b60b20b", + "0x32160ce8e604c62c09814f8e13e795b654cfda57fdfef4b01c38ae3d078aaab6", + "0x5def86fc59562b477277bd6a2c1f1bd5a9192cd969c4ac578b16ea73031d5aa5", + "0xc0fc111d2c0eea81e7d6e0221c0465cf950772fe8dad94476c0e33d528928f9a", + "0x1b803a048d3ab8e5b4a49b3550c6586d71dd6f5409da6df0bc6df76de94e64bd", + "0x549d98175538c94e098c93f77ccca9ca0cbd11ab7c270ffcf1d3a908adb4d8e4", + "0x17d331df92fe4d8b57acde9bff8eced101f461e3470691ba7b46df9ceeb8129f", + "0x7a496054ef706cf89c0c55d848cac64779091799d2d64d6cb43907d2222c000b", + "0xe86b6819e9a482600ce2c9b42d248dfa3262547eb7ed42a6c1ebdb138e62206e", + "0xfd49fc9e5f4eeabb74a7d9ab4ae8a0e583ca153ef4c09e697f5c0207e6505ff7", + "0x9a297101369d0cba7b6f7edfe1a4a432d91f74f88ed3473ce14dc91cf616e903", + "0xd66a19a2834cbd910f2278b2bd5cae2ab9b58fe1a9e583cce4e2d22903d767db", + "0xd9cf8987c12672ec0e2bb97b25567f3f914fa8fb89b1186c6b665967834025a2", + "0x54e18efcf10895d51cf8f8dd6541ca097899fbb1880abd3b68aefd6e657a0af2", + "0x759486342c0162d26a8d2a0881affeca579a7cad80c32c6885d910f9e966ed94", + "0x02b2d8cbcb7244efb913aac80895e6cfbc81b60cf831b0a19b2354e0c7e00b72", + "0x414736aea69a7be69bed90c56eea05e5df9db9667f3b0b07ee6622442628fd88", + "0x75db93f08ee2236e4cc9222f8167c15c5bb31b4b9cfa1fe62f5175bac9c4c6de", + "0x07c460d27a5df943f09d114d99cc39c05135953c416591a7dc9bad3e2c064796", + "0x42c32a832d8a9911eeafbf0ed6550cce1be3832304f22a63d6edf1b72d92053d", + "0x2f8226acee0e5cb949592c1e77ac3da86f43f3834df940349cd6a55626ec7d3c", + "0x3f3e88302fffecb9751ee31a36de3abc6fb7963e264988904daf8fe6aec18fc8", + "0x0ea47b2cb04403773d9420ccfde549fe763bcdfe350c7546e3293b4612e096bc", + "0xf03a38c16a3ee05197b7c77985c2640af18479ebfb7db342416bd0baf2645eab", + "0x32c9844dcd2794e987ab14af8aab52d9925d77279377185697bfa362907f4bf3", + "0x72985d640d5ee8da6a1e0aa3ab71a19168802c29e3ab915d61910523d2d8a550", + "0x4453f4c055057ac3fb2780fa8fe131b6e08ef90a5b30930a83d4cfa5120ff6ce", + "0xb13ff4f56efd0f41bdcbc06c8a917f81614ca363f8c06bb3bd748467e146f959", + "0x172419af274d54de1a3ec6b10e5e8f98d0941d07571f9a5eae977597f0ea6e2e", + "0xa70469fc4070b5a675838352457cb6b4566a7a95ef843b0cf49fc0e02a342b0a", + "0x15072136cb1235007413c137115f4246ff22dd33bce99dec813042d6638ee502", + "0xa883cb9646a12a6f13eb4e1fde9422767be38279eef669068db6572d449da45f", + "0xe752e1e6ddc10633853a0c997727644b92aff7e46710c2c3850f6994edf83072", + "0x880e73586a7d6d79b4a7bd30f551d04e928747962ec263867f53dc33709353c4", + "0xcca01d7edd840727db14e657c9edb63a5518b41115abbcd848a60c9800e8b244", + "0xdf231e025e5c85b82fac8c836df78f5ee23509bb7b363b018ab27cf83680ea52", + "0xb42b4d31d1838886a6cb91123748078b5d07384afb1e574146a0174b6e3609fb", + "0x243c0ef11b9cedb39146fc35149291ea31906f60f56642ec3af28753936c7b08", + "0xac496eba34056ac76fd2c20c300bbcb66bc9d5257859aa8b8480fb1ea44cc60f", + "0x1631a82a3927c93bcb93d055ef94963bd00c264816768d7a12b1e6844b65a226", + "0xee630ea7011dc95ef7c9dab11e2c89a8065a85b7ee3ffe35bacf38efc61706e6", + "0x8bcb73df8715723d55d5635d5b1d5332af85b2945871172d22e10a2f19cbc9f9", + "0xa498dea3b8eb89b40f963d9266a2d4e71e3492c614e597e08dcf565e54d2d8cb", + "0xe798586f9f5bd8def445e5b66e1cd1037df1fc1e043b7c4a804d1cf368aaff70", + "0xc7e9da2ee64ed53fa9306e35e019c7fd74030f3065b5514189c50931d70372dc", + "0x557acd95f593728a732f1ef04b94acfd5475da37a18dafda2cac957db46b24a2", + "0x303f4929efdd5f54365d8927aae229df99e222e76e42b494e216d5365a4330c2", + "0x6252147a7a16f988726467394919d25e24a28756726bdefbdec768cc84d125b5", + "0xd9bd80354f25a846ccf3a47dc928b1d47958598474749795d4f1885f172fc996", + "0x356cc71f2169917a76e87355c358eca62bb5c79fc4f38c4992ad57cb35ce493c", + "0xadf1135a2511fd2cdbd33006738725459f33edcc593b1aa936b55889fe9e9687", + "0x8359e90f401234e4a85695c7e369ef5c107b246088baf3355046934197705c89" ] }, "nodes": [ @@ -3920,12 +4577,13 @@ "0x0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "0x42ae50", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0x42ae50": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x8a61c8": { + "info": "EIP 1108 transition at block 9_069_000 (0x8a61c8)", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -3933,12 +4591,13 @@ "0x0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x42ae50", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0x42ae50": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x8a61c8": { + "info": "EIP 1108 transition at block 9_069_000 (0x8a61c8)", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -3946,14 +4605,24 @@ "0x0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x42ae50", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0x42ae50": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x8a61c8": { + "info": "EIP 1108 transition at block 9_069_000 (0x8a61c8)", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} + } + } + } + }, + "0x0000000000000000000000000000000000000009": { + "builtin": { + "name": "blake2_f", + "activate_at": "0x8a61c8", + "pricing": { + "blake2_f": { + "gas_per_round": 1 } } } @@ -30639,3 +31308,4 @@ } } } + diff --git a/ethcore/res/ethereum/goerli.json b/ethcore/res/ethereum/goerli.json index e7aaa4c485a..4c00cc43ec0 100644 --- a/ethcore/res/ethereum/goerli.json +++ b/ethcore/res/ethereum/goerli.json @@ -130,12 +130,13 @@ "balance": "0x1", "builtin": { "name": "alt_bn128_add", - "activate_at": "0x00", - "eip1108_transition": "0x17d433", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x17d433": { + "info": "EIP 1108 transition at block 1_561_651 (0x17d433)", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -144,12 +145,13 @@ "balance": "0x1", "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x00", - "eip1108_transition": "0x17d433", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x17d433": { + "info": "EIP 1108 transition at block 1_561_651 (0x17d433)", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -158,14 +160,13 @@ "balance": "0x1", "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x00", - "eip1108_transition": "0x17d433", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x17d433": { + "info": "EIP 1108 transition at block 1_561_651 (0x17d433)", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/istanbul_test.json b/ethcore/res/ethereum/istanbul_test.json index 1276dc4c53c..0139d10c2da 100644 --- a/ethcore/res/ethereum/istanbul_test.json +++ b/ethcore/res/ethereum/istanbul_test.json @@ -67,12 +67,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "0x00", - "eip1108_transition": "0x0", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -80,12 +81,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x00", - "eip1108_transition": "0x0", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -93,14 +95,13 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x00", - "eip1108_transition": "0x0", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/kotti.json b/ethcore/res/ethereum/kotti.json index bc696a7db5a..7876fe8cd2b 100644 --- a/ethcore/res/ethereum/kotti.json +++ b/ethcore/res/ethereum/kotti.json @@ -13,6 +13,7 @@ "accountStartNonce": "0x0", "chainID": "0x6", "eip140Transition": "0xaef49", + "eip145Transition": "0x1a064d", "eip150Transition": "0x0", "eip155Transition": "0x0", "eip160Transition": "0x0", @@ -21,6 +22,8 @@ "eip211Transition": "0xaef49", "eip214Transition": "0xaef49", "eip658Transition": "0xaef49", + "eip1014Transition": "0x1a064d", + "eip1052Transition": "0x1a064d", "gasLimitBoundDivisor": "0x400", "maxCodeSize": "0x6000", "maxCodeSizeTransition": "0xaef49", @@ -116,12 +119,13 @@ "balance": "0x1", "builtin": { "name": "alt_bn128_add", - "activate_at": "0xaef49", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0xaef49": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -130,12 +134,13 @@ "balance": "0x1", "builtin": { "name": "alt_bn128_mul", - "activate_at": "0xaef49", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0xaef49": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -144,14 +149,13 @@ "balance": "0x1", "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0xaef49", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0xaef49": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/kovan.json b/ethcore/res/ethereum/kovan.json index 34755e3ec2f..2ba7b0c7a63 100644 --- a/ethcore/res/ethereum/kovan.json +++ b/ethcore/res/ethereum/kovan.json @@ -5348,12 +5348,13 @@ "0x0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "0x4d50f8", - "eip1108_transition": "0xd751a5", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0x4d50f8": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0xd751a5": { + "info": "EIP 1108 transition at block 14_111_141 (0xd751a5)", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -5361,12 +5362,13 @@ "0x0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x4d50f8", - "eip1108_transition": "0xd751a5", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0x4d50f8": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0xd751a5": { + "info": "EIP 1108 transition at block 14_111_141 (0xd751a5)", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -5374,14 +5376,13 @@ "0x0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x4d50f8", - "eip1108_transition": "0xd751a5", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0x4d50f8": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0xd751a5": { + "info": "EIP 1108 transition at block 14_111_141 (0xd751a5)", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/kovan_wasm_test.json b/ethcore/res/ethereum/kovan_wasm_test.json index 54c4a1b83f1..70143d8a8de 100644 --- a/ethcore/res/ethereum/kovan_wasm_test.json +++ b/ethcore/res/ethereum/kovan_wasm_test.json @@ -63,12 +63,13 @@ "0x0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": 5067000, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "5067000": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -76,12 +77,13 @@ "0x0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": 5067000, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "5067000": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -89,14 +91,13 @@ "0x0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": 5067000, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "5067000": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/mcip3_test.json b/ethcore/res/ethereum/mcip3_test.json index 8f1426b992a..aee04b36574 100644 --- a/ethcore/res/ethereum/mcip3_test.json +++ b/ethcore/res/ethereum/mcip3_test.json @@ -123,12 +123,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at":"0x7fffffffffffff", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0x7fffffffffffff": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -136,12 +137,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at":"0x7fffffffffffff", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0x7fffffffffffff": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -149,14 +151,13 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at":"0x7fffffffffffff", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0x7fffffffffffff": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/mix.json b/ethcore/res/ethereum/mix.json index f788191c96f..ae247a92f83 100644 --- a/ethcore/res/ethereum/mix.json +++ b/ethcore/res/ethereum/mix.json @@ -48,13 +48,23 @@ }, "nodes": [ "enode://aeb6070deb50efeb41c5e4283a6a3b08ff701fef90e3522161c145f30df2852af3dfc51ba74591f7c9d96b11ca4c3c2b354bf58dd243f2d877f6eecc2373fd1d@139.162.15.124:30313", + "enode://cb4b0568607c97a3af4857700152fad9c79908a89319310268c7f49184e3f7e0c88c8d3504696f521c8aafcd00644f9325f76cba9427181b1493ff7ce230df00@139.162.15.124:30303", "enode://e0c926dcdc5c1cf58b2ecba371c577c28c28c91f9b210093178a812389b65e5b53f0e478753b94fceb0b36645b779a915ca57c0c48507fe4d7f786508653656c@74.207.240.177:30313", + "enode://37fe8c0f8d667f110316de3109dcc2e9c9247219998e9ac395db39511bef697f9646f73d86a43da491efce35458f53ac3ac0994b85f7086bbf244809d4e7eb7f@74.207.240.177:30303", "enode://a2a2adb8c12b9b189306050013a44f28db30f92fb3670db9675a049b98b96eb18901d6ff7b961b6e96cfa3923ac29e8f647ef452f0a23ddfef3903ac1cf826af@173.255.195.214:30313", + "enode://ed6fea8e7389bb75ff34846e4aaefa9157c9c79828c6404f4a0ab6b997a613f777aecaed5092c3f51abdf918926c925f7ee4f4cffdb0ac37775d03070a3d6b55@173.255.195.214:30303", "enode://5460fd1ad217941befd0f8d060e6729a0535a0738770aba56827d1313c09aeb68e3098d458aace59faba2c6780b8c9c30cb140b80cd8e30ca3a074ce6d3344d3@50.116.38.52:30313", + "enode://9109e01dec60b67afa5aea77da17e0cb9a716a547469be378eb122c545a3fda9082e553624ff9e673195a715d5628ebf046a6c4ff315e566420e3bdde003bd9a@50.116.38.52:30303", "enode://99fff4ed887d6a6a7b6e03a657c35c06d0eede1909ec289a362bad9d37dd4085886461bbce83aa484ce1327badb3c5958365caa851d71de49dc4530e075b64bc@45.79.128.151:30313", + "enode://4b4c06445175b77ac07eba03ac624f72e4e86065ee8bbdbca5f882a2a333e2608e6ef2ae5b5779816abd8d07ae6ec08f75888edeab3bc06f2b75871feb14afef@45.79.128.151:30303", "enode://fd80e04c75559cfdd9ed8c08ef2c39c5bc95021f7cbaf31acb601914bc7dac7c34b470b90a05e519bc8a8435a46e1ce51053ae07fac31a83567285c34a79c6bf@139.162.224.203:30313", + "enode://d2e678247450c0a7aefdcf03787d4905deda2a6889f02071b241a1309a6bec6ea1c8b1160f69635dee0b4e00cc83656a601b4528cccbd85744b811654ab24b13@139.162.224.203:30303", "enode://4742134a153c108855eb16563424887ed3aa5b6b74e4b713c8e93a10c376d954ff3041442716bdf9ee28fab2ea09f04d07e3366f834ea472c19820b7337eb27a@172.104.130.233:30313", - "enode://799d0a8836e17ef7fcc58b3d5ced5bb1fe474b31a09851f938d381f4556fa8954ca308f6a178d22ed56769a8b878ac8f9cc62c889f9cafab45a3bd4f6024bb29@172.104.68.7:30313" + "enode://9aaeae0129af1bbb2e3590a71cd1ad0c320aa1c03e15c9eb3563cee2d8a7ca43473f43197b6dc0befe5bcef6185196360fa8b4b0d82d8ef11e2ff65553a1efa5@172.104.130.233:30303", + "enode://799d0a8836e17ef7fcc58b3d5ced5bb1fe474b31a09851f938d381f4556fa8954ca308f6a178d22ed56769a8b878ac8f9cc62c889f9cafab45a3bd4f6024bb29@172.104.68.7:30313", + "enode://ab7b1aab2439aafadcb52f8353e60fc1eea55ee5a01b4ddf46ecdeaa2e869c4bf305249757dc74baa78cf05c5d98ffe5c2a008851f08cab6096c78a08dee7c17@172.104.68.7:30303", + "enode://ab4a7fb0963e4951bebbefd2ec09ddac018bb27600a6063d755dfc10be118cbfe3954ada561afbce4cbda6f62364c12902b9e6bdef258aff36b8a73db3c0f161@172.105.16.240:30313", + "enode://30ff1bd89f58a1adae1f2b2ed1e36fa95caf5c2c7e085cf3a49f14705427ca7d7b2508060d058ceda57c708e8aa4661304f3c17eaae4da2e9cea6b64b3893c2f@172.105.16.240:30303" ], "accounts": { "0000000000000000000000000000000000000001": { "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } } }, @@ -65,12 +75,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": 3000000, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "3000000": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -78,12 +89,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": 3000000, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "3000000": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -91,14 +103,13 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": 3000000, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "3000000": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/morden.json b/ethcore/res/ethereum/morden.json index a4be222c16c..5db2a4c04b7 100644 --- a/ethcore/res/ethereum/morden.json +++ b/ethcore/res/ethereum/morden.json @@ -37,7 +37,10 @@ "eip140Transition": "0x4829ba", "eip211Transition": "0x4829ba", "eip214Transition": "0x4829ba", - "eip658Transition": "0x4829ba" + "eip658Transition": "0x4829ba", + "eip145Transition": "0x4c4cbd", + "eip1014Transition": "0x4c4cbd", + "eip1052Transition": "0x4c4cbd" }, "genesis": { "seal": { @@ -75,7 +78,7 @@ "0000000000000000000000000000000000000002": { "balance": "1", "nonce": "1048576", "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } }, "0000000000000000000000000000000000000003": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } }, "0000000000000000000000000000000000000004": { "balance": "1", "nonce": "1048576", "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } }, - "0x0000000000000000000000000000000000000005": { + "0000000000000000000000000000000000000005": { "builtin": { "name": "modexp", "activate_at": "0x4829ba", @@ -86,43 +89,44 @@ } } }, - "0x0000000000000000000000000000000000000006": { + "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "0x4829ba", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0x4829ba": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } }, - "0x0000000000000000000000000000000000000007": { + "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x4829ba", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0x4829ba": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } }, - "0x0000000000000000000000000000000000000008": { + "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x4829ba", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0x4829ba": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/mordor.json b/ethcore/res/ethereum/mordor.json new file mode 100644 index 00000000000..ceaa9de6d51 --- /dev/null +++ b/ethcore/res/ethereum/mordor.json @@ -0,0 +1,189 @@ +{ + "name":"Mordor Classic Testnet", + "dataDir":"mordor", + "engine":{ + "Ethash":{ + "params":{ + "minimumDifficulty":"0x20000", + "difficultyBoundDivisor":"0x800", + "durationLimit":"0xd", + "blockReward":"0x4563918244F40000", + "homesteadTransition":"0x0", + "ecip1010PauseTransition":"0x0", + "ecip1010ContinueTransition":"0x0", + "ecip1017EraRounds":"0x1e8480", + "bombDefuseTransition":"0x0", + "eip100bTransition":"0x0" + } + } + }, + "params":{ + "gasLimitBoundDivisor":"0x400", + "accountStartNonce":"0x0", + "maximumExtraDataSize":"0x20", + "minGasLimit":"0x1388", + "networkID":"0x7", + "chainID":"0x3f", + "eip150Transition":"0x0", + "eip160Transition":"0x0", + "eip161abcTransition":"0x0", + "eip161dTransition":"0x0", + "eip155Transition":"0x0", + "maxCodeSize":"0x6000", + "maxCodeSizeTransition":"0x0", + "eip140Transition":"0x0", + "eip211Transition":"0x0", + "eip214Transition":"0x0", + "eip658Transition":"0x0", + "eip145Transition":"0x498bb", + "eip1014Transition":"0x498bb", + "eip1052Transition":"0x498bb" + }, + "genesis":{ + "seal":{ + "ethereum":{ + "nonce":"0x0000000000000000", + "mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000" + } + }, + "difficulty":"0x20000", + "author":"0x0000000000000000000000000000000000000000", + "timestamp":"0x5d9676db", + "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000", + "extraData":"0x70686f656e697820636869636b656e206162737572642062616e616e61", + "gasLimit":"0x2fefd8" + }, + "nodes":[ + "enode://03b133f731049e3f7be827339c3759be92778c05e54a1847d178c0fdb56fa168aa1e7e61fc77791a7afdd0328a00318f73c01212eb3f3bbe919f5ce8f5b4a314@192.227.105.4:32000", + "enode://06fdbeb591d26f53b2e7250025fe955ca013431ded930920cf1e3cd1f0c920e9a5e727949d209bc25a07288327b525279b11c5551315c50ff0db483e69fc159b@34.218.225.178:32000", + "enode://1813e90a0afdd7c1e4892c5376960e3577a9e6c5a4f86fa405a405c7421a4a1608248d77cc90333842f13d8954d82113dec480cfb76b4fef8cb475157cf4d5f2@10.28.224.3:30000", + "enode://2b69a3926f36a7748c9021c34050be5e0b64346225e477fe7377070f6289bd363b2be73a06010fd516e6ea3ee90778dd0399bc007bb1281923a79374f842675a@51.15.116.226:30303", + "enode://621e28e529146fd501709194885f50540c494f1a2985d1fb4ec8769226b5cb0b0d1a11545926077821474c2767cdd87888ead8a2509a2c9069dd5584e4b1c3b8@10.28.223.8:30000", + "enode://a59e33ccd2b3e52d578f1fbd70c6f9babda2650f0760d6ff3b37742fdcdfdb3defba5d56d315b40c46b70198c7621e63ffa3f987389c7118634b0fefbbdfa7fd@51.15.116.226:30303" + ], + "accounts":{ + "0x0000000000000000000000000000000000000001":{ + "builtin":{ + "name":"ecrecover", + "pricing":{ + "linear":{ + "base":3000, + "word":0 + } + } + } + }, + "0x0000000000000000000000000000000000000002":{ + "builtin":{ + "name":"sha256", + "pricing":{ + "linear":{ + "base":60, + "word":12 + } + } + } + }, + "0x0000000000000000000000000000000000000003":{ + "builtin":{ + "name":"ripemd160", + "pricing":{ + "linear":{ + "base":600, + "word":120 + } + } + } + }, + "0x0000000000000000000000000000000000000004":{ + "builtin":{ + "name":"identity", + "pricing":{ + "linear":{ + "base":15, + "word":3 + } + } + } + }, + "0x0000000000000000000000000000000000000005":{ + "builtin":{ + "activate_at":"0x0", + "name":"modexp", + "pricing":{ + "modexp":{ + "divisor":20 + } + } + } + }, + "0x0000000000000000000000000000000000000006":{ + "builtin":{ + "name":"alt_bn128_add", + "pricing":{ + "0x0":{ + "price":{ + "alt_bn128_const_operations":{ + "price":500 + } + } + }, + "0x7fffffffffffff":{ + "info":"EIP 1108 transition", + "price":{ + "alt_bn128_const_operations":{ + "price":150 + } + } + } + } + } + }, + "0x0000000000000000000000000000000000000007":{ + "builtin":{ + "name":"alt_bn128_mul", + "pricing":{ + "0x0":{ + "price":{ + "alt_bn128_const_operations":{ + "price":40000 + } + } + }, + "0x7fffffffffffff":{ + "info":"EIP 1108 transition", + "price":{ + "alt_bn128_const_operations":{ + "price":6000 + } + } + } + } + } + }, + "0x0000000000000000000000000000000000000008":{ + "builtin":{ + "name":"alt_bn128_pairing", + "pricing":{ + "0x0":{ + "price":{ + "alt_bn128_pairing":{ + "base":100000, + "pair":80000 + } + } + }, + "0x7fffffffffffff":{ + "info":"EIP 1108 transition", + "price":{ + "alt_bn128_pairing":{ + "base":45000, + "pair":34000 + } + } + } + } + } + } + } +} diff --git a/ethcore/res/ethereum/musicoin.json b/ethcore/res/ethereum/musicoin.json index a7cc956b47d..cc60dc1bd5b 100644 --- a/ethcore/res/ethereum/musicoin.json +++ b/ethcore/res/ethereum/musicoin.json @@ -131,12 +131,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at":"0x21e88e", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0x21e88e": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -144,12 +145,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at":"0x21e88e", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0x21e88e": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -157,14 +159,13 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at":"0x21e88e", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0x21e88e": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/poacore.json b/ethcore/res/ethereum/poacore.json index 0b1f0f46779..379dcd583fa 100644 --- a/ethcore/res/ethereum/poacore.json +++ b/ethcore/res/ethereum/poacore.json @@ -62,12 +62,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -75,12 +76,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -88,14 +90,13 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/poasokol.json b/ethcore/res/ethereum/poasokol.json index 9caef0bc945..db39c46540f 100644 --- a/ethcore/res/ethereum/poasokol.json +++ b/ethcore/res/ethereum/poasokol.json @@ -68,12 +68,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -81,12 +82,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -94,19 +96,17 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } }, - "0x0000000000000000000000000000000000000001": { "balance": "1", "builtin": { diff --git a/ethcore/res/ethereum/rinkeby.json b/ethcore/res/ethereum/rinkeby.json index 790d6d33eaf..ee02408f6cc 100644 --- a/ethcore/res/ethereum/rinkeby.json +++ b/ethcore/res/ethereum/rinkeby.json @@ -125,12 +125,13 @@ "balance": "0x1", "builtin": { "name": "alt_bn128_add", - "activate_at": "0xfcc25", - "eip1108_transition": "0x52efd1", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0xfcc25": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x52efd1": { + "info": "EIP 1108 transition at block 5_435_345 (0x52efd1)", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -139,12 +140,13 @@ "balance": "0x1", "builtin": { "name": "alt_bn128_mul", - "activate_at": "0xfcc25", - "eip1108_transition": "0x52efd1", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0xfcc25": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x52efd1": { + "info": "EIP 1108 transition at block 5_435_345 (0x52efd1)", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -153,14 +155,13 @@ "balance": "0x1", "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0xfcc25", - "eip1108_transition": "0x52efd1", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0xfcc25": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x52efd1": { + "info": "EIP 1108 transition at block 5_435_345 (0x52efd1)", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/ropsten.json b/ethcore/res/ethereum/ropsten.json index aefca8682cc..cd535241424 100644 --- a/ethcore/res/ethereum/ropsten.json +++ b/ethcore/res/ethereum/ropsten.json @@ -28,8 +28,8 @@ "maximumExtraDataSize": "0x20", "minGasLimit": "0x1388", "networkID": "0x3", - "forkBlock": "0x40E80F", - "forkCanonHash": "0x3e12d5c0f8d63fbc5831cc7f7273bd824fa4d0a9a4102d65d99a7ea5604abc00", + "forkBlock": "0x62f757", + "forkCanonHash": "0x3a024a13310ec9b4805f681b17c3ae6c94167d1c6494e83d70a887ebc27df5ea", "maxCodeSize": "0x6000", "maxCodeSizeTransition": "0xa", "eip150Transition": "0x0", @@ -67,8 +67,8 @@ "gasLimit": "0x1000000" }, "hardcodedSync": { - "header": "f9021aa0a8da98b6ef1e12b6c49e85b0e965f1ed1688f5e3605f06bb3c6ce4f857aa0bc6a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794635b4764d1939dfacd3a8014726159abc277becca0d03c319fe68a91e22fb3b945a8dfc73b817976e29cf57e6c8425e6a02e9bf034a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000849fe1546f8350d001837a121d80845c9d55f29fde8302020b8f5061726974792d457468657265756d86312e33322e30826c69a04bf72e97bcf64717bfd655e2bca9ed1a5253cce5373268729161b1786ca4710488db3c50627f9321c4", - "totalDifficulty": "18787961645682286", + "header": "f90219a081352ab3cd380f66493aa270deeb239af085e68a83579dd8871a0b0a7c7fd4e2a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794295856bcf02b2017607e4f61cfc1573fd05d511fa0a886a42f9a2733e392a5f9459f70bb133e5012f059d6cb6aeb360a7bb766571ea01ffc81fa17e357d368e82f1a658c8b129877818e34fdad26e32fa60ac4b12fc7a0946e845a5b468d8c679890632ab9fdff3349b307ce864c7b13195e4f80af4777b90100000000000000008c00021100000000000000000000010000400000000280000000000000000000000000008201000000010000010408010002010000000000002000010102080000008000080000000400000020100010000000200000200000000000000000000010080000000000008000000000080800000080100210000000080201006008210002000002004000000004a0000010800000000820c00010100000000000880000000800080000000020000000000000000100020000002000008002000200100000000000880840000000000242000000020100408800000202000000200000000000000000000200000008000001000000520080000000850340be271083653001837a12008344ded9845db0acc49ad983010906846765746889676f312e31312e3133856c696e7578a0a23e3a33f308378c4cb1eb9b34b40c224844aae072c0eba928a840f6d6ca69a28892892d000574e452", + "totalDifficulty": "26251713144679901", "CHTs": [ "0x614648fc0a459451850bdfe353a932b5ff824e1b568478394f78b3ed5427e37a", "0x1eae561c582dbb7f4e041998e084e165d0332c915d3a6da367638a8d24f3fafc", @@ -2655,7 +2655,659 @@ "0xebb3e8f76f3b6a95285154dc11d4bd94ac4c3a150383ed69f5373499b1983dc3", "0xb0919ed300acac5f912f01611a428861db27ffb8129a80495f735f0ac608ab35", "0x2ee321d9d805b78a97210df2977ab62b352705e308773b90e0f4e923adec377c", - "0xee00cb02e9b86978ae10b119924bbe6c38f730c1d1b621d32c9d697e11105871" + "0xee00cb02e9b86978ae10b119924bbe6c38f730c1d1b621d32c9d697e11105871", + "0x3138c1f196e8b3de9369c3c8ee1d556de1bae00896cac87b4083bdd7a691e738", + "0x0a777c53b3be3f3b136b24585dca1b7c85f7b0edd72f2173ddc70b0a1bc8bd93", + "0xbcb300ee517ac8356c36c002da6f2ad562c31c81a3353d63925e044b10d0412a", + "0x503c3b1da233bf2f9f9fa13b0488aa5384a3cc95dc21e6f2e73577dd3ddc1974", + "0x0d07a00e18f3db6896d0879fe87cf7aec13f30a957806f74cdb0c47ccac035db", + "0xb6e92e6a32c5434a79448503a269e6e5ccbf70bc59dc58957915621eb5951e26", + "0xc2381981c2a38689e6ca1121fd33eac2881b1aac64a850b7f5751d587a5a79f4", + "0x83c0f655616e7565d63333d8a5f99baf2f4e0a7dc1520d6c4142b1be6931cdf4", + "0xb17c34ad30548ca1889d7aa11aa12748f7c02431d64d7f53013a10b979ec7aa1", + "0x34ab63d2aea17cf800fc2aa3c8589fcded1a732bbfa2102315adfa03596a4221", + "0x6a7bae77e28fe9ea18b59e4bd4b81780daf520309808560d533604c0bdf76f84", + "0x64df132fc5319adc69249961df9830e5d63945564d912fe901d80e7859a87057", + "0x2323352a8e2f13d442fcebc760ece470dfe5542188f6fc2d38f4db6af48bc959", + "0xe9944f4b2d9e3fd7aad0446281d4971463c2e53029d7e7f40f8b0daad1a29d67", + "0xe012a3af1ddc10881cbc1c62c1e0e7205db5edebe74bd0c8d1c12bb9a3f47e2f", + "0x26672ff6f0f02089b7a67837aedea5e54acc3120ad4f2b936948d7053d74ccfe", + "0x70b1eb24d9c2544e26af43212c0cf70e3e2ba58316f5372db5daed02c45907bf", + "0x7156e65df46bc1d62e8f8ab4c6c2115a5129d28ae9e96ba779b4615fde08f267", + "0x15212b5fcc31d204cee80a4ba392e731a2fbe40e1a23d8fdcbc6ecdd665ac9ff", + "0x1508823c086bb5269f60b452fcaf3d58b6dece236704ad479205e1b6b870b7a2", + "0x73a9ba93b3a5444294b466acb8c560c0a62a16dcdb5c90eddeb19f9eb75dfd31", + "0x9658cab50473a5fdc06f3bf07b34981212f215bdd773439cda3a5a37dd96b7ed", + "0x1b76828d177851a98f2a4e4a5a28e2e50dc876878b4a44b7654c409ad6a58a4c", + "0x7345477276953426e16dc819818ba09988d1e2b552adfa47c5f7cf6c1bfdb3da", + "0x2419a94e778ed5aeff0552a884b87b12e3b4f9b87c2e5df66ebe9260f38f19fa", + "0x4c14ee271bcb543d5395324a6fae046e133bd3e34f6a3d1328c9d3c77593756f", + "0xcbd9935f32d758ec070e06c393f5bfb925515058237471ccc89a6c7126df2fbc", + "0xf945621e7c926f2739488d96c4e5fd42fa91a5be31e9a45876fe982166bd4cfd", + "0x427ae8d29c63525078a803c1e40554f77685866a46f2ad9d0f772ad0c10b43ea", + "0xe4a6753800fc0d20c0ddedd6c716f8fafbbe636256548170a871d2913c885c9a", + "0x4da6c6246e60c496e059dd80bcae5ff30dc285e2a2db142eb4da3f15b00c0df3", + "0x4d1ff252edc762f25066a466e26154162942ef71ad13c159c102d94e427cc926", + "0x663a98199d967f55acdb313e901cfa23768ae21e7b5efa6b6de88b93e96b08b2", + "0xf025c69018317e95880e27a96910c6a4fac0b5d7a52abaab7c616af08eab1090", + "0xa5dc8339e0b823dc3821867cc84bebff11fb0bb8fe2f54ca5748cd2d8066f68b", + "0x9b3835afa0d0f1aac1a603d1f322940f4b84da6c6352654fb10aea202b3b84b1", + "0x41cea6f1e1de2697e58cefefbd4ea1118acb43aaf9ec7a9c116d14a5310e925f", + "0x5f1e42931b16c26642f351b24bb063f6ae7dbceca760961fe4d07dee0286082a", + "0x9ab19e309d5a4fd3596f0979b268473eeccd04af6674968e1e340a47c6652d9f", + "0xd6dfe22679bc3590594bfa1ead582bd4639f1b3869915e802e8973666d29588d", + "0x92f5589f356fbf8e4c5b12bf11d5f148d94f0e9f9297bbb32a73ed8fc409ad8d", + "0xecdeb77e2b35647c59aeb935e6fa4404ddecf9287ffd84d02c090d6772f1a68b", + "0x18abbe4adfb8d2365a14201ceb3966e561817ae497754b65cb5441f64bfec184", + "0x4d57180d082ec586a97573b383a12a59664d9877d86140281af0eef88f8dc8fc", + "0xfd52e379ec75f3645ccd83653370e107970c5c61573ec688986895d5e825303d", + "0x9327212a8ca5d0139e6728f8b39caa571a7821782b49a2edb96371daf6320571", + "0x9d9b1cbc011a31b99943d9dc7a2a8ff2da0992a5e3d22bf24685723b85545452", + "0x8661975f8565dd506ee26d265ed78a06d0c60dc150df594b6a1cd09c5c383e5c", + "0x98574ee8064f0b276433b8d98f7db55b7387775c03d543f2a8d1f77cc9d9bd20", + "0x6fd37be595359e52e5482f53ab66c9e76ef393085485a4bcb344272607cf2c0d", + "0x1d2a15c07ac3b45c024b4c14c976ed18d0f2e4ddfc84fa153414e301115b70fb", + "0x1ebb4adc19ea75acf90cd66ded504674367b70506f4813e22cc856f10c36973a", + "0xcb0198d5b6883b582c6b389e6f98ed77494f3f6ed232056dff48a368bbc2b9c2", + "0x2bb53b3a72fd65a4a090b49301c448fe44fbe0c7773e938af9c511070b442957", + "0xbf8289e45461485d9ae0df36052adcc1c43089e173a54663330a4f1ccd6ff7ea", + "0x059c82830dd4ffb040cc75a4b354483d81bc6f16ffd0545029112845f8db7cbd", + "0x68fa73438a9093f1e2e5a88a244287cd1d068bc28ac0c7c88cecc70f2b7cfe74", + "0xf935992c7eea357445e47fceb2894d4c04c618fb238f6a84251c919cd2e5b97c", + "0xc2b6a5bf4ab7f6f43fa9f59269116929116e5f136faf8acc7a565eaf4f6f5a0e", + "0x0f06da2edc35f959f8f3c9f9b16b13df3d1ebc5de146d7467f342116648bcbb7", + "0x4cccb59e57aedae4c1aa83a19126e846b14701be2971f95868c9055b77461db0", + "0xb2a64c59c4a3878472f5fdc4365e61f6cb5a67a1b453dba34c2d257f97ac44cd", + "0x21d74f1e667bce1163c8da46d522bb39a6ce777b618c6d2551c01427a68a2316", + "0xe1d84da4146c25e3d89bece4bcfd19ebaf684086604c53e702c07b938057d88d", + "0x6ff86b85371f732a285b19e9372a2567529bae071a439e80be782c5e3c462c4b", + "0x86fce707891c52a94cb30d50c4bd08fdd5567b88f6676f35228523847c966032", + "0x59aeb5682b2a3443e6c8bcc4d425e3a59872090bc71dfbc6cacda9f02d9fb7c8", + "0x7bf9a30fae3402b8d0aa4f7b18842bbe082c1e11469f635792225c8e8e536f9a", + "0x3f13e2ce31229a9079f04f77131a170212bc64c1701c2ddd54713c0e59f03991", + "0x2daaafebbc63db1ea0a8fa6e5037c4da16a92fceda2dbcb9576fc2fa28b0ee74", + "0xb14610c614c0c0c59e295fde6c4ab0e4b4c174385fa734cc8a2095dd6a95358c", + "0x14ab25c7f34bb626f581d38faef3beee599300a51bb62d3e1e1dded92ddc95d3", + "0x409ca4196a8db10326ca032cd14b7295981f0a779a42c7f0233d71ebfec3b19f", + "0xa283859dca46f41b5ca2f403aaa9e2356bf41e06697b5722b245c68ea3f81b2c", + "0x1c917355509fab582d5556e340b71c6962577da9e189b703456dbb7fb55784c7", + "0xb928315f7ce4508f4014962fc95a5942a5c0ee66af2e125101ab02d04b6cccab", + "0x00c6a46b1b4eaf7f62e2133d454f850ef1dae798d5aff512f607dd8037e53bbc", + "0xc042c1ce9cc355d4e054e5880f7c09fa3bcd58047159fe6b08a02c80059acaea", + "0xbf7b1e204a760ae2782e926e202428312955404786b85ab00688da616682b085", + "0x36d29378eacf4d587bc5a569e8ed572cbcb71be0a016d69909a05457915962b0", + "0x27674967b0e43a5f70ec168cb00df61a1227da4ac61660769ac2a7a2cdcb2598", + "0x9bea8f7596f72268a51be1b993cde5adbbe175ad48334276295687a76f801fc1", + "0xd9e17222c824c8293b05702e3170a059543bfa3e4bdd19828203c7072f013eb4", + "0x170685db98bae956224b3a57e4cf50ae4a8874ddc988f70d5ea31357c2a83ed8", + "0xb8e7344df221731d25fc88dfd31f938005328202dffd0be8d28e9d0392a75c81", + "0x47abee9a0802d59dec86fbe5d9a13a7332d326b900cae4e3841c69e9b25ac788", + "0xc09452238c2890433e14e0fcf826051c752580f147750ca745d1b779f303ef9b", + "0x05bbb06eb270618437a1300c02964c8f854d4a6daaab2d59ff6cc69f46c7234b", + "0x89d752b94f59ad98d59ee317c3ebcd840dcc997efa7fb88797c35477831c695a", + "0x2dc622984dd44a2cbb4313c7efccba85b497e33214eb314dfd7f2be40fee6cd3", + "0xe23e51675985c6a4f887c843048487721da6ae6a6676adc87a805fdd46149f9c", + "0xa452ef2f6e358a534dfc4914a2c7ad3ff9faf2d16fc0b7cab96659cef5e4eea0", + "0xec9f04f090f443596129248d8675aab78e5275c56691444604751a0bb5da443e", + "0x52d8fe33aab98f680b3b7d56f501621a5516d3999bf4b1804b4ec0e845f87ee4", + "0x22dce4da35077c2efdb94c41c6ec7e17c1a3604c3c7b70041728a96c3d533851", + "0x706284df96499696a8c20c7a685493663b149af04afb5635fb831bdb20de256c", + "0xcfd7fa6c9a27e3b9c1f124522c87841a22105c561224de3c1d7a5e441f980c94", + "0x562458d2c5b55b9fe6116ef5cf165aebcc40d86863efb5036d42f1f86a804e73", + "0x05fffdd643f1eefb8083d7c2acdbbd13e076134e05c0ca6bed8049bc747403ec", + "0x1f1d7cb9e496d998ea6f8bdeb31e977dffc942987157f571cfb38037b8585bba", + "0xaac332309b32eb92fd347871dc513987c06b984ac00feecbc686029cd548ed56", + "0x64c449079ba124feb488948f3b17f6e68207992d71cc4a383563510503414932", + "0x0aa5215822bdc1f3151756079fb5435df2abbeeecaae1050d33af6fa1ab37a87", + "0xceddb86f1882bd3e196856e9a43d95a37ef115a4a2d2a86166ae827c7b0e8f0e", + "0x3f368b92f5217f872d9a38c14e5791b72b3b25730962514677e2c069bc04de94", + "0x9ef75df3e9b2e97208b2c4d0917ba6de03b437ccba8e580b9f4023a1c753a354", + "0xaa662f12ed9e399bdfa0e81b7f52c217029166b483a1ee492328d596d95e55c8", + "0xbaee3ebcc9a9de22b3d4067d905beb6c75ec7715d06a426dfba366da9d9b12dc", + "0x4fd3b9baa9f53e6edaa14c9d69f0cf2f0010d9ead83963d96b87b7505b97e83b", + "0x808d62434ef0cbd193a3ec3cdc60f79ffb797ea07d53b98ba1afaa8497cdf7e6", + "0x1da441a4ef8e75eab531c5fadee15bd1a60e93043e6f5b5264912d760ccfd79f", + "0xea233791cf501a1b6d172ecea7ed1e2fcc39555b597fa3ef86f8b63ceffef6cc", + "0x57e04235e51c579d0a7fbf74d469c6a74403cbd09ee56f168a74a3c1fc5940f5", + "0x46d051393b825130670a2d56872467b02033a8eb479d466c6522fc466020e76b", + "0xd9c313e7ac54bf497a315c8af6dc1f3751e10a97dab570b04f80811208f0c2d0", + "0x7219321803c2a129ef429886035bfbc27dd64fd50515c38a7c43bcd184a68380", + "0x140c4deb5543c31c49296e68bbca9d7c10799ff293e05ee130982a6d9f3d4638", + "0x2cb5aac917f6c1519a7cb3094953d9851d5498b954b62b05045ef0fb93924419", + "0x1aaaf2699d5ac7bd2124f3509fb2148dc1c93b940c517eb9d4417b6a6a911a21", + "0xb454286ea98d62faba2a2e531f6e2a42a61e23ea3274605f8e2c776697085dea", + "0x100a6c25a0221361db912b4a491a001032a3cac6909f8d805ef82251f635aaf3", + "0x08a834de8f3ca2dc5f7075f0ef5246f6d824ea4577a3d238b2458676896a846c", + "0x6c0878c40a466520a5b86a06670ff0e1ce97512205ae8c22995d0bc48d9ad222", + "0x6835b4bb12bae675af54580a1fc57f266c050748a583f8b6145306fd3bf86cb9", + "0xa66940592c705e99bccb61c82e6112cc75aad73b605aa09280edeb065718a043", + "0xc565e42a728c1a0211ebce7b5ce9b8088e74ba9b254ff339611806c239dc72f6", + "0xc691d8ad39fab8e168266f1d502f02f269c7f44ddd055dcee529136cce2b835e", + "0x34bd34e5e476acfdef9f3c260a8d6f9d4236e58a9fe60aae99c38f8fbd465b38", + "0x9bf9269591e17668d01181d6a0d71ac17b494340e47034ec5f40f91f0bde9f58", + "0x3f3b051eea4259b90aa1063772ebf6e05563c7de791707bc8e35cc5ae561d110", + "0x7021c2db5c4df7a546d99750bc905b1a9f846afc688b7a033653feb8a9afc12c", + "0xfc7b212e599b58ff35eaa80b49ead63215ea826dcb3edc4df7500334cb929935", + "0x6cf11be5e7c9b94e24ab241b7552fb5bb089ef9b3dcd62bdba020b0332d4cc05", + "0x9353b5f84c414f0274732975cd3449a7ba55aba6665b5cdca14650e6387ffb3c", + "0xa4717f0fecb6a35c60e9669c8a754c1c2d41f6144cefac52531f9870fe0351ef", + "0xae685fc22226cfb05373350506f1f2072406b3d391a4b57ea5c467a9286ddc3c", + "0xd91482bd0e080649387aa580e255d77c197c1734a692296b27470d8f20d971cc", + "0xbe97061686e83466182be54cfdc721637ef26e99b247ea68b814aeef0123f076", + "0x8bc0768fa4670eb28beaea6ebe20a7acc0f23832154b61515bdebc9e6e5aae61", + "0x9570703dace2ff11a3e8d61552baaf3e5e812eca124f42210f1300ccb2116158", + "0x21a68948d1014f8e541adead6c9d0e73f003dbb3cdc145cbfcdaadb1ab0449c9", + "0xad51740caef4a8c01223fe11d7346852ed0873b38a65fe3ab1948e5946e6a8c4", + "0xf5b3e50890db272ac29b8fed050b89a3c1260563466cbde8aa6d50ab66c28a54", + "0x635e873d51779460b6b4dc2683ca229826e5a40ba0f5963a0a27d02eb0370cb9", + "0x13302c3e93380ebbf6b54be15f792f0878396dfd9e8da75689e4dec5f30ca85c", + "0xffb0746ad72d53240895bbdb07d1cc5a94bcf4e6422c0dbe7b2b3fff57587271", + "0x1cef16d47f2975e4517a9bead7df47d7e0db677c68d80e50edca3a81f493cdb9", + "0x50824f81d7ccbdadfdf5fc4b082d920d1416d6f3e6dae3a347e71993a2565ecd", + "0x10707c02efc13e50e5b1a9217ba2602ec77dee3817385d145674eceaa21d2892", + "0xa281eb9159884095b5d3584b67bb7db899464fa176cc90800ed8ccf23eccb4c7", + "0x2f63567e75786960025334d3772571f6fe1ff411b6bf867c84c1455f3954ef13", + "0xe1d9eb8d78fb1365f28d4112b14f3d5575a68f1160813f0d0a2a1faae3266d1c", + "0x7a7dd4036031fe92e19c41af52f5c039fa3c12430d5b79111c568681b640a2a0", + "0x509e93ce350453b61b502de0f87fed794b0d77bb6878225122eee67a1414320f", + "0x679778b1f6732382d834000d24a94223b69a0a88b56d0c070b659fb2daed668c", + "0x49963e1807e7f45e132a7e3d2cf7c10fa0e1c36aae866a9641cc801ee8d261aa", + "0xa1124f9bf0d2b0ef671ddcfca3a66a86545cac8ca9ecc82631480ca091ccea94", + "0x9ec43a9de16fc83ddf5022891c6f5593796122b9f9c72803373c62888c5f9198", + "0x5af071f137c5584bc1766ef4ef092fdd8f4a3a3a64ebaca50b169a22e32d2542", + "0x5b3ada30dc686e15bac396821debd08d8a96fe1450e5180170241cd6527b4bbd", + "0xe56f8e15e3f74d77427424811c6d03b2bc98f010750c6bc83c34b8eb94bee0d1", + "0x5dbe293dc9f09c20091e29ec20249a9b1e52e28ec863afce106f03a75b88b111", + "0xd61adfaf9d822c3d8e981725a42113a13abeb8f887f16e0ae021cb23d7255a2f", + "0x1efdd0a60ad05c11faecde65b02f3ba3fb85bce685a9b89ee4e6a94ddde4b7d5", + "0x60613e04232a203fe161398acf4346652a9b6b9a07837fcc06f53a950136d911", + "0x1b9f0c43d87ba4efaf7781da46f52a6eff60b8c9ca6d81dbe02bf6774fa80047", + "0x41aab71c01968d0cb73fad35b9839f6ba2e8d807852ac9c6f1220d5aef866f74", + "0x67ca5da2f269bfea45e0ec5037bcb1e467d5938eff17760f6b3c5ef74448af69", + "0xc16c2d3a36275d3123d5d95b6ace3bf131af1e6e07de185a8f4e335c5a3cfc1d", + "0xa70dd20159272a4d8e5efe456500a1f710a271b690334e98862a24d31d4427f4", + "0xeb932d05a4e57bd9cbe363a96cc616d0aed481298cb38183bafbaed9384ed27e", + "0xad772cc01c6537fddff8eacd182680e1e8b0d203bbbbc317a4ad9c1e7c1e4b71", + "0x81d7acf3f3760b06a68257654e4b0c466883e3198c61ad71decae53963435817", + "0x33cbfe14923923214b2047d445696b34251f70d53005e84f43e383fa1dd791fe", + "0x8a74d3f3c775f619f9225388fb5172b187141a8ed35ad794c40b2d278e6a388c", + "0x9db16af2961834b804e6330a9f587512c92a137b8656bc5baffb227686fea9db", + "0xa23c0d4f859ad30a4b7d3863ad16926faf41b4623e6adf9c7f2a59815890f4ee", + "0x97da87b047a43970a8e537ed5cb15c0f28885812262e8119c659a3d1a92f8aab", + "0xe0a2d92c83b8ab1bfaad4bd1e717fb5dda967c001ec7662815042a3544bef441", + "0xc70983fb6257a34bd43862c405023db2112f0b1c4a11aebc23ba17eee3ecd1e5", + "0x05798069ba546f61fec26ddc4b260fcadad3a84d612900ee2afc84e10dd13358", + "0x1d12ca65d3a55ecdc19fa4135e47bf470bc6ca85fa6639eeeabe951d9d0ddfa2", + "0xd47f4b22fc0326df733607783934b1be3818fe057afe802216178a450f507c17", + "0x4d71d9619222c0c4ebd0fb25da7e53358ddf4ab2cbd962ad88b37fbb331442ce", + "0x2be4b69114e307d117df01cb568d35f79588ea70e9016f865f641614691cf7c8", + "0xa87d1304e2462cabcf90207b81a058ae766273007821ac98b718467792eff05c", + "0xd94b7d41761d34a27c5cf565f0e92fbb65ccc3e8aeb5b1c1d9d233b032f071ba", + "0x6079df72e53c3f1793bcf5a4d22ed2035e31662d45bfd210c4bdee475335039f", + "0x85506dcffd6342df61e673ac01219c58198558bcaf7759eb2e4b19925ddae8e6", + "0x6a19a7212075395bba890eeaf4709c7025af6ef3087ca86671da478c7e49ed83", + "0x62c52d8ad2b6c000462358d31c652b280bce3676f103d7182fd3646a7f007604", + "0xa600ffa0e6d161287d9b9bfb13ee9dba74699e542aede1278d5344e6688f0382", + "0x7404c9ba05ab64a8e88847dc725b132b627686f4531248ebdd76dc76d42a8b36", + "0xff0198b39d39660cb3c74d455b4019ae0f23fb181378c207bbcb3b79587b8558", + "0xf47db7ef987a8cc32dd3f61b44e6812c940592337c056570d265e1604ef49f4b", + "0xfbf7eeb0951ed5c4704fff2e5d121b831637a86472e32c24a7b85e9daed5e1e5", + "0xdc560bf4b2d849ecb777a4d2d8a3b3bfd12c1a4a295531573fd1d493af34042c", + "0xce32751e3958436d8aa727ab6f89d1354cd0373f288b40395e9105aa905a1713", + "0xdfb4595b9c8bce6108ed0b550f920fd098f6757a3e64734fa97fd5a640c962d8", + "0xfc557009bbfc0b2a47eb486002568e963a32eb664f7a55d81335ef6efa79c804", + "0x9dd310e9b00e69b7d0b0d91db5095065c78bc91f2321df8b5622a490ef940626", + "0xd4ca936ec7acd0d54c6efd71cc6c808573482f2510175ac6251f1cffd7a12ade", + "0x465a05fb5c4c66d0bfa64097c705eccb50bafe9d2ba223ee69111b16c2014c02", + "0x634d4372ed9478b3afaaeb35e316f71cc5d371548260eefe273c236501d5616e", + "0x16ebd07c2e0032fb1c3722df3647e74650b7c1c81f4e7084149a30524846ccf3", + "0x32ee5ef340cf87e26642d11d619eff9ab9e5a1518815b9897b6a95007e2b7572", + "0x47ed528e27c42d8a4100a84957ef81a4784c0272f5e3cb6a68212af492a844fd", + "0xcc376aa2c1b0b49f96bde6390d5ec296fe7d5671d6bb5b5df31cdff2eb5f08f6", + "0xdde8938b019a5e587a28eaf579b5e21892bfc3475ce75112c4f1d9a5ef65dad7", + "0xd0b4c6d8ca3d95851c34e729d9228cfb0f4c4efa7fdcac3d96ea4e4d3e0c0189", + "0xb441266ed512646050c73207c3d88869ccceb7584f3325125a5511d5b05bf5e2", + "0xf05a1a620f1179a6ebe9281fac034638620155bf9260bba7df47d59b54789bd6", + "0xdba9596e7229cee4c339fbd182b0ebd076309e3c8d3653060a94dff252ceca19", + "0x30142242a511348d48171bd65aa191fea095446cefc49967fc7ac88964efb4c9", + "0xed1b743e8baa487193935a6d974a7c417cd42fb761007e5ef168f35486cdc2d2", + "0xfe54e8161aa159b9873dfd4f2d3b7bfd5cc70c4625855b70348684c7a19acdb6", + "0x7993784b62dec4dbdc595450f114290152676cb6938fca76e956968367e34519", + "0x2efca2f1900c2ae1f572342a077afd97fccde2b2305ee0b60fbce8240d6779eb", + "0x99ec617f5f447a4608d5bd96ca375a33a15894270ce22091b60f308298ac51e3", + "0xa38427232204d3f8e58dacb6495799a6c21e60746d26a438d8504dadab3a9bbc", + "0x8c39c623cd06d598ef78e2c46f7506523ab9ae5fba5a7273366ce9a3d9bb977f", + "0x9e15df3655d1a3acc064309382a41e0f7db24925ebf1df51e23e0693d9b119b1", + "0x69b4a6a1cdae2b0f84a18b712286ee304995f6073b6c81fe7ee544ab1d17539f", + "0xe395574bbbc54fbc2e3dc7f363abb34dc760bc2f6fa92c980d26d5c9df5681f5", + "0x1f863b9112535a87fa2e28cecbe0af5c22dbeb41558b93cac0dead527affb06c", + "0x78229983620efa77087391d04057e1971b2ecde2c9f9d959f769e18c1e07a8c5", + "0xcb72a2403046e54d6babc6cb9e2db5f79f09a9c45f983dcf595dae3fece77570", + "0x5267de76947667220d218ec4d1c3db31213d991e59cd0f8e4e547197e4f99205", + "0x55b03de02f92b3210a614f8d0eed98e056a348dce7dc03dc46dec5f7ffa942df", + "0xc2e6b807b1baf078a962a9bf2d92f91c0b326cce0ba6ff59c834b812e55278cb", + "0x94073fbeb062a2fc6f1a0450776b598b1a26aaabb1c1b07e79ba0a816f63ea26", + "0x2521e9b0d16b0129ae594dbea0a2fdc115c379c6c754933ae4dbd20091e8d148", + "0xd2e288fcb68b22fb80e5591bca2524d7a21eef199c3c333a80218a4eb698550c", + "0xc92539e422408c2bbf932556b096d90cea0caeb81e29c2c92552d156c2bf8399", + "0x5ffcc95004131253c4b32e34f7e1db552938b092f7343f501e15554cebe914e4", + "0xea70a44b30ed6d5a7e8e9f85eb8b70aaa05320489054faa40e15989e01ba789e", + "0xcccead6845a28d610af1674a474bd77a5042ce93f682f0c4e879cb0c3e836320", + "0x3ee01f8d3f6948da18f0212ee7c990bdc2ba2eedd020d29461d9d558ac9155c8", + "0xc5aec3935dcbf93026bcd8e24632e405b56ba1ab003cddc169b41372ea6d3a59", + "0x1a9e0622cb0658017749353e3167f38bb1961c4088442f124c1ceee2dab52945", + "0x2628f184beb5baff725a1918ad222900d41a1c3911eca1f272b484fe103ed4d8", + "0x2a03c227d307eb99185eab66ad4fe4b77ac1a0245ec28bf4d87702092461c275", + "0x4664e5b9b20927813f129a23414f319628243cf2ec6d93b0779f0bab5c602803", + "0xdb8978d3303d1c40d51e1608a24102af93c15ef7a82bb3fa8f9a1ffcccf87bf9", + "0xbe63631e76bae0c7eb4ab34abae21f9c827638954578ab93e823d9db8212c08a", + "0xfcb959859a8eed19f6cfabce408e5207206e8e0f96924328355a279f9fe9779a", + "0xc1f2e02c014167d9456a985c669121d543e39a8957aaf328ec1779de2803ee99", + "0x3261a5631dc254f335cfe69cb835f61e11caaf9b0299f0701ebbfd0470755313", + "0x02d30a73d3a7fec6c2567e1f2861113428fae47abcf76167ec432da20515134b", + "0x312e3cc2897aa8eb766bb4d0a91e160884153c90c266d03bb6efed08c4f48cc1", + "0x00f196dae3153faa0b4ce1bb9b3122f76cf1c1398fb43f8aba95037b8a6d797d", + "0x8e4bb4443854630bf0835c3644270462d9b7e8f3fa409e2c8c420010c8dcf0f6", + "0x3ad0e8f5abb1238702bbd95556ac9a9018f4a4ce107bb2d87b7ebc76b0b723ea", + "0x5c78e87df5d32db813c9e89d4934a18490f9ec5e4f2e5e66941db9e6c8dd1129", + "0xac6749f8a149d465b9d98dda8283425ae7e27eacd803baf2babd9254d2da0e97", + "0xf68f70077a1f7d69e5afbc259adbd51fd97cb78e45a38bcd698922ca0f2c17bc", + "0xc6b1279ce5d96648642dfff31d3bf3d989de50143a69dced098f883f2d58ad36", + "0xc4655ffd7482e52531cef2edc1f259f384d69a3920f699f6443e92386a0b63f0", + "0x28ea7302f04d4ff4b2c40fc150908ffc34403d7e5d756be4e980983e08a72db4", + "0x87d6de7a3cfb49ba01d006bfc051c5d22c2671eb67bf3af87291d34bf84dd328", + "0xd156e6fefece7a5613122c24733683863b9a20f7fae1cd022b093c9dfb53b366", + "0x5501015e22d6086647d60e44df262d70d4d8921648bcf366e8442cfd8421e83c", + "0xfe520098dd0cb9422d83d4a562c099bf8445c25e93b3b9a410319f0300b710dd", + "0xbac6ee3d851c6d574004c6645647b2ffa6a3519f13f3ff9529e5924288815a5e", + "0x3fbbb9d0516549cb952f1be5ab6e69d60ef1a8369cfa4d22152d006d886eb604", + "0xbc1843d922c2e0ccd1403a0da02b4f758fad4f02bb09ab823560308826149cf9", + "0x9ec0d3d14623babe08dbba627c2d478ab34a0a0f46984e528499b86755bab02e", + "0x98715273786d911f75085819b301792d241d005934e2d93e8e689c8a5cebc5f0", + "0x0c25dafe9a23ad5d17e97f23782e11152f548c73a0ff58fba9b3a64aa26cfacb", + "0x7a8fc37c03b6ce7d275c2a4160e883787df5010892fd6ffad54dfdd70a97168f", + "0x342816670945437b66e0a12d5eae2d284176a54cee727a5cff6f5fac83845864", + "0x40f472f8737a813a879eb762f085ea5966934e1a4562b212b11612b5fac059f4", + "0x865b00c472ef94d6d9b038f328aeb2eab1e81cbd2da3c4720257c8b4b8b41e76", + "0xe94ee97f38d8989ab6bbd137ed9bad8529c543910e5a328b01fd5571ed63199f", + "0x57ac21373529bdcb22c053797736b9b600737d91ccaf296ea761bdb9d425ed74", + "0x4c56a968ab57aa36196bca9841e308e4ecf366b21891cfeeeb4a7741caf00bdd", + "0x79e087e68abf35a76d839a0792932730441d2f57506fe7db72b9b91b3fbb50d9", + "0xad2df80333074a637b0afdf1dca51759ebb10d7d443adf507f41a99863b2c7ef", + "0xbdc6c77a8ee0b979cfa93d42e4b87c9aee8b0c19e6f19206008a5d1083909478", + "0x369810909434600983003d17fd321e7e73dc4b8ad0e73d925caf499f2b836690", + "0x4d3749a7865675e8a3ecf2b1af4b7c3250a311ca8d20449e71d6d8ffa33a7536", + "0x7286924c10b2db63e61041976ca7c6bd3d6b1ddc69eac4dac03427e0460333fc", + "0x33edb799e39ee239790c7d3a6349218284a61847a235f9b6978accddbb57467c", + "0x0f131efecd5a1deeb5267f4f99e64ad2dc84532f7698802fe500daa8c306c1e6", + "0x96f48183924cca8948eeb08c3c5320aeceaba747c7f7ccc321cf17ec0704ffd6", + "0x87a8c9e79f17968814cc145bdb1325a2b5740cff68f1ef7fc7ae42f20729287a", + "0x3c9d17093214572bfe4e6438528163d7b6e24228dd15ec1986924f07e8b9e197", + "0xe9c033c63af4230d352ee370bcddbcf79a284e113ff5b8f559d5d958a6648f2a", + "0x331c86081b46499c6c0b23304f562afdfa467ae8b390e22718f2abd96dbb6c2f", + "0xf783b03698791d07c2ce40bcd9f69e6f04a4041cecdc85e17b96e6673f57d9d2", + "0xb886c566152b6f0fb43d8eaae97d8f6698caaca12845f63e6b98872d7be91429", + "0x70abce391cbeb52597c5cd3b3668e33aded768c797a1c27d22ef827c3c82e516", + "0x37b6b2d24a95cf8837b6345b7646e48942b1dfc26bbe8a0026715501e56d1d71", + "0x95d0f6f51d5efafcd395e79b83facd5886c4cd68fd725d68305a8bd3e73fa818", + "0x839db36c5e8d539cd87c2fad2221a95728d201e27aa0f21e48c61a4d50088e6e", + "0x85370ab2418ca50bd86694bebf26c9fd59f7b737282375f1a53c06d1aecdacdf", + "0x42270a3434074b79bf19b043bd5cb7a819d5639461edd5eddc24b336fdb39428", + "0x105f93a4dbaef09de92dcb0fde88051d7cc267ed11ee0433c2840ccea459fc81", + "0x2b97bb02b8447cab790dd30d312471385d233b89dd135c0fa59ed763f7f1a5dd", + "0x39d6aebdd41ddb3937963660a188b9e840166fb249c2859cb442588ddaeaa2f8", + "0x635d327dcea329de7bae55e025d4fee8470ffac2ecc8a87cb2a796b822cfbfdc", + "0x53b87772eb46bcb5dc54ee6f2fe0c8ec1384bf13e02057cf2fc551c657a961c9", + "0x9cf06b583c647f8c5e875c6d0cba5ffff00052620c39d49a04095cec4d4c8c51", + "0x917634c039976e153be529547de0799bfb23b733c5edc42e1e54b3e6ebe55d11", + "0x108e5ff2b56ae17fe3dc92203f454fda904dd4e15f4732397fba95f38b632f98", + "0x4bd32df511cab41fdcd3a502704c74f3c7b0eccd352b82b4c3c28b0a844fdff0", + "0xd8e04779971d970f01a77212d1ee2b8926d12194ecfb756f9f83b524c072abfd", + "0x1f0226a32fd46224ee3d9b7424df992847a711660fa1777ee8ec699a255a3046", + "0x9dbdd6b26f1fa61ae7fa8c31bcb259c754e2827d6c6f6e7a604ea84f54770255", + "0xaa59f69dc2ac48f6e2b06cbf95e68ab1d0971ef6ea4274ac4e24263d01a2d0de", + "0x217ab35702c7c959e994c09f9a8bbd939b9711c3a6c4a57d03b02d615561cd13", + "0x8016f4e0ab60e64c8ece505bc77fd8ae9a73e663200615679692057588706ae7", + "0x1ab438e4d7e7ac9e9157c2a43fcd730f7b3bc70676a302784d22dc6e9d7cc1e8", + "0x902a3b829ef54cd702094667296ff452eff0aabd04f76046cc799331da7296b1", + "0x80d14802bae3c50cda30a6830db5122e72f7dcc67544d33857e1153a49bdd710", + "0xaa73faa4c36e080065a0640acfa4cdf16de65fe6aa1b0ed74d20ab01ef675b32", + "0xf129f354afb67cda78b4f05e531e0553b512f8238278a7388a8ea2a26d4fd5fb", + "0x8ac7e8a496a2c3465ce049ed69c0f1a671714369856d705c1037cbd193106dab", + "0x0167c76291a52cd70b1302ef3bca9e8449d071761c1e5520219d70344e0b39c5", + "0x0796256c466d0f1a706462c642813620e7acb3ba0e17b606bd464edd52e0b491", + "0xf9e68a276fb7585b978ccd0a5d4cb07851fab909fe223e1534897574745ac585", + "0x215b53c58f116b3d45669d5257644b866639eede3eebdef04e171d9415247eb7", + "0x69425708be100d1e7402bea70be42a2dc981ff3a4d7c8c5c859283c06d1283c9", + "0xfb0b4c899f6081eb3e2b4bd4d32554c0c34199731d3f80976ac3885cd62ca5d5", + "0xe07304905487800ca8bc3357236b5b4971ccc884612d4c3a0fa903ca4ea399ae", + "0xfc0e4e84ccf10d44f338d76dfd0562cd47db6758dc7f3eb08006dbcd577c5dbd", + "0xd198d19f531de16e174f85a4cf6d3d2d0f326de398f027223f34534c9a6e8634", + "0xf5f6dd24e48fe4b37a5098700dea861fea66c835e81269ec20b911fa821abc8d", + "0x6930e75f5170de31a5cb2f899db422feb51f080f83f49be83951eecb5f913793", + "0x5a8d5ffc0944ebfa1273e0162e766fdb34fada198583876f0931e331ac7164c8", + "0xc6a5ae3002cccdc6bc302c68ce171dd83c385444ab5c04c66b19bf67255e298c", + "0x05c8c483696d2aaf79f985706ff9e84c9ad08defe8399531aa0fb3d32fea316b", + "0xc226d5d5d4df247a1e5cec4fa6fe43605e9ecd27bb07b9c220c4b6ad5a4e70ad", + "0x312cca0e8c4b55bb84176a54926d1366dd5928d9859f1d2ad2991e0fd9624b79", + "0xd0aac977184cfbdf53ee96ffb2e0bbcb85a202b5c6ea02f9989972c70120468c", + "0xdb3b8102d9a9a363174e138b292ca67020f31fc819cb15c5cb9ee34ccf2d2f8f", + "0x1a50ef2cef7ee171832dd9e9162125e51e6ae7c27d08753c30c4a03cc68cd473", + "0x292ef1d673e8441c3850d68ce27faeb572083864ec22f09220cb9f4fe32d560d", + "0x0cd5290d348d7462f747030cbd8a38636f1549023f8f6379c244b91420312ab5", + "0x2a35347668b072eb67d478dfe9146822e77ac78abb4b69cf57478a87c4f5b794", + "0x70d10e3336ea822d3385352737397cdc660ee71e07158fc1ffd711d249daa841", + "0x1f9d182b5e755e9c0ab2f77a9f302b01241c4d235b5b717237b96247a9157141", + "0x93ef750e15a936c2fd6f047e65affabcc2c0b5bdf3cfb160402dd0696329a654", + "0x17c7f10a273615b0f8df2044396e3f0aa33b46ad053bf6ec6dbc32273e66c4b7", + "0xc249c69c4c2d40dd9d0a7fde388824ff734f3b8c2868d1e824a52b32dc05e58c", + "0xc1c1f0f9ff1c472a7e84ae89f8da22575df60fa7f9479fc3638f2f0d02509010", + "0xb563144ab0b85113b0e30109cfbde500c28faafaf922c81939dcf9f1ea469752", + "0x80f88663065d058d2db7e55df1af8035c810e36a6589f4b1989794bb32e337c6", + "0x25905f6b1188bb66393a10ee044c6bc197627d83301f766f4900d36cbdbdf8e3", + "0xb73cbb759230184289722513df452814de312c90f8726e77b129b6e37e5e803f", + "0xff19c1a15bf598da49fc91d04c7401c88b4aab08fa926e467779fb14d8f8002b", + "0x71d46f2c6a4d7291a9906df0beb183d495248599e40c41da6ad30ca3fe37f43c", + "0x5a00726405d2db913571b141053892aa41faf26644c6788c16c8f417df49ede2", + "0xbb046094f514ccd722d224a2bc4b6b473c760224a7b36ba09a21f149cc244e1d", + "0x8b0d483f156f390376c526acc219070a9c393df731b7115753e934af20940621", + "0xead2c2100390e48bf720d19378964dfc1d0071e28c1d799b2d5d529b118290e8", + "0xa4169df4e2f8662b43845598c58a591e6fd17574c0d567d7b702d3f12d4b74e7", + "0xe14c4be058238b81d8025fa71abb580aeaf52d4cc3aa4f05bd5b24be77479fe8", + "0x81e58c707025a640a9b014046559ee7f827142474606ac24ccbd61557b0a7745", + "0xc1717626f785ffd170697d0bd148226d1916f16461796dee609f59ee5eed3423", + "0xdbe52fc3e71b136881136693f3a318d9e3257e6a0384d17768cba6c84b1e3ec3", + "0x7596e35148892b5831e2111a168ea56a59ede2f2222a08f8d82fd235f09cb267", + "0x130fdf1383873279e44ba21c7d1d6f962ab3d71031270a0e5f57f12f90eedcde", + "0x0d52be29476a3b4ec79a432554198255be617f50ddfa6d614ff5b73302c44067", + "0x3f1edff4b943e5fa15bddad5ab9e3248db0335359af255fd6efb66c8b63bce69", + "0xad9909d1fdd9e1de3e6cbca641e42a87e3fa254a0498085790b3e44e6ee42045", + "0xaa166286f4e1799f9ed1033861eb8b2117810d08dcb29cc3f7a3fdcb05989780", + "0x11401b423d204a1df2e918882c3f795e9cd1695ad0badd77532bd2512eb7d1a8", + "0xa738bfb7ad265db50854afc6d8988d5342ba77d7021ad5d5a45efd582b6b6bec", + "0x25051016399b94cef771f16cef661de81bca5f3803c96c602dac42d395679c15", + "0xeec18e2c9d76a98455ea4e50f744926a13b9ac8c6d0f575128787cd134ade901", + "0xaa4a38ed3e461643c1acc765ed8f27262eae8ed1dfd6659c4e4e1ea080f42363", + "0x42760a8066850088424917edca117faf1df6a05221216479aaead8ba11286400", + "0xb3503c3841ccf8bc2853eaa618435036b976c9e77d1e1081a5fceb036091f9d4", + "0xcf5979cabf525d5b6cc1199358688fe0bde640f6ed95dd7c30a6f42a38337cc2", + "0x713df6a565efbb13da4161b545908ac4255af1ce8ab229146ed00954b3c58e4b", + "0x9ff3a78a18a59687eb99e54ac79df1ac920a3361b3b5416dbe95126f8de3074b", + "0xbaa888556f1a519b1b1acd01b4ebcd9132dd55bfec1bef0ffae9408152333fce", + "0x5ced4fedd95a4742ee250948c233f59587eb1624e3adcfb6662f9d81b5517bad", + "0xac1d2706dd82b142b8a629b42ea5c4f13286af59d24f21b3bc36ebdb4eaaeeb6", + "0x1d99ca18dd1d872a4be8ed45385d0898215041f54e7c8e7f3252ca212b4eba3a", + "0x1dc60cc7789fb6b25c3d27868ac49136e09f6bfeb09a20061781ef14cb7c670e", + "0xaec01b8047a0693e78b6ed445396dfe6dea247997ad32747896ba0e30a20d2ea", + "0x977779b6e2da8fde03c1151537d2e03facfd217650e862c3fef07af71f34b507", + "0xa1634dc9c2bdb48762a7bf7b41b74a2e8d4d731b15792044cff1ac3b416fb28b", + "0xc36b6333c28344a360214708798c125adb5e2cf8a2145a216e303186b85a8f91", + "0x1196ee872385c8fea747eba6f5b4fc6f30817714e86c28b657c24593ded2e0ef", + "0x8dc3ccff642a29b46266eee8782b9a9ebcb171ba154c5dca0ca5f73fe24969b0", + "0xa9dbea651bb7a362e526744229b3e1807705ceb492a8e4bc54a9a1f36102a9c3", + "0x0bc82693277412688a6577a6bc95ce99504a1a50904f49b4b4588538f506fbf9", + "0x8df943b0847f1de48f76d6dcaec5cc7b0d7d839ec5e6c8c887f6e5cd785f53cd", + "0x92f4a5577743eb6c34134fa7867cc7d8836fdfd4000abec8cbf1460d136054cc", + "0x047f5f8332e788d1b6be8a3ecbebffa80ad6df670cf4eb4e76a6f22c5781ac14", + "0x392652a55a85300848f43879d9a45d8b7fe5897467743d51a9208b2ac0dc029d", + "0xfa2e6a2cdf4949028be0772f9513169815fa9af20c53ce188680f09f57efa671", + "0x0b86c1c1e683a9e6debddb8ef516b16fb15709b87dcd780ad6cd7f9b9080f4d8", + "0xc8e942935b64b294ff66d4fddc51fc83b0097772bca50140e738d4c034b09cb4", + "0x0b783f8b64650bad1753e4f86fd66b99d7ad03d2da0460bf44965a1f443b70d9", + "0x8a9aa339e78f09ad3d2ffe3999c22684d519219b787ac3cc64c772d1e6508392", + "0xb8a2303cb9d927badda947a962311c699a290545b597f0d242f669392076facf", + "0x34a1bd076dd55dc6eb2e675c5231b3cc8f2a197194c86242c9c5c052a6859d28", + "0x0623254a886ba8bb191d3340e9705ae52e71df2717c6e84bd07a759d1f415d91", + "0x37d451749a48d1cf4780f28360c5445d3b749d8b24f065db07b8df89facab6b9", + "0xd73f2404b935580681cd7f6060b17ff569f7419196e67596f101b6b1d1d913e3", + "0x45029ea3cd0d90900c46df72e6b182bba69ecac1a9289a4719b2f6008f11ffd0", + "0x23315337a4609580ca1835f370575bbe025d2ba5447b61e583119757debfe35a", + "0x581bb3ed8dac28e597d89e9a211bce6b011a4b6dabf001597b68e5e8c6ab7c8f", + "0xb71f91dc1a2eae9ff7e0aacbdcd3d8a77302437ba0e9d327790c5b92c7603ac2", + "0xde661510c4713c64961a0ce9db1eaaecfa509e66446998450178c0afb4f5a670", + "0x9070334bbe9fbda52e42939155c43daa239833ed2d952eaa5eb4d5fa8d56b708", + "0x7dc07b309fa5e188f2e417525e9228b80f84c6c36ac00cd3e49defa0e0146e15", + "0x2e9ecefa3e28f4b31b876e5d9214877ac00be6e7eb65a26990fdd5a2799dec54", + "0x6c4b8dc62fdb63d5da2e1387a50759e82f00f7b3cb9c4306d98fa1a4630e0136", + "0x1244fa807ba8ff8a27b88ea1146c3386e96995ab1d7b0f491efedb89a2400028", + "0x7b18bd023a26e920b03e517b3399304c2d277045d2bc62ea7ca0ff8dff1e453c", + "0xa71afca6a9475974486a698a897c34cd6b5a7dec8023c62bf252f60b3d63c306", + "0x4162c46dcf1961704d020fb0bbee7f9c0ea85f4dfc58d6db2c09f5ef0df543ec", + "0x651d2fdf296254f97528a2f7b2d2395438b1f58ed11f4d1cc076f1fd04912824", + "0xc2705774d530011afebc9430c39aaa28e27962427e46164822bfd6da9948887e", + "0x9c88eb61fae9cc442bb10503b32a439b771f8ed67d626c4980ccb3d53cd24fde", + "0x8f86c85d3df630b1f292217035ede6ab978d9388fb6bfff402419c3de0a8406e", + "0xf8946728a1deb862861627606bbfb887e66d743d47fe03048b9b1799e083c5b3", + "0x023cc1ee86a5dc550b934e28e668e3de2c0a925c9c0dc9fcabec34d33da07a75", + "0xa40e3c2eb6531a40239499165490be2d6a986f356c3e50c4449a81a9ee037df2", + "0xe85b21c59987f25bad5ae1ee09dadf22ab33530cd907ed72819ebade1e2b84f7", + "0x9acd8cc33e4e79adffd4fd50fab9ba6025822f2510b165d547c3bdc037cb7629", + "0xb07c7c23039d83efb37b63873d4c7dabcb4e9265bad35f9a1667114159cbefe9", + "0x3b470afc97f674222850a489a3c845a1c68384c88c03ee3946ceb90924c7554e", + "0x669492bc00a496fcfa5920c9617f74170242d2382c4cd231d22e48e991b12687", + "0x0e4a605fed37c87fe9bb0de8ee63f571785aa3da8767093cda45da51414a38ea", + "0x5a25cabd5470cf246164f60ca6c963a3960550e684ca051958c2f768af92e227", + "0xf6dc542a83245efdddccc4527ce125c5e4409045afb2e57e11941d4d5c21015d", + "0xca22cafbdd6ce48b7cd3700090a5b9ce0dcc267a16e5a6e55df4bcbf681f7e88", + "0x9d89784fcd3cd9a0fe85b82d2329a1561d46026abf132289126d001cd6507bdb", + "0x7fe02ef1e87c7b1294501dcf0fb97fcf5b8f2b131ea00b3559dba67feb7431e1", + "0x0c5870d20c5e086520c1a4fe39d09933da794f49b5e4db186b7fba5f55751334", + "0xa6664e2bafcc0b548a41c272568d2a3ffc0328f64c3f4ac80e3c0dca18253ebe", + "0x539fc6955f7ceb8b9b662534e98512be388ed59e3e3b2fc21226569c3a85f272", + "0x1f4a0c45d47e378f8c0cbe4603e6e8ef3131ca7cbd4a732a4c5a081bab3cb381", + "0x1be1bc472e060fbaeedee56fe03a42cd74afef7321904c64ca7d384ecdf39be2", + "0x3a74f2b96cd47864ee7b113651a176c328c23059e9b8f8bc2111a071895d2bb8", + "0xdc05d7314a2fe10122a1a4f037b96e960ce344202328932e8f069d3801881606", + "0xf5b2462912f2a53b8261d4f63e788289213ca566ca915f59969c79b6698aac80", + "0x8febf165b4673b4762bfc7d1c4f8a82cdc5649065f080bf00e843a0ae3f3dd53", + "0x1ed2f84e593f6356522b0bd4606209b1291518a7ff708d21ad8765572292f3ad", + "0xb7af3b32db199c91881f8b7d23f53376c310cc1cee191cd62a1878a229dbef3b", + "0xd5711bb07409bb27c5fb8164cb2860c0d6583e5f5f5882c6e6e74b0cfca540a0", + "0xa8d7cc512c42b6028121f6114b974163f687ac19a5c71b1c25789a7ba8f38236", + "0x72f3aa7c612ff18149497e90fdc03e766686e37209573a3e5bf144a9a010192e", + "0x6950075793f3170d754bc05fdb31856d6d15fa389281c7e4f73d8c597b1aa4da", + "0x34f1a8805f65b0a09f1e5523a53d35cfc12dfdecc22e47efc80ce209d40dd514", + "0xc348d949ce4bd0299853e6d616dc292a8d33485ad93924f7b9ce64666594a44a", + "0x0f828822e7a2250d0b8f2b819ff27631f5d50a3168874ba1c1922babce345fe5", + "0x92c5275a7bb840f9ea612340bca5275dee489cc7e2b13e6037ed49b3606ec01e", + "0x29e227f64c8446f49611f9d2dbe04b8328b8165193b5a0a2ad8c337e60d7ae74", + "0x4032647c4576c6e4f23dcf87377e7a403ccccb4785e276d404bc8e6fd66aebf4", + "0x971070530b371733bf83599364270fde641d64155807d36c8ec79e73e3c990ac", + "0x52d8cb01d3999e01141667df6f11143754e7cdc1b12f5b5bbe5e16f51af1acce", + "0xdd821e13bef48af8e79041e7a5e28db421502e98aa41382d2a89480dadd0e7e5", + "0xa785dea19433b90dac8703f0b075df9d3c91394826e6b8b89abd806f5cec6ce0", + "0xe82804babcdbf1af8f6fac1dd0076550928c372d0a9dda8c0560a6f378e2c970", + "0x1dd41ff3d620b1ae3725debcb26edec36cc219292bf651fe9305a0fd08523042", + "0x9e2d84e8a10b32fae0b29b150f747041b8eed743d2e3026991c31c607839ba09", + "0x79ca039f12ab21e7ecb6d6629a501515d94a56a3c24d669474624603a0ed0c90", + "0x7cd387f75eadccb5aea925124377d09be0e7b4a9af6463dd649213c5af521236", + "0x31fa2bb5eb784c0dcbdeedc7d439704bd44294ec2bb1b4f49e6bf508381ed521", + "0xd0772b6dccbe61b5b2cbec0a95a9542fb9b89e9a75b8324e05855039c2914dcc", + "0xddcb84f63b7469935bd4f6ec405ecd619a5539c89c2cd28250065ba9b4984838", + "0xd866486a928c2a69b054339b5e57bde41149c63e6e16c066046e3fe8018cba2b", + "0x7246af9a036f7b773bff1b2f9b388618402738e6bcd03c354816c507aa7fdebe", + "0xd16bd03e80088d51f007a7068697e19cc91a0daa96816ab336135b0e1bda7e1a", + "0x3571d1fe22f56864df7584f73958b5cf9336b6afe6702cc4ec9d1f097c4fc58d", + "0x74e19b61d2a511e2b067662bb61bf93241bf538d74face662561a5d170c8c2ad", + "0x01720ba8bf55fe1caac98a1cc5843f24a1376bbd08cf630c9a39fe219ec31b68", + "0xe2d0a0e01f6557e5ea96808c0cdb7618d36bb5bdbbd1d9e2fbffc07672a120cd", + "0x0ff2e856f17849a4349c70aa6fe2c04d7fffcc6e41860774210c2c2a0208f2c0", + "0xfbe09f759660388a823894be477df3491bb6c51ef7df038dbf12ab9c122b358f", + "0x9e610db00a109f0b4a4cbb094b88680f62dfe5d3526bc83377645cfcf6c03b18", + "0xe7460e14d9b5365c3b1306eaca86ffe4f996f07909c16bfbd731443d91df1931", + "0xe7c05451729b5eb5b61a3f159d522424fefa1b30f3929366289a89b714f59609", + "0x28055b2961079028d017758cd43b12e4046fca9a1ef53e09c3a4e0da3f8ff197", + "0xac65523c531d9ca6551cb6b9336d1e78671c7aeee7208f30548b3c010d79b15a", + "0x3c6939d2ef02c1c6e9aaf6aa1119fd4fa2682b71d5b010708a59144641b794ae", + "0x40cc42a031994649aa861a544d6fb7c02aabd574a5b14d26e7802d5cf2574e36", + "0x054cfeb8044d5dffd1577bf0e45dcdc53d15c308cadcc4d022d3c0dbc292efc2", + "0x337dd5519a0f33011f3d27da8e1d2cf43dc249597f199d5388cefa6200e9e3b6", + "0x3263b6e7d5c31f7873fe32542124bf2b11ce9520c629bc8b277e1dc9152717cf", + "0xce5e58922cf860beff17177cea7aa6c0e789233ba1b15cfaab6896c45dab7e3e", + "0x7b5bd2a6e19812524fc1c1c9c6ee8b970ddc3684b4a5bc3fe865dc28726032f3", + "0xbb76c2c12be46fb4a8d18e15817f9e77547acea67f71cd3bf0f13ebcf674080c", + "0x300838c866e4c8ec4e7d130a3191f3122795c26757ebeac2d51eb69f19319624", + "0x53b73eb4f155c5f126802db8f2a64ba08d93972743f3308454be1c0c68c7f4e5", + "0x4e0de18b8bb30adcd9770ee1cab2e0fb45225737e382b4376b08d4e64fab577e", + "0x3a6ca6bdeee957b6ed7297760bbcf53bc5b9945ef1fecfe8c9dbc077926d519a", + "0x014dea0c5dfe7db3b67349ebed21bae42f40f02857456827c72ace435b6b8632", + "0xa0b1b3f7f3883d34cb1ee9789c36b607ada517c526eea23193a786d72196ee1d", + "0x2bc8ee35c612ac2a9c9e5b97d6d3b9c458f7d8825c89c2d593faba38ca116357", + "0x6d61cf0212c61b9c608d7b0a5b2395e9ff41a815f429ed05abecfe350fa5c22b", + "0xcd284b589d6f3ea56a8eac1f7e17d4932c809ebe955300c3b1da554f7d0998cc", + "0x56b3afb245b853cb2cd2a9e6b938819db181b7541003fc298347b646cd0bd894", + "0xe24a047cf216f0837c52bfaccbcf4810026bc374618465d94480d5d222c37ec4", + "0x5e80313f3a14f41e63ae80192b79456d742e0a43d89e505d938e5d0b164a2b6c", + "0xcacdae3d23fd91db005624bd007f1f0c9bc48ee212e6ca2aab8b189b687b9f0d", + "0x2a0f603aeadf258feaf46805767fd42a61ccc3f031f42f131c4548875a887ba5", + "0xf90ac12554e9929db35620b33a5b61cef0cea7209a83f9ab44937dddb4c96bb3", + "0x1a4eb8628a48f763284900ffbd01107879f41c9479bc76c139db520d34295fc4", + "0xe0b600503c7f112ccc29a447ccd1c85285a304b403aaf0d227b3a7c7ffa4d9b8", + "0x1ecc791b207e1d79e10a9252fcb35591b0cabf71910eb50bde734ff7a364945c", + "0x7dc509f4b620ccc2de77ee7064b910a831a577008b8f099b76c2c9382c4ab31a", + "0xe94bf1b965b4a10ea548653cfccc63720c9945b3f02785b650c9ed26047855c6", + "0x19001b2e4a67c28e925ee2656aa6b8918c3b6d785101f4810ac9ba46cbd80d0a", + "0x717a34a0113fba177f11307a4b06f467fe4bff06f1bb38fea0c272ccd9256db6", + "0x1f8815eb7335b0a2b0b4d0cabc9f9fd97ec2fca78a69fe7c048ca540cdd303e3", + "0x56897445682734394c0e6923826b78222719c51dc288529d2ad2ffede4649f34", + "0x3c059f0c0e1809877da2fc06b1384e1ab651dee6b373980b0c5c64da57dc137e", + "0x7a0a2968b2b0458e653fda06a611c892ea1983ca852e31d916415244f06142a7", + "0x4711f167a6332b0dcd27e4530a498d2d5585dbad9b6a5d5e71d4dd07ad57adce", + "0xbdc064506c9f16e3a9607e7864ad1b4471c1fc9e0be5f98aefc5a330a33ba805", + "0x16d54ff57301af6239313e4b98e163d1a23ce6a0aa82d08e989edd31b24ba999", + "0x225a99bdb550da94a9a4717ae178f7def59f799ef36fe9d392a31a344ef6fe4a", + "0x3e502698ef85c6246dd7040f311f277f705bc028644a873df537b80b98d1fea1", + "0xe6969b55177b17b69d45c8e569fa83d00a75723ce5ba8a4b5ca67202ac5c353c", + "0x4358581c44a2caf58f64b86802c3729cf77f2b14df54c18ceac805b219440b0e", + "0xab33a0104b936b5e1be1e9d197619872eda67745ecd61f864149ff6932acfc3c", + "0x9da92be95e0f0d0e284bd8d2d3ee01b53b60482878b1434726df51e270fdf603", + "0x9543a4c4fcbe9d86084fc4b9431cfb8124919413c03f83e8666f2ec6376f0982", + "0x7ede3504ac4981e29634f703ac85e69ab389df3ee6f6ae62f6721b500fdddd20", + "0xe2ccb0b4c4114f266c9cbb387d255ee86971496aecfb57bd98f7ff1808384e06", + "0x971d50027dcde0cc2443d898438b181c772699bc7d4ed5d501258c4a8ba32de7", + "0x449ebd55963c7777e5d5523521810f69a5d4bcd6b20f558a2a5f904646dea0a0", + "0x5379acbafaa3c16ee514482e0497d4f3938399788f207adc9a77312c11d4aeb9", + "0x704ed53672d490277a0fe111fcd7790cd2fb53d94ef9d65196e315d788e38f60", + "0xfb0ff7818c21bd9883af9e04f5a2b9e5bb43173c8f791972d410d302b5dbf674", + "0x80a5bdb23c110c6acf90e6efc194eabf88d054cf1f27588ca77fbec650878544", + "0xdecf2911a31b325760b1df7fc9d9df80f28a6bca798f5503b2f73f93a4404a38", + "0x5bf29b9b96265b010a33a4bc05967edfac53c6fb3e8a8000d8c60fa869a8e8f0", + "0x24e0a4762cac65712ea029233970aded11c859dc4a5abf9c673664c35078ac1f", + "0x68327c02f690d8edd22330efefdb6233e2c8bbcb0c0ec4905694b1833adec387", + "0xbef7609a716a8d2623ead6eb31daebfbd9421816c467a4f80d027ba7dc1902cd", + "0xed29b3bc58c2dac4b2874e34dcbb83e32fff33b28437260d17edefa4ea1cbdbd", + "0x1c11469afb27568d93adc3d9af95075530067a6411b06431016efc05b021e6c3", + "0x1c1b432281eaea836c78fc78edc7ba02b3a5d6451a13c556fb46b682b02504c6", + "0xeebaab0904bfa1331f72dbc02e73b05303b4a71f2bea6b8e1b9855dd9b2d67d0", + "0xad36e72940ba9dfab81721c33d05bad5b412c774026a76ca0caaa8c6819e2f4d", + "0x5101be8446b66c40c7c375a663001070c6aaac7ccb559bc088e773f3370e8d97", + "0x3be827089ad34a73b9f6f8bbe1c7c414cdbcafc6573f6d987c3fe3e39f8fc043", + "0x16d5eca9c07ad9a133cf54c455d27030121482a1db142988d71770d083090dd5", + "0x4c2f8374663d94c4677d199b463f16916d307430ca39d36650be11e8dfe39c91", + "0xc26e2080ec735af4b67f9058e2289477ad970625d2e8cd7c4724d3844ee68936", + "0x49b9428a3cfb02fab5ecd3b603a68df495e36219f5c5a7335237137c9855c70f", + "0x55a4f76f8dc95a2a84666954727057845eb0ecf6ee456295739255c8fef23b81", + "0xe2efe0ae812195d68c6f8f846ad0fb90240984a444a2b2b5ba1096e8d299c96c", + "0x585d1f644a9802cb9a742d373a711616ff5ab0f3ba0a5f685d3dea11b041d289", + "0xaf87cda7cde3ff36e1a4a0a3a90e42052a72983f21331d78aba1e4c681eeb591", + "0x4f2cc01d0e07e9634505030847ed039ddbe4138ea4b2425e7b24188043b6fdfe", + "0x13a10286bc58803a4dbbd59c59dbf3c9ebb605d4ed0417a525fe30575331f4cd", + "0x9b54f33798b2d69512c527b1e92017351ea98f7edd956a1744d7ae00acdd096e", + "0xd5d636fd588c85c54d6f797ffa674e526caf5dab6e4e87f26c70c4462eef6c8c", + "0x47a182d7f196f6cd6f8b8818a9be457ce06fe8b93ef53c5669c756b23a07c5f1", + "0x2cebac7f3796b470e9c75693b1a8596bdbd2a89de862ab60ece1957d7b5383f3", + "0x7ce7e3078c683ec1573b2cd41b0b5fc62c28af48a23454b177699fec9ab322de", + "0x7d4f2be3a45bad9abc61edcbba9d86234f0460145e358dc6566ef623c50b91f2", + "0xfdaba3ce59b5e7ccd1f4a9e84bdd5feeb2b135603ffa49b86a7ce89eac635ce6", + "0x8c72f673640ed0564c3de1280414dabeb89cfe0ce6f49ebb81c3d7f0b1e6d55a", + "0xacacfcbe5ae3d3a9d1b3886bf8ec26bff6f84a23ae5dae8820ea138edb974c3b", + "0x3f2339582dc6834395622db187e6798edbcbe2f2e8458c2216779c1bb14d45dc", + "0x73a444fa697c736d392cd6d2b347d98734f5329d5910520419f391a443fdbd44", + "0xe03bb06673dd6d6e82f2d21c71053e62d3b1dd649d5e7a38150b83b0f085a473", + "0xc68461b94228db05a62a234ad0569aefbf31fa59fdba3d144c3a619d05fea871", + "0xb44575ebdc05026549326e837692dd60253155f001c7fa6f789568b7a136e8db", + "0xad0159409b99c1dead470cd92b3a9d4bfe25266d7400595c93f9276d8d580312", + "0x545c4abba819ad9a1d719991a5a0ca289932466fbc62471250e6c9148727a02e", + "0x5fa8b86faf4cec2e9de78f071822dc0af0198fcec23e1693e35ebb765d97d12c", + "0x2159886570715c7aa819fafea2166c045832707f76958fe456cf7af5ce8d73b6", + "0xff22db024b0e036d81383646db787cb0b1aeb713dc3387b788fd43a283a4a27c", + "0x7f229da8a815b51cdeb7b3662b7c902238b540ded6f224ce5568514032832ec3", + "0xa5e57b07a872a68d2cf2ee6fe73baeffdd4b5c3a423d2a819e67dd73dd36fb83", + "0xf0ad72ee27fb47af398972ea5ee5d07ff21091a0ee610a015da1f677ac04beeb", + "0xdbca73f967cd079e0c863e9be4194acfd63857fa71ab93c3d4c44dec0f88f9f8", + "0x29f4dafd87f712ebbe677193aa86ac807dc933cf0ab895c95feb8c19a46a78c8", + "0xef79cedefe4aab625ea24882c8e5493ac4540ddfa7ec8ac72d06d6c264a2a43f", + "0x377ad1711a2818e94eff19e349d34a5a7c0eaf3ad514b918efa58d48980f8dc7", + "0xca40524371fd62f82dfc73b74acd6f103bad8e81c22dcfe2c3b56d0941a2bf03", + "0x14f6e3daa8495585abf5030e856f742b63e2c3b8fab950fbcf61438d203b3481", + "0xfab710e7caecd295113ae04e2da94fd089d0cf2ed1bb804fc961bbda414fc78a", + "0x6a4ea10fee2a5029011fe25fc6788d1ffd6cdaeca4105b146745883ca457f7f2", + "0x3d16f801b58a8a0362178a2de3667967ac8e8e5600dec667098c56534e95c51e", + "0xe6b91400dbbe1279d8001c9ebbb951b85ae815e0812b3d706a257fd7cafc72a9", + "0x833f7223f1f9c216001b67fc3c5869c012ac7bdadf07a750bf5d504b8da9dac8", + "0x1dadfa642e018d46c90e4c9b45e7d22f964c713c829f28e7dd94456efb5ba769", + "0x9b0b0f0f9255c2ff2b0c0d9b70baea541997a2981b3e1cec904420c02c8e68f9", + "0x0ab920eab62b4a0fa9751d42b4656be510a8724337fe0adf54224cfea0b0e3b9", + "0x1669cc89308825fbcf62478c1d6d4a979d730bde70c1512afc0926e0d4e23929", + "0x66b011d44e8e971ad3063722cf5d6238c519d57c0a94c760e5c307a3158e4161", + "0x0a4ac475f2b54e24784b10b18df0086a92c407e2474479357baccd46086ea81c", + "0x988a166c64baeb21ff5ade5d2c563ef93ad0452c67015a1c472b2fc14944fcb7", + "0xac583c02f23326514085d3b816973c5907541f1efdb31373b399a67807ad1322", + "0x51d7e2b08d025386fb4b335b0d0e2d07f55b9208fff10d3a362832dc6a7547e0", + "0x6c4e553f3ce7b7c80cbce8d3c107cdcb8a7b4c89ebca8f1057e526552f1c979c", + "0x870d63c54b37873abfc8b0c8cc7bfa2b41261f77550251ab59a8f304417dbcd5", + "0x6db3c454f0583e94ba43aeca2c4ef413f80555eaef5829b1c4c1708d63d3b4e6", + "0x6cc1ddaf69d050d9b492d559de84c69232e43b7607cb6807933b1801cb4beea4", + "0xc7c0aa117b17ceef132579c731956b015ebaf3e802b85ee0a6c825f124a4451e", + "0x8bf5ba7ba1184ca6aa5f6915e418e455bb096403d43746ade9b5895fa8d0e69a", + "0x13bb12782984d634332842ce7b72a981a17bdd34ee6acd9adbf65844b96d7b48", + "0x88a59590e8e1366ec65ddf718dedbb5540a06317613a7dbe130c4a570f7f2963", + "0x8a89daffb49834fc7f2341d00151f952ef7d1a7299ab92b3fc926e442d9dad74", + "0x78afc35edc10009ad9fa1b51bb7774a48d7e53a960ebdd8818e51899fd8f5cc5", + "0x0e25764281bb700a43644ed3455c279969b80f5c537f4096934413a7904863a0", + "0xdad129d76c4fe2fc61c1af14ed7556321989efaef6824aee0436216504a36e1a", + "0x9e4fc1c9dea1e18cc4147cfc52cab7eaa90930a2b393a442238a8c5378cd4274", + "0x08c8c7dc91c967fdb900953d543b4975ec90b8def04eadcf7885c555c782ba5f", + "0x07d599a0c521f72463b80cbb534bf4dc605bf345dc1c5de1db13b55486d382d7", + "0x420c5f035c465ba9127bc832eb0f757814a6769dd9fce22b28f4a3a3e9cdfd33", + "0x2dc76172b77b50b249a5a5b9d5e23595b3310aff6199d7335eb94881d8d24906", + "0xd2fbcd5e757bd9eec8698e53088491d63b36854d315d278d1a2bd81988485077", + "0x3544b07abaf58fa8c4aa0dd1f0060c11e0de7cc1ed04b18f5f90cc196d3c99b3", + "0xe238c7374ba22d723699269c9c943eba814aa1afdb95d5e00707b3cac06a5f2a", + "0x1cfadf02760942304c47e07d07a7acbdfe7417c62d330b5802f598a7f550863f", + "0x65ad9de6d69c6e80c1cabd34f49c4c9d74b5986ecdf2e3bac30833a599cb792c", + "0x27f8b2a3a019abec3e4487fb353bd9ec0ac11a160c6c3a83df6ca959d404aa6d", + "0x6c814f0081795e7cdcf730b0807a3c91c7c656132d0d9ec2d9e39f1bb8f57526", + "0xec686e5d76bb74cc369ce26db62b742235bcf6ad7e7c5ef6872d62c45bdfd5d7", + "0x09941fefe99a62e910b1a0ab5751c36eef7d21b1740f2b9e25d814af27169649", + "0xc0cf4f22b4e05e192421baa0af9c888bd976239e70046a62cfb5b018d9205378", + "0x6c45ab7adedfa0a6a133d288a7b8ba2d213fce73124d78b0fa12e1360d930714", + "0x85872e50c368df9ce35b61d5363ce8db27f123661ae528334c6424a953197d00", + "0x6869696612636971deda05c67f663242977351aaaea43d9cdb718be5948f080b", + "0x291097a53461b3ec1740b0b61c129d827f0cf731e16defcfede2d7a544bf52f2", + "0x438259d8150e73fc0d2ec553a2143e1fa5d3e53e27b0533ca20ab37991050b4b", + "0xb1889369c5a7f3385258a7d63dcbe5b05ae2e2ff4ff1e5cf82e5b582a02e895b", + "0x3b03ee5f95e9588caaf54878d8b6c746dbeea3e695bf768651fd3c8e3255cade", + "0x60443bf8bbbec8f21d35a3d16c5cdafec1dd3bdf4b9c447bbeda74fd92655efd", + "0x61bbd3649fd7f9bdab23d6693135ec6dcf07adf1560d9bda68cbc97ae4917b42", + "0xc019e34634d76e06d2984f7201c445cf6fa3f72f3164c148de2b1827eed0b6b9", + "0x3031e3e27af9bcca0902254143e3a440d40dfed6bd69ee5095387347559fd231", + "0x6600ccda7d374610e0c8d0b7fb012bf5cb59966aa0d93f65850db3c6e4544bab", + "0x8e692bc730330a2f4bacebaae77983a1831372e64fb9578d42701a305f972ddf", + "0xb504ec0ea7de6f102f2b59f698d9f7a63893fa352fbe7d17bf05f9c0e0c7c0ea", + "0x8e8d3763f75dfb8c07fc5f609bd6becf34b6a19cadcf52a593cca1098bb2e56e", + "0xa30d9cca760ef7f64b647573f17adefe0da9694567c0948c677024388ff51617", + "0x61a0157d34d3474a167146c9dee2870b409cd9f96c9d2e530764a296b3b33d0d", + "0x625183a74036771889d7177b16cb7bc6982b1a68814c5140b4a31157ff953a2b", + "0x9c1fe65834f3733fef1fc14c47fbcbb270c01384975490ec7a483b5a29ab6a7d", + "0xf334351dae09bcd536fcf96d031457d0c1158d422adb8980b194da88670ffcbb", + "0xa9a92557684b04bfda34805c6588e1cb9fa44d7c73803c28a12a4cce0e46d222", + "0x9e5c9a5df1dfb47ea6cf46f0421492ed1613039789ab91d237ce65a1ef6826ec", + "0xc3fe546f606cee75b2c28ad343ae67da95b99b507742aa1814fcf472a8874bed", + "0x73a429e5ad90697799123575999fa28922436600934689457b0b5ae787e3aa20", + "0xbd8ce8cb98c7f263a6b8cb909b671782cb57ee111180f565c988bd97c9369ce1", + "0x45a0254dd0944f5419fa6a658a124de3a8fdf53dd799d2ff71fb1256b6648273", + "0x598cba26ab789de29b9043f53d02872d6fa2fc86df238d54786b14e4ad8bcbe9" ] }, "nodes": [ @@ -2739,12 +3391,13 @@ "nonce": "0x0", "builtin": { "name": "alt_bn128_add", - "activate_at": "0x19f0a0", - "eip1108_transition": "0x62f756", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0x19f0a0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x62f756": { + "info": "EIP 1108 transition at block 6_485_846 (0x62f756)", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -2754,12 +3407,13 @@ "nonce": "0x0", "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x19f0a0", - "eip1108_transition": "0x62f756", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0x19f0a0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x62f756": { + "info": "EIP 1108 transition at block 6_485_846 (0x62f756)", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -2769,14 +3423,13 @@ "nonce": "0x0", "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x19f0a0", - "eip1108_transition": "0x62f756", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0x19f0a0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x62f756": { + "info": "EIP 1108 transition at block 6_485_846 (0x62f756)", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/st_peters_test.json b/ethcore/res/ethereum/st_peters_test.json index 768e6057fd2..ac404c7dca1 100644 --- a/ethcore/res/ethereum/st_peters_test.json +++ b/ethcore/res/ethereum/st_peters_test.json @@ -62,12 +62,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -75,12 +76,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -88,14 +90,13 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/transition_test.json b/ethcore/res/ethereum/transition_test.json index bc28ebd509b..901f4dfded3 100644 --- a/ethcore/res/ethereum/transition_test.json +++ b/ethcore/res/ethereum/transition_test.json @@ -60,12 +60,13 @@ "0000000000000000000000000000000000000006": { "builtin": { "name": "alt_bn128_add", - "activate_at": "5", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "5": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -73,12 +74,13 @@ "0000000000000000000000000000000000000007": { "builtin": { "name": "alt_bn128_mul", - "activate_at": "5", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "5": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -86,14 +88,13 @@ "0000000000000000000000000000000000000008": { "builtin": { "name": "alt_bn128_pairing", - "activate_at": "5", - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "5": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/ethereum/volta.json b/ethcore/res/ethereum/volta.json index 9ac6f9afa43..55cc39d9997 100644 --- a/ethcore/res/ethereum/volta.json +++ b/ethcore/res/ethereum/volta.json @@ -1,207 +1,1307 @@ { - "name": "Volta", - "engine": { - "authorityRound": { - "params": { - "stepDuration": "5", - "validators": { - "contract": "0x1204700000000000000000000000000000000000" - }, - "maximumUncleCountTransition": "0", - "maximumUncleCount": "0", - "blockRewardContractAddress": "0x1204700000000000000000000000000000000002", - "blockRewardContractTransition": "0" - } - } - }, - "params": { - "networkID": "0x12047", - "maximumExtraDataSize": "0x20", - "gasLimitBoundDivisor": "0x400", - "minGasLimit": "0x1388", - "maxCodeSize": "0x6000", - "eip140Transition": "0x0", - "eip211Transition": "0x0", - "eip214Transition": "0x0", - "eip658Transition": "0x0", - "eip145Transition": "0x0", - "eip1014Transition": "0x0", - "eip1052Transition": "0x0", - "registrar": "0x1204700000000000000000000000000000000006" - }, - "genesis": { - "seal": { - "authorityRound": { - "step": "0x0", - "signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - } - }, - "difficulty": "0x20000", - "gasLimit": "0x5B8D80" - }, - "accounts": { - "0x0000000000000000000000000000000000000001": { - "balance": "1", - "builtin": { - "name": "ecrecover", - "activate_at": "0", - "pricing": { - "linear": { - "base": 3000, - "word": 0 - } - } - } - }, - "0x0000000000000000000000000000000000000002": { - "balance": "1", - "builtin": { - "name": "sha256", - "activate_at": "0", - "pricing": { - "linear": { - "base": 60, - "word": 12 - } - } - } - }, - "0x0000000000000000000000000000000000000003": { - "balance": "1", - "builtin": { - "name": "ripemd160", - "activate_at": "0", - "pricing": { - "linear": { - "base": 600, - "word": 120 - } - } - } - }, - "0x0000000000000000000000000000000000000004": { - "balance": "1", - "builtin": { - "name": "identity", - "activate_at": "0", - "pricing": { - "linear": { - "base": 15, - "word": 3 - } - } - } - }, - "0x0000000000000000000000000000000000000005": { - "balance": "1", - "builtin": { - "name": "modexp", - "activate_at": "0", - "pricing": { - "modexp": { - "divisor": 20 - } - } - } - }, - "0x0000000000000000000000000000000000000006": { - "balance": "1", - "builtin": { - "name": "alt_bn128_add", - "activate_at": "0", - "eip1108_transition": "0x7fffffffffffff", - "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 - } - } - } - }, - "0x0000000000000000000000000000000000000007": { - "balance": "1", - "builtin": { - "name": "alt_bn128_mul", - "activate_at": "0", - "eip1108_transition": "0x7fffffffffffff", - "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 - } - } - } - }, - "0x0000000000000000000000000000000000000008": { - "balance": "1", - "builtin": { - "name": "alt_bn128_pairing", - "activate_at": "0", - "eip1108_transition": "0x7fffffffffffff", - "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 - } - } - } - }, - "0x1204700000000000000000000000000000000005": { - "constructor": "0x606060405234156200001057600080fd5b6040516200240138038062002401833981016040528080518201919060200180519060200190919050505b600082518260328211158015620000525750818111155b801562000060575060008114155b80156200006e575060008214155b15156200007a57600080fd5b600092505b8451831015620001b6576002600086858151811015156200009c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156200012b5750600085848151811015156200010857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15156200013757600080fd5b60016002600087868151811015156200014c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82806001019350506200007f565b8460039080519060200190620001ce929190620001e3565b50836004819055505b5b5050505050620002b8565b8280548282559060005260206000209081019282156200025f579160200282015b828111156200025e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000204565b5b5090506200026e919062000272565b5090565b620002b591905b80821115620002b157600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000279565b5090565b90565b61213980620002c86000396000f3006060604052361561011b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101da57806320ea8d86146102135780632f54bf6e146102365780633411c81c1461028757806354741525146102e15780637065cb4814610325578063784547a71461035e5780638b51d13f146103995780639ace38c2146103d0578063a0e67e2b146104ce578063a8abe69a14610539578063b5dc40c3146105d1578063b77bf6001461064a578063ba51a6df14610673578063c01a8c8414610696578063c6427474146106b9578063d74f8edd14610752578063dc8452cd1461077b578063e20056e6146107a4578063ee22610b146107fc575b5b6000341115610174573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b5b005b341561018257600080fd5b610198600480803590602001909190505061081f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101e557600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061085f565b005b341561021e57600080fd5b6102346004808035906020019091905050610b02565b005b341561024157600080fd5b61026d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cae565b604051808215151515815260200191505060405180910390f35b341561029257600080fd5b6102c7600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cce565b604051808215151515815260200191505060405180910390f35b34156102ec57600080fd5b61030f600480803515159060200190919080351515906020019091905050610cfd565b6040518082815260200191505060405180910390f35b341561033057600080fd5b61035c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d91565b005b341561036957600080fd5b61037f6004808035906020019091905050610f99565b604051808215151515815260200191505060405180910390f35b34156103a457600080fd5b6103ba6004808035906020019091905050611081565b6040518082815260200191505060405180910390f35b34156103db57600080fd5b6103f16004808035906020019091905050611150565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001831515151581526020018281038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156104bc5780601f10610491576101008083540402835291602001916104bc565b820191906000526020600020905b81548152906001019060200180831161049f57829003601f168201915b50509550505050505060405180910390f35b34156104d957600080fd5b6104e16111ac565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105255780820151818401525b602081019050610509565b505050509050019250505060405180910390f35b341561054457600080fd5b610579600480803590602001909190803590602001909190803515159060200190919080351515906020019091905050611241565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105bd5780820151818401525b6020810190506105a1565b505050509050019250505060405180910390f35b34156105dc57600080fd5b6105f260048080359060200190919050506113a2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106365780820151818401525b60208101905061061a565b505050509050019250505060405180910390f35b341561065557600080fd5b61065d6115d3565b6040518082815260200191505060405180910390f35b341561067e57600080fd5b61069460048080359060200190919050506115d9565b005b34156106a157600080fd5b6106b76004808035906020019091905050611696565b005b34156106c457600080fd5b61073c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611877565b6040518082815260200191505060405180910390f35b341561075d57600080fd5b610765611897565b6040518082815260200191505060405180910390f35b341561078657600080fd5b61078e61189c565b6040518082815260200191505060405180910390f35b34156107af57600080fd5b6107fa600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118a2565b005b341561080757600080fd5b61081d6004808035906020019091905050611bc0565b005b60038181548110151561082e57fe5b906000526020600020900160005b915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561089b57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108f457600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610a80578273ffffffffffffffffffffffffffffffffffffffff1660038381548110151561098757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a725760036001600380549050038154811015156109e757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a2357fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a80565b5b8180600101925050610951565b6001600381818054905003915081610a989190611fe8565b506003805490506004541115610ab757610ab66003805490506115d9565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a25b5b505b5050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b5b57600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610bc657600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff16151515610bf657600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35b5b505b50505b5050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610d8957838015610d3c575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610d6f5750828015610d6e575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610d7b576001820191505b5b8080600101915050610d05565b5b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dcb57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610e2557600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff1614151515610e4c57600080fd5b60016003805490500160045460328211158015610e695750818111155b8015610e76575060008114155b8015610e83575060008214155b1515610e8e57600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610efa9190612014565b916000526020600020900160005b87909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25b5b50505b505b505b50565b6000806000809150600090505b60038054905081101561107957600160008581526020019081526020016000206000600383815481101515610fd757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611058576001820191505b60045482141561106b576001925061107a565b5b8080600101915050610fa6565b5b5050919050565b600080600090505b600380549050811015611149576001600084815260200190815260200160002060006003838154811015156110ba57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561113b576001820191505b5b8080600101915050611089565b5b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201908060030160009054906101000a900460ff16905084565b6111b4612040565b600380548060200260200160405190810160405280929190818152602001828054801561123657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111ec575b505050505090505b90565b611249612054565b611251612054565b6000806005546040518059106112645750595b908082528060200260200182016040525b50925060009150600090505b600554811015611322578580156112b8575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806112eb57508480156112ea575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15611314578083838151811015156112ff57fe5b90602001906020020181815250506001820191505b5b8080600101915050611281565b8787036040518059106113325750595b908082528060200260200182016040525b5093508790505b8681101561139657828181518110151561136057fe5b906020019060200201518489830381518110151561137a57fe5b90602001906020020181815250505b808060010191505061134a565b5b505050949350505050565b6113aa612040565b6113b2612040565b6000806003805490506040518059106113c85750595b908082528060200260200182016040525b50925060009150600090505b60038054905081101561152b5760016000868152602001908152602001600020600060038381548110151561141657fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561151d5760038181548110151561149f57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156114da57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b5b80806001019150506113e5565b816040518059106115395750595b908082528060200260200182016040525b509350600090505b818110156115ca57828181518110151561156857fe5b90602001906020020151848281518110151561158057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8080600101915050611552565b5b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161357600080fd5b600380549050816032821115801561162b5750818111155b8015611638575060008114155b8015611645575060008214155b151561165057600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a15b5b50505b50565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156116ef57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561174b57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156117b757600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a361186c85611bc0565b5b5b50505b505b5050565b6000611884848484611e6c565b905061188f81611696565b5b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118de57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561193757600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561199157600080fd5b600092505b600380549050831015611a7f578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119c957fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a715783600384815481101515611a2257fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a7f565b5b8280600101935050611996565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25b5b505b505b505050565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c1b57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c8657600080fd5b8460008082815260200190815260200160002060030160009054906101000a900460ff16151515611cb657600080fd5b611cbf86610f99565b15611e6057600080878152602001908152602001600020945060018560030160006101000a81548160ff021916908315150217905550611ddd8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015487600201805460018160011615610100020316600290049050886002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dd35780601f10611da857610100808354040283529160200191611dd3565b820191906000526020600020905b815481529060010190602001808311611db657829003601f168201915b5050505050611fc0565b15611e1457857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611e5f565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b5b5b5b505b50505b505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff1614151515611e9557600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019080519060200190611f54929190612068565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a25b5b509392505050565b6000806040516020840160008287838a8c6187965a03f1925050508091505b50949350505050565b81548183558181151161200f5781836000526020600020918201910161200e91906120e8565b5b505050565b81548183558181151161203b5781836000526020600020918201910161203a91906120e8565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120a957805160ff19168380011785556120d7565b828001600101855582156120d7579182015b828111156120d65782518255916020019190600101906120bb565b5b5090506120e491906120e8565b5090565b61210a91905b808211156121065760008160009055506001016120ee565b5090565b905600a165627a7a72305820f1129b699b3017535535a920e15503cd06af1f5c77637c0637cc29355b1dad3400290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000cb1437200aea736788f1fc56f327c0456c3598d00000000000000000000000074dd76e24b2cfb43c1b1a4498295d553d0843746000000000000000000000000eeb4ceee443f9e0d17bdbd6daa241681ee5e51c2000000000000000000000000a005caea55375ae20e3aaef746113535503abc19" - }, - "0x1204700000000000000000000000000000000003": { - "constructor": "0x606060405234156200001057600080fd5b6040516200240138038062002401833981016040528080518201919060200180519060200190919050505b600082518260328211158015620000525750818111155b801562000060575060008114155b80156200006e575060008214155b15156200007a57600080fd5b600092505b8451831015620001b6576002600086858151811015156200009c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156200012b5750600085848151811015156200010857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15156200013757600080fd5b60016002600087868151811015156200014c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82806001019350506200007f565b8460039080519060200190620001ce929190620001e3565b50836004819055505b5b5050505050620002b8565b8280548282559060005260206000209081019282156200025f579160200282015b828111156200025e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000204565b5b5090506200026e919062000272565b5090565b620002b591905b80821115620002b157600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000279565b5090565b90565b61213980620002c86000396000f3006060604052361561011b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101da57806320ea8d86146102135780632f54bf6e146102365780633411c81c1461028757806354741525146102e15780637065cb4814610325578063784547a71461035e5780638b51d13f146103995780639ace38c2146103d0578063a0e67e2b146104ce578063a8abe69a14610539578063b5dc40c3146105d1578063b77bf6001461064a578063ba51a6df14610673578063c01a8c8414610696578063c6427474146106b9578063d74f8edd14610752578063dc8452cd1461077b578063e20056e6146107a4578063ee22610b146107fc575b5b6000341115610174573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b5b005b341561018257600080fd5b610198600480803590602001909190505061081f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101e557600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061085f565b005b341561021e57600080fd5b6102346004808035906020019091905050610b02565b005b341561024157600080fd5b61026d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cae565b604051808215151515815260200191505060405180910390f35b341561029257600080fd5b6102c7600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cce565b604051808215151515815260200191505060405180910390f35b34156102ec57600080fd5b61030f600480803515159060200190919080351515906020019091905050610cfd565b6040518082815260200191505060405180910390f35b341561033057600080fd5b61035c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d91565b005b341561036957600080fd5b61037f6004808035906020019091905050610f99565b604051808215151515815260200191505060405180910390f35b34156103a457600080fd5b6103ba6004808035906020019091905050611081565b6040518082815260200191505060405180910390f35b34156103db57600080fd5b6103f16004808035906020019091905050611150565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001831515151581526020018281038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156104bc5780601f10610491576101008083540402835291602001916104bc565b820191906000526020600020905b81548152906001019060200180831161049f57829003601f168201915b50509550505050505060405180910390f35b34156104d957600080fd5b6104e16111ac565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105255780820151818401525b602081019050610509565b505050509050019250505060405180910390f35b341561054457600080fd5b610579600480803590602001909190803590602001909190803515159060200190919080351515906020019091905050611241565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105bd5780820151818401525b6020810190506105a1565b505050509050019250505060405180910390f35b34156105dc57600080fd5b6105f260048080359060200190919050506113a2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106365780820151818401525b60208101905061061a565b505050509050019250505060405180910390f35b341561065557600080fd5b61065d6115d3565b6040518082815260200191505060405180910390f35b341561067e57600080fd5b61069460048080359060200190919050506115d9565b005b34156106a157600080fd5b6106b76004808035906020019091905050611696565b005b34156106c457600080fd5b61073c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611877565b6040518082815260200191505060405180910390f35b341561075d57600080fd5b610765611897565b6040518082815260200191505060405180910390f35b341561078657600080fd5b61078e61189c565b6040518082815260200191505060405180910390f35b34156107af57600080fd5b6107fa600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118a2565b005b341561080757600080fd5b61081d6004808035906020019091905050611bc0565b005b60038181548110151561082e57fe5b906000526020600020900160005b915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561089b57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108f457600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610a80578273ffffffffffffffffffffffffffffffffffffffff1660038381548110151561098757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a725760036001600380549050038154811015156109e757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a2357fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a80565b5b8180600101925050610951565b6001600381818054905003915081610a989190611fe8565b506003805490506004541115610ab757610ab66003805490506115d9565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a25b5b505b5050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b5b57600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610bc657600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff16151515610bf657600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35b5b505b50505b5050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610d8957838015610d3c575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610d6f5750828015610d6e575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610d7b576001820191505b5b8080600101915050610d05565b5b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dcb57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610e2557600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff1614151515610e4c57600080fd5b60016003805490500160045460328211158015610e695750818111155b8015610e76575060008114155b8015610e83575060008214155b1515610e8e57600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610efa9190612014565b916000526020600020900160005b87909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25b5b50505b505b505b50565b6000806000809150600090505b60038054905081101561107957600160008581526020019081526020016000206000600383815481101515610fd757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611058576001820191505b60045482141561106b576001925061107a565b5b8080600101915050610fa6565b5b5050919050565b600080600090505b600380549050811015611149576001600084815260200190815260200160002060006003838154811015156110ba57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561113b576001820191505b5b8080600101915050611089565b5b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201908060030160009054906101000a900460ff16905084565b6111b4612040565b600380548060200260200160405190810160405280929190818152602001828054801561123657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111ec575b505050505090505b90565b611249612054565b611251612054565b6000806005546040518059106112645750595b908082528060200260200182016040525b50925060009150600090505b600554811015611322578580156112b8575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806112eb57508480156112ea575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15611314578083838151811015156112ff57fe5b90602001906020020181815250506001820191505b5b8080600101915050611281565b8787036040518059106113325750595b908082528060200260200182016040525b5093508790505b8681101561139657828181518110151561136057fe5b906020019060200201518489830381518110151561137a57fe5b90602001906020020181815250505b808060010191505061134a565b5b505050949350505050565b6113aa612040565b6113b2612040565b6000806003805490506040518059106113c85750595b908082528060200260200182016040525b50925060009150600090505b60038054905081101561152b5760016000868152602001908152602001600020600060038381548110151561141657fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561151d5760038181548110151561149f57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156114da57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b5b80806001019150506113e5565b816040518059106115395750595b908082528060200260200182016040525b509350600090505b818110156115ca57828181518110151561156857fe5b90602001906020020151848281518110151561158057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8080600101915050611552565b5b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161357600080fd5b600380549050816032821115801561162b5750818111155b8015611638575060008114155b8015611645575060008214155b151561165057600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a15b5b50505b50565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156116ef57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561174b57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156117b757600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a361186c85611bc0565b5b5b50505b505b5050565b6000611884848484611e6c565b905061188f81611696565b5b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118de57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561193757600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561199157600080fd5b600092505b600380549050831015611a7f578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119c957fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a715783600384815481101515611a2257fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a7f565b5b8280600101935050611996565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25b5b505b505b505050565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c1b57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c8657600080fd5b8460008082815260200190815260200160002060030160009054906101000a900460ff16151515611cb657600080fd5b611cbf86610f99565b15611e6057600080878152602001908152602001600020945060018560030160006101000a81548160ff021916908315150217905550611ddd8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015487600201805460018160011615610100020316600290049050886002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dd35780601f10611da857610100808354040283529160200191611dd3565b820191906000526020600020905b815481529060010190602001808311611db657829003601f168201915b5050505050611fc0565b15611e1457857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611e5f565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b5b5b5b505b50505b505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff1614151515611e9557600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019080519060200190611f54929190612068565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a25b5b509392505050565b6000806040516020840160008287838a8c6187965a03f1925050508091505b50949350505050565b81548183558181151161200f5781836000526020600020918201910161200e91906120e8565b5b505050565b81548183558181151161203b5781836000526020600020918201910161203a91906120e8565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120a957805160ff19168380011785556120d7565b828001600101855582156120d7579182015b828111156120d65782518255916020019190600101906120bb565b5b5090506120e491906120e8565b5090565b61210a91905b808211156121065760008160009055506001016120ee565b5090565b905600a165627a7a72305820f1129b699b3017535535a920e15503cd06af1f5c77637c0637cc29355b1dad3400290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000cb1437200aea736788f1fc56f327c0456c3598d00000000000000000000000074dd76e24b2cfb43c1b1a4498295d553d0843746000000000000000000000000eeb4ceee443f9e0d17bdbd6daa241681ee5e51c2000000000000000000000000a005caea55375ae20e3aaef746113535503abc19" - }, - "0x120470000000000000000000000000000000000a": { - "balance": "11310499300000000000000000", - "constructor": "0x606060405234156200001057600080fd5b6040516200240138038062002401833981016040528080518201919060200180519060200190919050505b600082518260328211158015620000525750818111155b801562000060575060008114155b80156200006e575060008214155b15156200007a57600080fd5b600092505b8451831015620001b6576002600086858151811015156200009c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156200012b5750600085848151811015156200010857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15156200013757600080fd5b60016002600087868151811015156200014c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82806001019350506200007f565b8460039080519060200190620001ce929190620001e3565b50836004819055505b5b5050505050620002b8565b8280548282559060005260206000209081019282156200025f579160200282015b828111156200025e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000204565b5b5090506200026e919062000272565b5090565b620002b591905b80821115620002b157600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000279565b5090565b90565b61213980620002c86000396000f3006060604052361561011b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101da57806320ea8d86146102135780632f54bf6e146102365780633411c81c1461028757806354741525146102e15780637065cb4814610325578063784547a71461035e5780638b51d13f146103995780639ace38c2146103d0578063a0e67e2b146104ce578063a8abe69a14610539578063b5dc40c3146105d1578063b77bf6001461064a578063ba51a6df14610673578063c01a8c8414610696578063c6427474146106b9578063d74f8edd14610752578063dc8452cd1461077b578063e20056e6146107a4578063ee22610b146107fc575b5b6000341115610174573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b5b005b341561018257600080fd5b610198600480803590602001909190505061081f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101e557600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061085f565b005b341561021e57600080fd5b6102346004808035906020019091905050610b02565b005b341561024157600080fd5b61026d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cae565b604051808215151515815260200191505060405180910390f35b341561029257600080fd5b6102c7600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cce565b604051808215151515815260200191505060405180910390f35b34156102ec57600080fd5b61030f600480803515159060200190919080351515906020019091905050610cfd565b6040518082815260200191505060405180910390f35b341561033057600080fd5b61035c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d91565b005b341561036957600080fd5b61037f6004808035906020019091905050610f99565b604051808215151515815260200191505060405180910390f35b34156103a457600080fd5b6103ba6004808035906020019091905050611081565b6040518082815260200191505060405180910390f35b34156103db57600080fd5b6103f16004808035906020019091905050611150565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001831515151581526020018281038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156104bc5780601f10610491576101008083540402835291602001916104bc565b820191906000526020600020905b81548152906001019060200180831161049f57829003601f168201915b50509550505050505060405180910390f35b34156104d957600080fd5b6104e16111ac565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105255780820151818401525b602081019050610509565b505050509050019250505060405180910390f35b341561054457600080fd5b610579600480803590602001909190803590602001909190803515159060200190919080351515906020019091905050611241565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105bd5780820151818401525b6020810190506105a1565b505050509050019250505060405180910390f35b34156105dc57600080fd5b6105f260048080359060200190919050506113a2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106365780820151818401525b60208101905061061a565b505050509050019250505060405180910390f35b341561065557600080fd5b61065d6115d3565b6040518082815260200191505060405180910390f35b341561067e57600080fd5b61069460048080359060200190919050506115d9565b005b34156106a157600080fd5b6106b76004808035906020019091905050611696565b005b34156106c457600080fd5b61073c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611877565b6040518082815260200191505060405180910390f35b341561075d57600080fd5b610765611897565b6040518082815260200191505060405180910390f35b341561078657600080fd5b61078e61189c565b6040518082815260200191505060405180910390f35b34156107af57600080fd5b6107fa600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118a2565b005b341561080757600080fd5b61081d6004808035906020019091905050611bc0565b005b60038181548110151561082e57fe5b906000526020600020900160005b915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561089b57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108f457600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610a80578273ffffffffffffffffffffffffffffffffffffffff1660038381548110151561098757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a725760036001600380549050038154811015156109e757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a2357fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a80565b5b8180600101925050610951565b6001600381818054905003915081610a989190611fe8565b506003805490506004541115610ab757610ab66003805490506115d9565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a25b5b505b5050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b5b57600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610bc657600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff16151515610bf657600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35b5b505b50505b5050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610d8957838015610d3c575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610d6f5750828015610d6e575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610d7b576001820191505b5b8080600101915050610d05565b5b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dcb57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610e2557600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff1614151515610e4c57600080fd5b60016003805490500160045460328211158015610e695750818111155b8015610e76575060008114155b8015610e83575060008214155b1515610e8e57600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610efa9190612014565b916000526020600020900160005b87909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25b5b50505b505b505b50565b6000806000809150600090505b60038054905081101561107957600160008581526020019081526020016000206000600383815481101515610fd757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611058576001820191505b60045482141561106b576001925061107a565b5b8080600101915050610fa6565b5b5050919050565b600080600090505b600380549050811015611149576001600084815260200190815260200160002060006003838154811015156110ba57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561113b576001820191505b5b8080600101915050611089565b5b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201908060030160009054906101000a900460ff16905084565b6111b4612040565b600380548060200260200160405190810160405280929190818152602001828054801561123657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111ec575b505050505090505b90565b611249612054565b611251612054565b6000806005546040518059106112645750595b908082528060200260200182016040525b50925060009150600090505b600554811015611322578580156112b8575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806112eb57508480156112ea575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15611314578083838151811015156112ff57fe5b90602001906020020181815250506001820191505b5b8080600101915050611281565b8787036040518059106113325750595b908082528060200260200182016040525b5093508790505b8681101561139657828181518110151561136057fe5b906020019060200201518489830381518110151561137a57fe5b90602001906020020181815250505b808060010191505061134a565b5b505050949350505050565b6113aa612040565b6113b2612040565b6000806003805490506040518059106113c85750595b908082528060200260200182016040525b50925060009150600090505b60038054905081101561152b5760016000868152602001908152602001600020600060038381548110151561141657fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561151d5760038181548110151561149f57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156114da57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b5b80806001019150506113e5565b816040518059106115395750595b908082528060200260200182016040525b509350600090505b818110156115ca57828181518110151561156857fe5b90602001906020020151848281518110151561158057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8080600101915050611552565b5b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161357600080fd5b600380549050816032821115801561162b5750818111155b8015611638575060008114155b8015611645575060008214155b151561165057600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a15b5b50505b50565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156116ef57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561174b57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156117b757600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a361186c85611bc0565b5b5b50505b505b5050565b6000611884848484611e6c565b905061188f81611696565b5b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118de57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561193757600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561199157600080fd5b600092505b600380549050831015611a7f578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119c957fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a715783600384815481101515611a2257fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a7f565b5b8280600101935050611996565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25b5b505b505b505050565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c1b57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c8657600080fd5b8460008082815260200190815260200160002060030160009054906101000a900460ff16151515611cb657600080fd5b611cbf86610f99565b15611e6057600080878152602001908152602001600020945060018560030160006101000a81548160ff021916908315150217905550611ddd8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015487600201805460018160011615610100020316600290049050886002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dd35780601f10611da857610100808354040283529160200191611dd3565b820191906000526020600020905b815481529060010190602001808311611db657829003601f168201915b5050505050611fc0565b15611e1457857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611e5f565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b5b5b5b505b50505b505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff1614151515611e9557600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019080519060200190611f54929190612068565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a25b5b509392505050565b6000806040516020840160008287838a8c6187965a03f1925050508091505b50949350505050565b81548183558181151161200f5781836000526020600020918201910161200e91906120e8565b5b505050565b81548183558181151161203b5781836000526020600020918201910161203a91906120e8565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120a957805160ff19168380011785556120d7565b828001600101855582156120d7579182015b828111156120d65782518255916020019190600101906120bb565b5b5090506120e491906120e8565b5090565b61210a91905b808211156121065760008160009055506001016120ee565b5090565b905600a165627a7a72305820f1129b699b3017535535a920e15503cd06af1f5c77637c0637cc29355b1dad3400290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000cb1437200aea736788f1fc56f327c0456c3598d00000000000000000000000074dd76e24b2cfb43c1b1a4498295d553d0843746000000000000000000000000eeb4ceee443f9e0d17bdbd6daa241681ee5e51c2000000000000000000000000a005caea55375ae20e3aaef746113535503abc19" - }, - "0x0cB1437200aea736788f1Fc56F327c0456c3598D": { - "balance": "250000000000000000" - }, - "0x74dd76E24B2CFB43C1b1a4498295d553D0843746": { - "balance": "250000000000000000" - }, - "0xeeB4CEEe443F9e0D17BdBD6Daa241681EE5E51c2": { - "balance": "250000000000000000" - }, - "0xA005caEa55375ae20e3aAEF746113535503ABC19": { - "balance": "250000000000000000" - }, - "0x1204700000000000000000000000000000000001": { - "constructor": "0x60806040523480156200001157600080fd5b5060405162002f1538038062002f15833981018060405260608110156200003757600080fd5b81019080805190602001909291908051906020019092919080516401000000008111156200006457600080fd5b828101905060208101848111156200007b57600080fd5b81518560208202830111640100000000821117156200009957600080fd5b5050929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002ec56024913960400191505060405180910390fd5b60018151101562000242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018062002ee9602c913960400191505060405180910390fd5b6200025c8362000473640100000000026401000000009004565b6200027682620005d5640100000000026401000000009004565b60008090505b81518110156200042057600073ffffffffffffffffffffffffffffffffffffffff16828281518110620002ab57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156200033e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f56616c696461746f7220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b6001600360008484815181106200035157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836003811115620003b257fe5b02179055508060036000848481518110620003c957fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555080806001019150506200027c565b508060029080519060200190620004399291906200065c565b50600260019080546200044e929190620006eb565b506001600060146101000a81548160ff02191690831515021790555050505062000788565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe8ec518081a7aa1fc5d586a5443a858ab130be8b8e39b545172c879a7e242c6b60405160405180910390a250565b828054828255906000526020600020908101928215620006d8579160200282015b82811115620006d75782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200067d565b5b509050620006e7919062000742565b5090565b8280548282559060005260206000209081019282156200072f5760005260206000209182015b828111156200072e57825482559160010191906001019062000711565b5b5090506200073e919062000742565b5090565b6200078591905b808211156200078157600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000749565b5090565b90565b61272d80620007986000396000f3fe608060405234801561001057600080fd5b506004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900480639f723637116100d5578063b980490911610099578063b980490914610594578063bd21442a146105f0578063c805f68b146106b3578063d826b7f1146106f7578063f2fde38b14610765578063f3aeac02146107a95761015f565b80639f7236371461040e578063a00745b61461046d578063a6940b07146104c9578063b3f05b9714610513578063b7ab4db5146105355761015f565b8063455701d611610127578063455701d6146102eb5780634d238c8e1461034a578063715018a61461038e57806375286211146103985780638da5cb5b146103a25780638f32d59b146103ec5761015f565b8063267fa41d1461016457806334ba3c1b146101c057806340550a1c146101de57806340a141ff1461023a578063418349551461027e575b600080fd5b6101a66004803603602081101561017a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610805565b604051808215151515815260200191505060405180910390f35b6101c8610877565b6040518082815260200191505060405180910390f35b610220600480360360208110156101f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610884565b604051808215151515815260200191505060405180910390f35b61027c6004803603602081101561025057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610965565b005b6102c06004803603602081101561029457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ab0565b604051808360038111156102d057fe5b60ff1681526020018281526020019250505060405180910390f35b6102f3610ae1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561033657808201518184015260208101905061031b565b505050509050019250505060405180910390f35b61038c6004803603602081101561036057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b6f565b005b610396610d79565b005b6103a0610eb2565b005b6103aa611328565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103f4611351565b604051808215151515815260200191505060405180910390f35b6104166113a8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561045957808201518184015260208101905061043e565b505050509050019250505060405180910390f35b6104af6004803603602081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114d7565b604051808215151515815260200191505060405180910390f35b6104d16115b8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61051b6115de565b604051808215151515815260200191505060405180910390f35b61053d6115f1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610580578082015181840152602081019050610565565b505050509050019250505060405180910390f35b6105d6600480360360208110156105aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061167f565b604051808215151515815260200191505060405180910390f35b6106b16004803603608081101561060657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561066d57600080fd5b82018360208201111561067f57600080fd5b803590602001918460018302840111640100000000831117156106a157600080fd5b90919293919293905050506116f0565b005b6106f5600480360360208110156106c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061194c565b005b6107636004803603606081101561070d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611aff565b005b6107a76004803603602081101561077b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d59565b005b6107eb600480360360208110156107bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ddf565b604051808215151515815260200191505060405180910390f35b60006001600381111561081457fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561086f57fe5b149050919050565b6000600180549050905090565b60006001600381111561089357fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156108ee57fe5b148061095e575060038081111561090157fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561095c57fe5b145b9050919050565b61096d611351565b6109df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600060149054906101000a900460ff16610a44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126736022913960400191505060405180910390fd5b80610a4e81610884565b610aa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126516022913960400191505060405180910390fd5b610aac82611e51565b5050565b60036020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60606002805480602002602001604051908101604052809291908181526020018280548015610b6557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b1b575b5050505050905090565b610b77611351565b610be9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600060149054906101000a900460ff16610c4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126736022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cf1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f56616c696461746f7220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b610cfa81610884565b15610d6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f546869732076616c696461746f7220697320616c72656164792061637469766581525060200191505060405180910390fd5b610d76816120a4565b50565b610d81611351565b610df3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060149054906101000a900460ff1615610f35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f56616c696461746f72207365742069732066696e616c697a656400000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ff8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f74207468652052656c617920636f6e747261637481525060200191505060405180910390fd5b6001600060146101000a81548160ff02191690831515021790555060008090505b6002805490508110156110dd576000600360006002848154811061103957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160000160006101000a81548160ff021916908360038111156110c157fe5b0217905550818160010181905550508080600101915050611019565b50600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126757600060036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908360038111156111b557fe5b0217905550600060036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6002600190805461127992919061251f565b507f8564cd629b15f47dc310d45bcbfc9bcf5420b0d51bf0659a16c67f91d276325360016040518080602001828103825283818154815260200191508054801561131857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116112ce575b50509250505060405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6060600180549050600280549050111561144a57600280548060200260200160405190810160405280929190818152602001828054801561143e57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116113f4575b505050505090506114d4565b60018054806020026020016040519081016040528092919081815260200182805480156114cc57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611482575b505050505090505b90565b6000600260038111156114e657fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561154157fe5b14806115b1575060038081111561155457fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156115af57fe5b145b9050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1681565b6060600180548060200260200160405190810160405280929190818152602001828054801561167557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161162b575b5050505050905090565b600060038081111561168d57fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156116e857fe5b149050919050565b846116fa81610884565b61174f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126516022913960400191505060405180910390fd5b8461175981610884565b6117ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126516022913960400191505060405180910390fd5b84438110611824576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f426c6f636b206e756d626572206973206e6f742076616c69640000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f74207468652052656c617920636f6e747261637481525060200191505060405180910390fd5b858773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f729a19138e072a5a8d3a56d74ae0b5c84530f09aacd6e12b24c5b2fdc3f8a3d060405160405180910390a45050505050505050565b611954611351565b6119c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806126066024913960400191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611af3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806126956040913960400191505060405180910390fd5b611afc81612179565b50565b82611b0981610884565b611b5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126516022913960400191505060405180910390fd5b82611b6881610884565b611bbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126516022913960400191505060405180910390fd5b82438110611c33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f426c6f636b206e756d626572206973206e6f742076616c69640000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f74207468652052656c617920636f6e747261637481525060200191505060405180910390fd5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fbc459bd9db54016b1966d0fe812bbe0a82cd627ae3eacd01727dc63a432ca41b60405160405180910390a4505050505050565b611d61611351565b611dd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b611ddc81612200565b50565b600060026003811115611dee57fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff166003811115611e4957fe5b149050919050565b600160028054905011611eaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061262a6027913960400191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905060006001600280549050039050600060028281548110611f1257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060028481548110611f4d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506002805480919060019003611ff19190612571565b5060038060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083600381111561205057fe5b021790555083600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061209e612361565b50505050565b6002600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083600381111561210357fe5b021790555060028190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050612176612361565b50565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe8ec518081a7aa1fc5d586a5443a858ab130be8b8e39b545172c879a7e242c6b60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060146101000a81548160ff021916908315150217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a084718a600143034060026040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200180602001828103825283818154815260200191508054801561246c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612422575b50509350505050602060405180830381600087803b15801561248d57600080fd5b505af11580156124a1573d6000803e3d6000fd5b505050506040513d60208110156124b757600080fd5b810190808051906020019092919050505061251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806126d5602d913960400191505060405180910390fd5b565b8280548282559060005260206000209081019282156125605760005260206000209182015b8281111561255f578254825591600101919060010190612544565b5b50905061256d919061259d565b5090565b8154818355818111156125985781836000526020600020918201910161259791906125e0565b5b505050565b6125dd91905b808211156125d957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016125a3565b5090565b90565b61260291905b808211156125fe5760008160009055506001016125e6565b5090565b9056fe52656c617920636f6e747261637420616464726573732063616e6e6f74206265203078305468657265206d757374206265206174206c6561737420312076616c696461746f72206c65667441646472657373206973206e6f7420616e206163746976652076616c696461746f7256616c696461746f7220736574206973206e6f742066696e616c697a6564207965744e65772072656c617920636f6e747261637420616464726573732063616e6e6f74206265207468652073616d65206173207468652063757272656e74206f6e6552656c617920636f6e747261637420496e6974696174654368616e67652063616c6c6261636b206661696c6564a165627a7a72305820c6b083565ee91eecaf8e5a6f14e1677206b36466bdfe0248a47919657b68255b002952656c617920636f6e747261637420616464726573732063616e6e6f74206265203078305468657265206d757374206265206174206c6561737420312076616c696461746f7220696e697469616c6c79000000000000000000000000120470000000000000000000000000000000000500000000000000000000000012047000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000300000000000000000000000036f67dd84e7327c10c7ead6c429a47189798fbdc00000000000000000000000020df7a4e8408add37c6a5c4afc1b1509924619fe00000000000000000000000077901f14183b1669c80e8c6137ff6721c9a26b25" - }, - "0x1204700000000000000000000000000000000000": { - "constructor": "0x608060405273fffffffffffffffffffffffffffffffffffffffe600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006557600080fd5b506040516040806116c18339810180604052604081101561008557600080fd5b810190808051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361017482610193640100000000026401000000009004565b61018c816102f4640100000000026401000000009004565b5050610506565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610398576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f416464726573732063616e6e6f7420626520307830000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561043f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061167f6042913960600191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4fea88aaf04c303804bb211ecc32a00ac8e5f0656bb854cad8a4a2e438256b7460405160405180910390a3505050565b61116a806105156000396000f3fe608060405234801561001057600080fd5b50600436106100d1576000357c010000000000000000000000000000000000000000000000000000000090048063b7ab4db51161008e578063b7ab4db51461023b578063bd9656771461029a578063c476dd40146102de578063d3e848f114610381578063d69f13bb146103cb578063f2fde38b14610419576100d1565b8063715018a6146100d657806375286211146100e05780638da5cb5b146100ea5780638f32d59b14610134578063a084718a14610156578063ae3783d6146101f1575b600080fd5b6100de61045d565b005b6100e8610596565b005b6100f26106f9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61013c610722565b604051808215151515815260200191505060405180910390f35b6101d76004803603604081101561016c57600080fd5b81019080803590602001909291908035906020019064010000000081111561019357600080fd5b8201836020820111156101a557600080fd5b803590602001918460208302840111640100000000831117156101c757600080fd5b9091929391929390505050610779565b604051808215151515815260200191505060405180910390f35b6101f9610893565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102436108b9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561028657808201518184015260208101905061026b565b505050509050019250505060405180910390f35b6102dc600480360360208110156102b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109d5565b005b61037f600480360360608110156102f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b9091929391929390505050610a5b565b005b610389610ba6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610417600480360360408110156103e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bcc565b005b61045b6004803603602081101561042f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce1565b005b610465610722565b6104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53656e646572206973206e6f742073797374656d00000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663752862116040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156106df57600080fd5b505af11580156106f3573d6000803e3d6000fd5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061111d6022913960400191505060405180910390fd5b837f55252fa6eee4741b4e24a74a70e9c11fd2c2281df8d6ea13126ff845f7825c89848460405180806020018281038252848482818152602001925060200280828437600081840152601f19601f820116905080830192505050935050505060405180910390a2600190509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7ab4db56040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160006040518083038186803b15801561093f57600080fd5b505afa158015610953573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561097d57600080fd5b81019080805164010000000081111561099557600080fd5b828101905060208101848111156109ab57600080fd5b81518560208202830111640100000000821117156109c857600080fd5b5050929190505050905090565b6109dd610722565b610a4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b610a5881610d67565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd21442a33868686866040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610b8857600080fd5b505af1158015610b9c573d6000803e3d6000fd5b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d826b7f13384846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610cc557600080fd5b505af1158015610cd9573d6000803e3d6000fd5b505050505050565b610ce9610722565b610d5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b610d6481610f79565b50565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e0b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f416464726573732063616e6e6f7420626520307830000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806110db6042913960600191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4fea88aaf04c303804bb211ecc32a00ac8e5f0656bb854cad8a4a2e438256b7460405160405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fe4e65772072656c6179656420636f6e747261637420616464726573732063616e6e6f74206265207468652073616d65206173207468652063757272656e74206f6e6553656e646572206973206e6f74207468652052656c6179656420636f6e7472616374a165627a7a72305820df8e72037cf9237ba09d135b3962a00a0186ba17dcbbe421274543975b2c346100294e65772072656c6179656420636f6e747261637420616464726573732063616e6e6f74206265207468652073616d65206173207468652063757272656e74206f6e6500000000000000000000000012047000000000000000000000000000000000050000000000000000000000001204700000000000000000000000000000000001" - }, - "0x1204700000000000000000000000000000000002": { - "constructor": "0x608060405273fffffffffffffffffffffffffffffffffffffffe600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b5060405160408062001b22833981018060405260408110156200008857600080fd5b810190808051906020019092919080519060200190929190505050620000bc6200010c640100000000026401000000009004565b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a81905550505062000825565b60405180610f0001604052806704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704395680a6af46808152602001670438cfa9de4a0e808152602001670437eeee904c06808152602001670436b44ebcb52e8081526020016704351fca638586808152602001670433316184bd0e808152602001670430e914205bc680815260200167042e46e23661ae80815260200167042b4acbc6cec6808152602001670427f4d0d1a30e80815260200167042444f156de868081526020016704203b2d56812e80815260200167041bd784d08b0680815260200167041719f7c4fc0e808152602001670412028633d44680815260200167040c91301d13ae808152602001670406c5f580ba46808152602001670400a0d65ec80e8081526020016703fa21d2b73d068081526020016703f348ea8a192e8081526020016703ec161dd75c868081526020016703e4896c9f070e8081526020016703dca2d6e118c68081526020016703d4625c9d91ae8081526020016703cbc7fdd471c68081526020016703c2d3ba85b90e8081526020016703b98592b167868081526020016703afdd86577d2e8081526020016703a5db9577fa0680815260200167039b7fc012de0e808152602001670390ca06282946808152602001670385ba67b7dbae80815260200167037a50e4c1f54680815260200167036e8d7d46760e8081526020016703627031455e06808152602001670355f900bead2e80815260200167034927ebb2638680815260200167033bfcf220810e80815260200167032e78140905c680815260200167032099516bf1ae80815260200167031260aa4944c6808152602001670303ce1ea0ff0e8081526020016702f4e1ae7320868081526020016702e59b59bfa92e8081526020016702d5fb208699068081526020016702c60102c7f00e8081526020016702b5ad0083ae468081526020016702a4ff19b9d3ae808152602001670293f74e6a6046808152602001670282959e95540e808152602001670270da0a3aaf0680815260200167025ec4915a712e80815260200167024c5533f49a86808152602001670238da1d6b04400081526020016702260c5cdf4d240081526020016702138f83989f90008152602001670201639196fb840081526020016701ef8886da61000081526020016701ddfe6362d0040081526020016701ccc5273048900081526020016701bbdcd242caa40081526020016701ab45649a564000815260200167019afede36eb6400815260200167018b093f188a1000815260200167017b64873f324400815260200167016c10b6aae40000815260200167015d0dcd5b9f4400815260200167014e5bcb51641000815260200167013ffab08c3264008152602001670131ea7d0c0a400081526020016701242b30d0eba4008152602001670116bccbdad6900081526020016701099f4e29cb0400815260200166fcd2b7bdc90000815260200166f0570896d08400815260200166e42c40b4e19000815260200166d8526017fc2400815260200166ccc966c0204000815260200166c19154ad4de400815260200166b6aa29df851000815260200166ac13e656c5c400815260200166a1ce8a1310000081526020016697da151463c4008152602001668e36875ac1100081526020016684e3e0e627e4008152602001667be221b6984000815260200166733149cc1224008152602001666ad1592695900081526020016662c24fc62284008152602001665b042daab900008152602001665396f2d45904008152602001664c7a9f4302900081526020016645af32f6b5a4008152602001663f34adef724000815260200166390b102d386400815260200166333259b00810008152602001662daa8a77e144008152602001662873a284c40000815260200166238da1d6b044008152602001661ef8886da610008152602001661ab45649a5640081526020016616c10b6aae4000815260200166131ea7d0c0a4008152602001660fcd2b7bdc90008152602001660ccc966c0204008152602001660a1ce8a131000081526020016607be221b69840081526020016605b042daab900081526020016603f34adef7240081526020016602873a284c4000815260200166016c10b6aae400815260200165a1ce8a1310008152602001652873a284c40081525060009060786200078e929190620007ab565b506208052060018190555060008054905060015402600281905550565b828054828255906000526020600020908101928215620007ea579160200282015b82811115620007e9578251825591602001919060010190620007cc565b5b509050620007f99190620007fd565b5090565b6200082291905b808211156200081e57600081600090555060010162000804565b5090565b90565b6112ed80620008356000396000f3fe608060405234801561001057600080fd5b5060043610610132576000357c0100000000000000000000000000000000000000000000000000000000900480634476d66a116100bf57806394f7f62b1161008e57806394f7f62b14610451578063df6a503014610493578063e6e100db146104b1578063f91c289814610509578063fb1ac5251461067457610132565b80634476d66a14610363578063553a5c85146103a557806358ceb672146103c357806360d4b8be146103cd57610132565b80631a488047116101065780631a4880471461020357806330f6eb161461022157806333ea51a81461028357806337339a16146102c75780633d84b8c11461030b57610132565b8062f380f414610137578063078d8e7a146101815780630f411cdb146101a357806318129375146101c1575b600080fd5b61013f610692565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101896106b8565b604051808215151515815260200191505060405180910390f35b6101ab6106c8565b6040518082815260200191505060405180910390f35b6101ed600480360360208110156101d757600080fd5b81019080803590602001909291905050506106ce565b6040518082815260200191505060405180910390f35b61020b6106ef565b6040518082815260200191505060405180910390f35b61026d6004803603604081101561023757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106f5565b6040518082815260200191505060405180910390f35b6102c56004803603602081101561029957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061071a565b005b610309600480360360208110156102dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061079b565b005b61034d6004803603602081101561032157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108a2565b6040518082815260200191505060405180910390f35b61038f6004803603602081101561037957600080fd5b81019080803590602001909291905050506108ba565b6040518082815260200191505060405180910390f35b6103ad6108d2565b6040518082815260200191505060405180910390f35b6103cb6108d8565b005b61040f600480360360208110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061093c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61047d6004803603602081101561046757600080fd5b810190808035906020019092919050505061096f565b6040518082815260200191505060405180910390f35b61049b6109b3565b6040518082815260200191505060405180910390f35b6104f3600480360360208110156104c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b9565b6040518082815260200191505060405180910390f35b6105d56004803603604081101561051f57600080fd5b810190808035906020019064010000000081111561053c57600080fd5b82018360208201111561054e57600080fd5b8035906020019184602083028401116401000000008311171561057057600080fd5b90919293919293908035906020019064010000000081111561059157600080fd5b8201836020820111156105a357600080fd5b803590602001918460208302840111640100000000831117156105c557600080fd5b90919293919293905050506109d1565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561061c578082015181840152602081019050610601565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561065e578082015181840152602081019050610643565b5050505090500194505050505060405180910390f35b61067c610eca565b6040518082815260200191505060405180910390f35b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106c343610ed0565b905090565b60025481565b600081815481106106db57fe5b906000526020600020016000915090505481565b600a5481565b6008602052816000526040600020602052806000526040600020600091509150505481565b80600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461085e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f742074686520636f6d6d756e6974792066756e6481525060200191505060405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915090505481565b60076020528060005260406000206000915090505481565b60035481565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061097a82610ed0565b1561098857600090506109ae565b6000600154838161099557fe5b04815481106109a057fe5b906000526020600020015490505b919050565b60045481565b60056020528060005260406000206000915090505481565b606080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c6572206973206e6f74207468652073797374656d000000000000000081525060200191505060405180910390fd5b838390508686905014610af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061129d6025913960400191505060405180910390fd5b60018686905014610b6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f42656e65666163746f7273206c697374206c656e677468206973206e6f74203181525060200191505060405180910390fd5b600084846000818110610b7d57fe5b9050602002013561ffff1661ffff1614610be2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061127b6022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1686866000818110610c0757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610c4b5750610c4a43610ed0565b5b15610cc1576000604051908082528060200260200182016040528015610c805781602001602082028038833980820191505090505b506000604051908082528060200260200182016040528015610cb15781602001602082028038833980820191505090505b5081915080905091509150610ec1565b60606002604051908082528060200260200182016040528015610cf35781602001602082028038833980820191505090505b50905060608151604051908082528060200260200182016040528015610d285781602001602082028038833980820191505090505b509050610d5d88886000818110610d3b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16610edf565b82600081518110610d6a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610dad4361096f565b81600081518110610dba57fe5b602002602001018181525050610df1600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610edf565b82600181518110610dfe57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5481600181518110610e4857fe5b602002602001018181525050610e8682600081518110610e6457fe5b602002602001015182600081518110610e7957fe5b6020026020010151610f8c565b610eb882600181518110610e9657fe5b602002602001015182600181518110610eab57fe5b6020026020010151611134565b81819350935050505b94509492505050565b60015481565b60006002548210159050919050565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f825782915050610f87565b809150505b919050565b610fef81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000438152602001908152602001600020546111f290919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060004381526020019081526020016000208190555061109581600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f290919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110fe8160076000438152602001908152602001600020546111f290919063ffffffff16565b600760004381526020019081526020016000208190555061112a816003546111f290919063ffffffff16565b6003819055505050565b611149816004546111f290919063ffffffff16565b6004819055506111a181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f290919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111ee8282610f8c565b5050565b600080828401905083811015611270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f766572666c6f77206572726f7200000000000000000000000000000000000081525060200191505060405180910390fd5b809150509291505056fe42656e65666163746f72206973206e6f742074686520626c6f636b20617574686f7242656e65666163746f72732f7479706573206c697374206c656e6774682064696666657273a165627a7a723058209c17c14dc9f6fcdd3ddef3913263be4e76376e948facfc131a975ceda79ba0d6002900000000000000000000000012047000000000000000000000000000000000030000000000000000000000000000000000000000000000000856d3dfb6e26d00" - }, - "0x1204700000000000000000000000000000000004": { - "balance": "40789499640000000000000000", - "constructor": "0x608060405260006001556a21bd8334ca74c3834c00003073ffffffffffffffffffffffffffffffffffffffff16311462000085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018062001b5b6023913960400191505060405180910390fd5b6200009e6200010b640100000000026401000000009004565b6a21bd8334ca74c3834c00006001541462000105576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018062001b0a6028913960400191505060405180910390fd5b620017b4565b6200014a73120470000000000000000000000000000000000a6a084595161401484a000000635d408564620016da640100000000026401000000009004565b62000188735a3977e000000000000000000000000000000000691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b620001c673aae0debd2a4c519364e6098537145369913b26ec6901c761ff4c24e9210000635db8d244620016da640100000000026401000000009004565b620002047336874a6000000000000000000000000000000000691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b6200024273108dd64c9e0d603d56304e97656e011831ed07ff6901c761ff4c24e9210000635db8d244620016da640100000000026401000000009004565b6200028073294f3750000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b620002be732fb294a0000000000000000000000000000000006902d2cd1fdffd73150000635db8d244620016da640100000000026401000000009004565b620002fc73102fb040000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b6200033a732b250010000000000000000000000000000000006902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b620003787335c468d000000000000000000000000000000000696abafbb89b2adcd80000635db8d244620016da640100000000026401000000009004565b620003b673c8be7a00000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b620003f47353f3170000000000000000000000000000000000692004e50f922be25a0000635db8d244620016da640100000000026401000000009004565b6200043373dc918900000000000000000000000000000000006a0215a6ea9b07d650380000635db8d244620016da640100000000026401000000009004565b6200047173b476ee7d610dae7b23b671ebc7bd6112e97729696902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b620004af732908b900000000000000000000000000000000006969e10de76676d0800000635d408564620016da640100000000026401000000009004565b620004ed733b2ef740000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b6200052b731153818a2eb49f0a71b27313c32814fc02e4db50694220bb939da668600000635db8d244620016da640100000000026401000000009004565b6200056973330d6100000000000000000000000000000000006923466459b949a9950000635db8d244620016da640100000000026401000000009004565b620005a7733e5518c20876eab3a42969d032fa7c30599af912691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b620005e57357f33efad76d4b783cf42c9e6cb08f4425dfe96e6902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b6200062373a87e88f0bbc43468cb657294f2479c6f35179b80692004e50f922be25a0000635db8d244620016da640100000000026401000000009004565b62000661734cebef90000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b6200069f73511909cef97475819de66b645f13464285c227ce6934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b620006dd7322fc2310000000000000000000000000000000006902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b6200071b7347919fb8d4e7e360bef0d5a7a2411593dbcc0e776902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b6200075973949423db1bfee1ddec99c9d24a12a6ea27cb34896901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b620007977343ec5680000000000000000000000000000000006907f0e10af47c1c700000635db8d244620016da640100000000026401000000009004565b620007d57367cf1c40622f39fa067b614f13aad6da5dd95f326969e10de76676d0800000635d408564620016da640100000000026401000000009004565b620008137310b9390000000000000000000000000000000000692ab13175efe0a8630000635db8d244620016da640100000000026401000000009004565b620008517376b707604cbd862050b938739637b7bde1b7ad486901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b6200088f73568075f0000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b620008cd73d44fb8de580d34f44789408cc9335c9a9ce0ce4d691ad0235eb930a0540000635db8d244620016da640100000000026401000000009004565b6200090a727801b12345b6f10b69263cd6d4fc50b58c8d80696d688e69e3a9742b0000635db8d244620016da640100000000026401000000009004565b62000948735d66a150000000000000000000000000000000006969e10de76676d0800000635d408564620016da640100000000026401000000009004565b62000987731d258680000000000000000000000000000000006a020057f2c74d5a91080000635db8d244620016da640100000000026401000000009004565b620009c57330e311c00000000000000000000000000000000069355d7ddc4d956e6c0000635db8d244620016da640100000000026401000000009004565b62000a0373428ab4b019ee3a9b9863b2b4bf1885ce6dff9a736902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b62000a41738081f20000000000000000000000000000000000691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b62000a7f735305c8071b604da7fb45059e7ebfa1d674ddfc3569038780827d32a3ab0000635db8d244620016da640100000000026401000000009004565b62000abd7335007170000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b62000afc733484c850000000000000000000000000000000006a0422ca8b0a00a42500000063608a9f84620016da640100000000026401000000009004565b62000b3a73ffd9b871df6e93803c0877e98fc1722b39c00d786902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b62000b787396a5eb172efdf262ed6beaaf0e20c6af71831fc96934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62000bb6732dd2e140000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b62000bf473656e5569bef7781bf0db199d32027766053501ff69438ec266600555e00000635db8d244620016da640100000000026401000000009004565b62000c32731d53db7000000000000000000000000000000000691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b62000c7073b5b6d8885fbf28f843cc7886de242b811d6952056901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b62000cae734549ef8e287b94f1c0a8b88f55ed8707d74d843c6934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62000cec73dacd80d8e1d4f117515caa477ee7599cdfc766196902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b62000d2a731f603e000000000000000000000000000000000069d3c21bcecceda1000000635db8d244620016da640100000000026401000000009004565b62000d68735548f000000000000000000000000000000000006902ab1310b5b095920000635db8d244620016da640100000000026401000000009004565b62000da6735bb9ba00000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62000de4736dd10e41a7a84fe23ab35fefa2f46c9895f87a2d693c8c4bde2deef1680000635db8d244620016da640100000000026401000000009004565b62000e227316337db0000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b62000e6073b999004b49c6b907d4278067da5c85195dcd7fc769081e0dd1d85030b50000635db8d244620016da640100000000026401000000009004565b62000e9e733dbb2290000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62000edc73559da540000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62000f1a733a9d83766c03c465851a38daa364ef7deccd1ece6934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62000f5873b61c11b6e42d459efaee8995c44db08507e468e169477d5529f68a63000000635db8d244620016da640100000000026401000000009004565b62000f9673e803d7955a911106cb8fd79049a2374ff059000369038780827d32a3ab0000635db8d244620016da640100000000026401000000009004565b62000fd473509b057000000000000000000000000000000000691aaebeee26cab7360000635db8d244620016da640100000000026401000000009004565b620010127383980db85394d7c1610f37a90be744432368bad4692393a931b168245d0000635db8d244620016da640100000000026401000000009004565b6200105073db6cc57168c07b83a00f1f8871538446068824fc691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b6200108e735035fba0000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b620010cc73d96c8300000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b6200110b7331178cd0000000000000000000000000000000006a042b4dd5360faca070000063608a9f84620016da640100000000026401000000009004565b62001149732f531158e2305ed4fb4144a2f4085e3d96e1982e6934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62001188735d5da310000000000000000000000000000000006a017293b0a9e69fd9c00000635db8d244620016da640100000000026401000000009004565b620011c67318b9347000000000000000000000000000000000696abafbb89b2adcd80000635d408564620016da640100000000026401000000009004565b62001203722d4606b65c033769968bcdc63881b90b0853f5692648770b742bb90b0000635db8d244620016da640100000000026401000000009004565b62001241731faa8d10000000000000000000000000000000006969e10de76676d0800000635d408564620016da640100000000026401000000009004565b6200127f7333445720000000000000000000000000000000006902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b620012bd730d1d4e623d10f9fba5db95830f7d3839406c6af26901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b620012fa72c2f65230815d30eaa1a4d057bcf0b72fe3cc4e6902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b62001338739c3a5ec7bd63ecac1b92abe4b01b12ffd50bf3f26969e10de76676d0800000635d408564620016da640100000000026401000000009004565b620013767345635660000000000000000000000000000000006969e10de76676d0800000635d408564620016da640100000000026401000000009004565b620013b2739be61e41490f5227080fa1adbe3ec0a973d59732678ac7230489e80000635cc83884620016da640100000000026401000000009004565b620013f073572f91b0000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b6200142e7339350e4a75d1e50a5072950325328884c11c12326901c761ff4c24e9210000635db8d244620016da640100000000026401000000009004565b6200146c733c96a530000000000000000000000000000000006969e10de76676d0800000635d408564620016da640100000000026401000000009004565b620014aa730ad7ba4af33b485e6f2505c417554631a3e5643f6902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b620014e8735eea7250000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b62001526733ab790e0000000000000000000000000000000006902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b62001564734cf84620000000000000000000000000000000006902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b620015a2735425f6f0000000000000000000000000000000006969e10de76676d0800000635d408564620016da640100000000026401000000009004565b620015e0736d516767e4068fc331bdb331fba7578bdb07a68c69234b04ae4f23156b0000635db8d244620016da640100000000026401000000009004565b6200161e73106a8ff0000000000000000000000000000000006902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b6200165c73102fb9400000000000000000000000000000000069038780827d32a3ab0000635db8d244620016da640100000000026401000000009004565b6200169a737ed62cf71d519d3bf293ef90829508f92f4ccccb6902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b620016d873199a8c5000000000000000000000000000000000691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015414801562001735575060008160010154145b6200178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018062001b326029913960400191505060405180910390fd5b8260016000828254019250508190555082816000018190555081816001018190555050505050565b61034680620017c46000396000f3fe608060405234801561001057600080fd5b5060043610610069576000357c01000000000000000000000000000000000000000000000000000000009004806318a5bbdc1461006e578063192e7a7b146100cd57806330f0dbe0146101115780639976e12f1461012f575b600080fd5b6100b06004803603602081101561008457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061014d565b604051808381526020018281526020019250505060405180910390f35b61010f600480360360208110156100e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610171565b005b610119610305565b6040518082815260200191505060405180910390f35b610137610314565b6040518082815260200191505060405180910390f35b60006020528060005260406000206000915090508060000154908060010154905082565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001541161022d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f417661696c61626c6520616d6f756e742069732030000000000000000000000081525060200191505060405180910390fd5b806001015442116102a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f486f6c64696e6720706572696f64206973206e6f74206f76657200000000000081525060200191505060405180910390fd5b600081600001549050600082600001819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156102ff573d6000803e3d6000fd5b50505050565b6a21bd8334ca74c3834c000081565b6001548156fea165627a7a7230582078bf501dd1d053c49557b82491b940e47ebf94b95608375e22da53fcc7120a1a002954617267657420616d6f756e742073686f756c6420657175616c2061637475616c20616d6f756e74486f6c64696e6720666f72207468697320616464726573732077617320616c7265616479207365742e42616c616e63652073686f756c6420657175616c2074617267657420616d6f756e742e" - }, - "0x1204700000000000000000000000000000000006": { - "constructor": "0x6080604052670de0b6b3a76400006003553480156200001d57600080fd5b5060405160208062003e58833981018060405260208110156200003f57600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a362000126816200012d640100000000026401000000009004565b506200028f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613bb9806200029f6000396000f3fe6080604052600436106101d4576000357c0100000000000000000000000000000000000000000000000000000000900480639269881411610109578063df57b742116100a7578063ef5454d611610081578063ef5454d614610d59578063f25eb5c114610e17578063f2fde38b14610e2e578063f6d339e414610e7f576101d4565b8063df57b74214610b62578063e30bd74014610bdd578063eadf976014610ca7576101d4565b8063ac72c120116100e3578063ac72c120146109c5578063c3a3582514610a18578063ddca3f4314610abc578063deb931a214610ae7576101d4565b806392698814146108855780639890220b146108d8578063ac4e73f914610907576101d4565b806369fe0e2d1161017657806379ce9fac1161015057806379ce9fac146106e85780638da5cb5b1461075b5780638f32d59b146107b257806390b97fc1146107e1576101d4565b806369fe0e2d146105b45780636a1acc3f14610607578063715018a6146106d1576101d4565b80633f3935d1116101b25780633f3935d1146103ad578063432ced041461044b5780634f39ca59146104915780636795dbcd146104e4576101d4565b806306b2ff47146101d957806319362a2814610242578063267b6922146102f4575b600080fd5b3480156101e557600080fd5b50610228600480360360208110156101fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f47565b604051808215151515815260200191505060405180910390f35b34801561024e57600080fd5b506102da6004803603606081101561026557600080fd5b81019080803590602001909291908035906020019064010000000081111561028c57600080fd5b82018360208201111561029e57600080fd5b803590602001918460018302840111640100000000831117156102c057600080fd5b909192939192939080359060200190929190505050610fa7565b604051808215151515815260200191505060405180910390f35b34801561030057600080fd5b5061032d6004803603602081101561031757600080fd5b81019080803590602001909291905050506111ff565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182151515158152602001935050505060405180910390f35b3480156103b957600080fd5b50610431600480360360208110156103d057600080fd5b81019080803590602001906401000000008111156103ed57600080fd5b8201836020820111156103ff57600080fd5b8035906020019184600183028401116401000000008311171561042157600080fd5b9091929391929390505050611276565b604051808215151515815260200191505060405180910390f35b6104776004803603602081101561046157600080fd5b8101908080359060200190929190505050611553565b604051808215151515815260200191505060405180910390f35b34801561049d57600080fd5b506104ca600480360360208110156104b457600080fd5b810190808035906020019092919050505061185c565b604051808215151515815260200191505060405180910390f35b3480156104f057600080fd5b506105726004803603604081101561050757600080fd5b81019080803590602001909291908035906020019064010000000081111561052e57600080fd5b82018360208201111561054057600080fd5b8035906020019184600183028401116401000000008311171561056257600080fd5b9091929391929390505050611acc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105c057600080fd5b506105ed600480360360208110156105d757600080fd5b8101908080359060200190929190505050611bb0565b604051808215151515815260200191505060405180910390f35b34801561061357600080fd5b506106566004803603602081101561062a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c73565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561069657808201518184015260208101905061067b565b50505050905090810190601f1680156106c35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106dd57600080fd5b506106e6611d23565b005b3480156106f457600080fd5b506107416004803603604081101561070b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e5c565b604051808215151515815260200191505060405180910390f35b34801561076757600080fd5b5061077061208a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107be57600080fd5b506107c76120b3565b604051808215151515815260200191505060405180910390f35b3480156107ed57600080fd5b5061086f6004803603604081101561080457600080fd5b81019080803590602001909291908035906020019064010000000081111561082b57600080fd5b82018360208201111561083d57600080fd5b8035906020019184600183028401116401000000008311171561085f57600080fd5b909192939192939050505061210a565b6040518082815260200191505060405180910390f35b34801561089157600080fd5b506108be600480360360208110156108a857600080fd5b81019080803590602001909291905050506121ea565b604051808215151515815260200191505060405180910390f35b3480156108e457600080fd5b506108ed6122f3565b604051808215151515815260200191505060405180910390f35b34801561091357600080fd5b506109ab6004803603604081101561092a57600080fd5b810190808035906020019064010000000081111561094757600080fd5b82018360208201111561095957600080fd5b8035906020019184600183028401116401000000008311171561097b57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612422565b604051808215151515815260200191505060405180910390f35b3480156109d157600080fd5b506109fe600480360360208110156109e857600080fd5b8101908080359060200190929190505050612982565b604051808215151515815260200191505060405180910390f35b348015610a2457600080fd5b50610aa660048036036040811015610a3b57600080fd5b810190808035906020019092919080359060200190640100000000811115610a6257600080fd5b820183602082011115610a7457600080fd5b80359060200191846001830284011164010000000083111715610a9657600080fd5b9091929391929390505050612a8b565b6040518082815260200191505060405180910390f35b348015610ac857600080fd5b50610ad1612b6f565b6040518082815260200191505060405180910390f35b348015610af357600080fd5b50610b2060048036036020811015610b0a57600080fd5b8101908080359060200190929190505050612b75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b6e57600080fd5b50610b9b60048036036020811015610b8557600080fd5b8101908080359060200190929190505050612c4e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610be957600080fd5b50610c2c60048036036020811015610c0057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d27565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c6c578082015181840152602081019050610c51565b50505050905090810190601f168015610c995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610cb357600080fd5b50610d3f60048036036060811015610cca57600080fd5b810190808035906020019092919080359060200190640100000000811115610cf157600080fd5b820183602082011115610d0357600080fd5b80359060200191846001830284011164010000000083111715610d2557600080fd5b909192939192939080359060200190929190505050612e08565b604051808215151515815260200191505060405180910390f35b348015610d6557600080fd5b50610dfd60048036036040811015610d7c57600080fd5b8101908080359060200190640100000000811115610d9957600080fd5b820183602082011115610dab57600080fd5b80359060200191846001830284011164010000000083111715610dcd57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613063565b604051808215151515815260200191505060405180910390f35b348015610e2357600080fd5b50610e2c613297565b005b348015610e3a57600080fd5b50610e7d60048036036020811015610e5157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613648565b005b348015610e8b57600080fd5b50610f2d60048036036060811015610ea257600080fd5b810190808035906020019092919080359060200190640100000000811115610ec957600080fd5b820183602082011115610edb57600080fd5b80359060200191846001830284011164010000000083111715610efd57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136ce565b604051808215151515815260200191505060405180910390f35b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080546001816001161561010002031660029004905014159050919050565b6000846001600082815260200190815260200160002060010160149054906101000a900460ff1615611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611119576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b83600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a2600192505050949350505050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900460ff16905083565b600082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600160008280519060200120815260200190815260200160002060010160149054906101000a900460ff161561135b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050503373ffffffffffffffffffffffffffffffffffffffff16600160008380519060200120815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4572726f723a204f6e6c79207768656e2070726f706f7365640000000000000081525060200191505060405180910390fd5b8484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091906114cc929190613aa0565b503373ffffffffffffffffffffffffffffffffffffffff167f098ae8581bb8bd9af1beaf7f2e9f51f31a8e5a8bfada4e303a645d71d9c91920868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a260019250505092915050565b6000816001600082815260200190815260200160002060010160149054906101000a900460ff16156115ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204f6e6c79207768656e20756e7265736572766564000000000081525060200191505060405180910390fd5b60035434101561173e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4572726f723a206f6e6c79207768656e2066656520706169640000000000000081525060200191505060405180910390fd5b6117466120b3565b6117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b336001600086815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16847f4963513eca575aba66fdcd25f267aae85958fe6fb97e75fa25d783f1a091a22160405160405180910390a3600192505050919050565b6000816001600082815260200190815260200160002060010160149054906101000a900460ff16156118f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b823373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b600260006001600087815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611a4f9190613b20565b600180600086815260200190815260200160002060010160146101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16847fef1961b4d2909dc23643b309bfe5c3e5646842d98c3a58517037ef3871185af360405160405180910390a3600192505050919050565b6000836001600082815260200190815260200160002060010160149054906101000a900460ff1615611b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b600160008681526020019081526020016000206002018484604051808383808284378083019250505092505050908152602001604051809103902054600190049150509392505050565b6000611bba6120b3565b611c2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b816003819055507f6bbc57480a46553fa4d156ce702beef5f3ad66303b0ed1a5d4cb44966c6584c3826040518082815260200191505060405180910390a160019050919050565b60026020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d1b5780601f10611cf057610100808354040283529160200191611d1b565b820191906000526020600020905b815481529060010190602001808311611cfe57829003601f168201915b505050505081565b611d2b6120b3565b611d9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000826001600082815260200190815260200160002060010160149054906101000a900460ff1615611ef6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b833373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b836001600087815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16867f7b97c62130aa09acbbcbf7482630e756592496f1759eaf702f469cf64dfb779460405160405180910390a460019250505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000836001600082815260200190815260200160002060010160149054906101000a900460ff16156121a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b6001600086815260200190815260200160002060020184846040518083838082843780830192505050925050509081526020016040518091039020549150509392505050565b6000816001600082815260200190815260200160002060010160149054906101000a900460ff1615612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415915050919050565b60006122fd6120b3565b61236f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b7fdef931299fe61d176f949118058530c1f3f539dcb6950b4e372c9b835c33ca073073ffffffffffffffffffffffffffffffffffffffff16316040518082815260200191505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561241a573d6000803e3d6000fd5b506001905090565b600083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600160008280519060200120815260200190815260200160002060010160149054906101000a900460ff1615612507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b848460405180838380828437808301925050509250505060405180910390203373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b6000868660405180838380828437808301925050509250505060405180910390209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561276e575080600260006001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051808280546001816001161561010002031660029004801561275f5780601f1061273d57610100808354040283529182019161275f565b820191906000526020600020905b81548152906001019060200180831161274b575b50509150506040518091039020145b156128a557600260006001600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006127f49190613b20565b6001600082815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd888860405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a25b846001600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f728435a0031f6a04538fcdd24922a7e06bc7bc945db03e83d22122d1bc5f28df888860405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a2600193505050509392505050565b6000816001600082815260200190815260200160002060010160149054906101000a900460ff1615612a1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000836001600082815260200190815260200160002060010160149054906101000a900460ff1615612b25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b600160008681526020019081526020016000206002018484604051808383808284378083019250505092505050908152602001604051809103902054600190049150509392505050565b60035481565b6000816001600082815260200190815260200160002060010160149054906101000a900460ff1615612c0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000816001600082815260200190815260200160002060010160149054906101000a900460ff1615612ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6060600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612dfc5780601f10612dd157610100808354040283529160200191612dfc565b820191906000526020600020905b815481529060010190602001808311612ddf57829003601f168201915b50505050509050919050565b6000846001600082815260200190815260200160002060010160149054906101000a900460ff1615612ea2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b83600102600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a2600192505050949350505050565b600083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600160008280519060200120815260200190815260200160002060010160149054906101000a900460ff1615613148576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b6131506120b3565b6131c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b8484600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209190613210929190613aa0565b508273ffffffffffffffffffffffffffffffffffffffff167f098ae8581bb8bd9af1beaf7f2e9f51f31a8e5a8bfada4e303a645d71d9c91920868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a260019150509392505050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561336a5780601f1061333f5761010080835404028352916020019161336a565b820191906000526020600020905b81548152906001019060200180831161334d57829003601f168201915b5050505050600160008280519060200120815260200190815260200160002060010160149054906101000a900460ff161561340d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561350d5780601f106134e25761010080835404028352916020019161350d565b820191906000526020600020905b8154815290600101906020018083116134f057829003601f168201915b50509250505060405180910390a260016000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180828054600181600116156101000203166002900480156135b95780601f106135975761010080835404028352918201916135b9565b820191906000526020600020905b8154815290600101906020018083116135a5575b50509150506040518091039020815260200190815260200160002060010160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006136459190613b20565b50565b6136506120b3565b6136c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b6136cb8161393f565b50565b6000846001600082815260200190815260200160002060010160149054906101000a900460ff1615613768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613840576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16600102600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a2600192505050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156139e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ae157803560ff1916838001178555613b0f565b82800160010185558215613b0f579182015b82811115613b0e578235825591602001919060010190613af3565b5b509050613b1c9190613b68565b5090565b50805460018160011615610100020316600290046000825580601f10613b465750613b65565b601f016020900490600052602060002090810190613b649190613b68565b5b50565b613b8a91905b80821115613b86576000816000905550600101613b6e565b5090565b9056fea165627a7a723058201b0da92162b975c882f9c56423cbea6ec9afb46d8dccc92abe125e91c84d52de00290000000000000000000000001204700000000000000000000000000000000005" - }, - "0x1204700000000000000000000000000000000007": { - "constructor": "0x608060405234801561001057600080fd5b50604051604080610a5f833981018060405261002f919081019061028d565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101448161014b640100000000026401000000009004565b505061036c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156101bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101b290610309565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610285825161033a565b905092915050565b600080604083850312156102a057600080fd5b60006102ae85828601610279565b92505060206102bf85828601610279565b9150509250929050565b60006102d6601f83610329565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b60006020820190508181036000830152610322816102c9565b9050919050565b600082825260208201905092915050565b60006103458261034c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6106e48061037b6000396000f3fe608060405234801561001057600080fd5b506004361061007f576000357c0100000000000000000000000000000000000000000000000000000000900480636ddc4a0714610084578063715018a6146100a25780638da5cb5b146100ac5780638f32d59b146100ca578063f2fde38b146100e8578063fe64d6ff14610104575b600080fd5b61008c610120565b60405161009991906105b3565b60405180910390f35b6100aa610146565b005b6100b461024c565b6040516100c191906105b3565b60405180910390f35b6100d2610275565b6040516100df91906105ce565b60405180910390f35b61010260048036036100fd91908101906104ec565b6102cc565b005b61011e600480360361011991908101906104ec565b61031f565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61014e610275565b61018d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018490610609565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6102d4610275565b610313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030a90610609565b60405180910390fd5b61031c816103aa565b50565b610327610275565b610366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035d90610609565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561041a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610411906105e9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006104e48235610678565b905092915050565b6000602082840312156104fe57600080fd5b600061050c848285016104d8565b91505092915050565b61051e8161063a565b82525050565b61052d8161064c565b82525050565b6000610540601f83610629565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b6000610580601383610629565b91507f53656e646572206973206e6f74206f776e6572000000000000000000000000006000830152602082019050919050565b60006020820190506105c86000830184610515565b92915050565b60006020820190506105e36000830184610524565b92915050565b6000602082019050818103600083015261060281610533565b9050919050565b6000602082019050818103600083015261062281610573565b9050919050565b600082825260208201905092915050565b600061064582610658565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006106838261068a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff8216905091905056fea265627a7a723058207424d262effee3c4b2cfbe03927ef8931223cda85f89bf647b88b2f7e64cc5516c6578706572696d656e74616cf5003700000000000000000000000012047000000000000000000000000000000000090000000000000000000000001204700000000000000000000000000000000005" - }, - "0x1204700000000000000000000000000000000008": { - "constructor": "0x60806040523480156200001157600080fd5b5060405160408062002b838339810180604052620000339190810190620002af565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200014a8162000152640100000000026401000000009004565b5050620003ad565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001bc9062000332565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600062000291825162000365565b905092915050565b6000620002a7825162000379565b905092915050565b60008060408385031215620002c357600080fd5b6000620002d38582860162000299565b9250506020620002e68582860162000283565b9150509250929050565b6000620002ff601f8362000354565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b600060208201905081810360008301526200034d81620002f0565b9050919050565b600082825260208201905092915050565b600062000372826200038d565b9050919050565b6000620003868262000365565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6127c680620003bd6000396000f3fe608060405234801561001057600080fd5b506004361061011d576000357c010000000000000000000000000000000000000000000000000000000090048063954029c9116100b4578063eab7ad9211610083578063eab7ad92146102e4578063ee7ee0fd14610300578063f2fde38b14610330578063fbd74f841461034c5761011d565b8063954029c91461024c578063a999809f14610268578063b71da0d114610298578063da5393d5146102c85761011d565b806370a05b18116100f057806370a05b18146101d6578063715018a6146102065780638da5cb5b146102105780638f32d59b1461022e5761011d565b80631bab58f5146101225780632c5653e21461015257806332d91c0e146101705780636a564261146101a0575b600080fd5b61013c60048036036101379190810190611f97565b61037c565b604051610149919061260c565b60405180910390f35b61015a6107b5565b604051610167919061254f565b60405180910390f35b61018a60048036036101859190810190611f97565b6107db565b604051610197919061256a565b60405180910390f35b6101ba60048036036101b59190810190611f97565b6109e8565b6040516101cd97969594939291906124c4565b60405180910390f35b6101f060048036036101eb9190810190611f97565b610c97565b6040516101fd91906124a2565b60405180910390f35b61020e610ea4565b005b610218610faa565b604051610225919061246c565b60405180910390f35b610236610fd3565b6040516102439190612487565b60405180910390f35b61026660048036036102619190810190611f97565b61102a565b005b610282600480360361027d9190810190611f97565b61119d565b60405161028f919061256a565b60405180910390f35b6102b260048036036102ad9190810190611f97565b6113aa565b6040516102bf9190612487565b60405180910390f35b6102e260048036036102dd9190810190611f97565b61143a565b005b6102fe60048036036102f99190810190611fe9565b611535565b005b61031a60048036036103159190810190611f97565b611853565b6040516103279190612487565b60405180910390f35b61034a60048036036103459190810190611f97565b6119d5565b005b61036660048036036103619190810190611f97565b611a28565b60405161037391906124a2565b60405180910390f35b610384611d63565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561040857600080fd5b505afa15801561041c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104409190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a49061258c565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e0016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105905780601f1061056557610100808354040283529160200191610590565b820191906000526020600020905b81548152906001019060200180831161057357829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106d45780601f106106a9576101008083540402835291602001916106d4565b820191906000526020600020905b8154815290600101906020018083116106b757829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107765780601f1061074b57610100808354040283529160200191610776565b820191906000526020600020905b81548152906001019060200180831161075957829003601f168201915b505050505081526020016004820160009054906101000a900460ff16151515158152602001600582015481526020016006820154815250509050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561086157600080fd5b505afa158015610875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108999190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd9061258c565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109dc5780601f106109b1576101008083540402835291602001916109dc565b820191906000526020600020905b8154815290600101906020018083116109bf57829003601f168201915b50505050509050919050565b6001602052806000526040600020600091509050806000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a945780601f10610a6957610100808354040283529160200191610a94565b820191906000526020600020905b815481529060010190602001808311610a7757829003601f168201915b505050505090806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b325780601f10610b0757610100808354040283529160200191610b32565b820191906000526020600020905b815481529060010190602001808311610b1557829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bd05780601f10610ba557610100808354040283529160200191610bd0565b820191906000526020600020905b815481529060010190602001808311610bb357829003601f168201915b505050505090806003018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6e5780601f10610c4357610100808354040283529160200191610c6e565b820191906000526020600020905b815481529060010190602001808311610c5157829003601f168201915b5050505050908060040160009054906101000a900460ff16908060050154908060060154905087565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015610d1d57600080fd5b505afa158015610d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d559190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db99061258c565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e985780601f10610e6d57610100808354040283529160200191610e98565b820191906000526020600020905b815481529060010190602001808311610e7b57829003601f168201915b50505050509050919050565b610eac610fd3565b610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee2906125ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156110ae57600080fd5b505afa1580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110e69190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a9061258c565b60405180910390fd5b43600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555050565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561122357600080fd5b505afa158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061125b9190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf9061258c565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561139e5780601f106113735761010080835404028352916020019161139e565b820191906000526020600020905b81548152906001019060200180831161138157829003601f168201915b50505050509050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154109050919050565b611442610fd3565b611481576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611478906125ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e8906125ac565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156115b957600080fd5b505afa1580156115cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115f19190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461165e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116559061258c565b60405180910390fd5b8888600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000191906116af929190611da2565b508686600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019190611701929190611e22565b508484600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002019190611753929190611da2565b508282600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030191906117a5929190611e22565b5080600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006101000a81548160ff02191690831515021790555043600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555050505050505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156118d957600080fd5b505afa1580156118ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119119190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119759061258c565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff169050919050565b6119dd610fd3565b611a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a13906125ec565b60405180910390fd5b611a2581611c35565b50565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611aae57600080fd5b505afa158015611ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ae69190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a9061258c565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c295780601f10611bfe57610100808354040283529160200191611c29565b820191906000526020600020905b815481529060010190602001808311611c0c57829003601f168201915b50505050509050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9c906125cc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060e001604052806060815260200160608152602001606081526020016060815260200160001515815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611de357803560ff1916838001178555611e11565b82800160010185558215611e11579182015b82811115611e10578235825591602001919060010190611df5565b5b509050611e1e9190611ea2565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e6357803560ff1916838001178555611e91565b82800160010185558215611e91579182015b82811115611e90578235825591602001919060010190611e75565b5b509050611e9e9190611ea2565b5090565b611ec491905b80821115611ec0576000816000905550600101611ea8565b5090565b90565b6000611ed382356126e6565b905092915050565b6000611ee782516126e6565b905092915050565b6000611efb82356126f8565b905092915050565b60008083601f840112611f1557600080fd5b8235905067ffffffffffffffff811115611f2e57600080fd5b602083019150836001820283011115611f4657600080fd5b9250929050565b60008083601f840112611f5f57600080fd5b8235905067ffffffffffffffff811115611f7857600080fd5b602083019150836001820283011115611f9057600080fd5b9250929050565b600060208284031215611fa957600080fd5b6000611fb784828501611ec7565b91505092915050565b600060208284031215611fd257600080fd5b6000611fe084828501611edb565b91505092915050565b60008060008060008060008060008060c08b8d03121561200857600080fd5b60006120168d828e01611ec7565b9a505060208b013567ffffffffffffffff81111561203357600080fd5b61203f8d828e01611f03565b995099505060408b013567ffffffffffffffff81111561205e57600080fd5b61206a8d828e01611f4d565b975097505060608b013567ffffffffffffffff81111561208957600080fd5b6120958d828e01611f03565b955095505060808b013567ffffffffffffffff8111156120b457600080fd5b6120c08d828e01611f4d565b935093505060a06120d38d828e01611eef565b9150509295989b9194979a5092959850565b6120ee8161269e565b82525050565b6120fd816126b0565b82525050565b61210c816126b0565b82525050565b600061211d82612639565b612127818561266b565b9350612137818560208601612748565b6121408161277b565b840191505092915050565b60006121568261262e565b612160818561265a565b9350612170818560208601612748565b6121798161277b565b840191505092915050565b600061218f8261262e565b612199818561266b565b93506121a9818560208601612748565b6121b28161277b565b840191505092915050565b6121c681612724565b82525050565b60006121d78261264f565b6121e1818561268d565b93506121f1818560208601612748565b6121fa8161277b565b840191505092915050565b600061221082612644565b61221a818561267c565b935061222a818560208601612748565b6122338161277b565b840191505092915050565b600061224982612644565b612253818561268d565b9350612263818560208601612748565b61226c8161277b565b840191505092915050565b600061228460138361268d565b91507f4572726f723a206f6e6c794c6f676963204462000000000000000000000000006000830152602082019050919050565b60006122c460298361268d565b91507f4572726f723a206e65774c6f6f6b5570206973206e6f7420616c6c6f7765642060008301527f746f2062652030783000000000000000000000000000000000000000000000006020830152604082019050919050565b600061232a601f8361268d565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b600061236a60138361268d565b91507f53656e646572206973206e6f74206f776e6572000000000000000000000000006000830152602082019050919050565b600060e08301600083015184820360008601526123ba828261214b565b915050602083015184820360208601526123d48282612205565b915050604083015184820360408601526123ee828261214b565b915050606083015184820360608601526124088282612205565b915050608083015161241d60808601826120f4565b5060a083015161243060a086018261244e565b5060c083015161244360c086018261244e565b508091505092915050565b612457816126dc565b82525050565b612466816126dc565b82525050565b600060208201905061248160008301846120e5565b92915050565b600060208201905061249c6000830184612103565b92915050565b600060208201905081810360008301526124bc8184612112565b905092915050565b600060e08201905081810360008301526124de818a612184565b905081810360208301526124f2818961223e565b905081810360408301526125068188612184565b9050818103606083015261251a818761223e565b90506125296080830186612103565b61253660a083018561245d565b61254360c083018461245d565b98975050505050505050565b600060208201905061256460008301846121bd565b92915050565b6000602082019050818103600083015261258481846121cc565b905092915050565b600060208201905081810360008301526125a581612277565b9050919050565b600060208201905081810360008301526125c5816122b7565b9050919050565b600060208201905081810360008301526125e58161231d565b9050919050565b600060208201905081810360008301526126058161235d565b9050919050565b60006020820190508181036000830152612626818461239d565b905092915050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006126a9826126bc565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006126f182612704565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061272f82612736565b9050919050565b6000612741826126bc565b9050919050565b60005b8381101561276657808201518184015260208101905061274b565b83811115612775576000848401525b50505050565b6000601f19601f830116905091905056fea265627a7a723058207e60ec05ac38073f6d98c9cff2cce094d00db0238d6d4b0c183253539a43fe2b6c6578706572696d656e74616cf5003700000000000000000000000012047000000000000000000000000000000000070000000000000000000000001204700000000000000000000000000000000005" - }, - "0x1204700000000000000000000000000000000009": { - "constructor": "0x60806040523480156200001157600080fd5b50604051604080620021cc8339810180604052620000339190810190620002af565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200014a8162000152640100000000026401000000009004565b5050620003ad565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001bc9062000332565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600062000291825162000365565b905092915050565b6000620002a7825162000379565b905092915050565b60008060408385031215620002c357600080fd5b6000620002d38582860162000299565b9250506020620002e68582860162000283565b9150509250929050565b6000620002ff601f8362000354565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b600060208201905081810360008301526200034d81620002f0565b9050919050565b600082825260208201905092915050565b600062000372826200038d565b9050919050565b6000620003868262000365565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b611e0f80620003bd6000396000f3fe608060405234801561001057600080fd5b50600436106100b0576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b116100835780638da5cb5b146101155780638f32d59b14610133578063b71da0d114610151578063ec26261114610181578063f2fde38b1461019f576100b0565b806312127ed7146100b55780633f67c333146100d1578063715018a6146100db57806389c3ce1e146100e5575b600080fd5b6100cf60048036036100ca9190810190611450565b6101bb565b005b6100d96109dd565b005b6100e3610b98565b005b6100ff60048036036100fa9190810190611427565b610c9e565b60405161010c9190611b14565b60405180910390f35b61011d610d85565b60405161012a91906119ab565b60405180910390f35b61013b610dae565b6040516101489190611a5e565b60405180910390f35b61016b60048036036101669190810190611427565b610e05565b6040516101789190611a5e565b60405180910390f35b610189610ed5565b6040516101969190611a79565b60405180910390f35b6101b960048036036101b49190810190611427565b610efb565b005b6101c3610dae565b610202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f990611ab4565b60405180910390fd5b6002856040516102129190611994565b602060405180830381855afa15801561022f573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506102529190810190611562565b6002600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbd74f84896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016102cb91906119ab565b60006040518083038186803b1580156102e357600080fd5b505afa1580156102f7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610320919081019061158b565b60405161032d9190611994565b602060405180830381855afa15801561034a573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525061036d9190810190611562565b1480156104e257506002846040516103859190611994565b602060405180830381855afa1580156103a2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506103c59190810190611562565b6002600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a999809f896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161043e91906119ab565b60006040518083038186803b15801561045657600080fd5b505afa15801561046a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061049391908101906115cc565b6040516104a09190611994565b602060405180830381855afa1580156104bd573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506104e09190810190611562565b145b801561065657506002836040516104f99190611994565b602060405180830381855afa158015610516573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506105399190810190611562565b6002600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a05b18896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105b291906119ab565b60006040518083038186803b1580156105ca57600080fd5b505afa1580156105de573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610607919081019061158b565b6040516106149190611994565b602060405180830381855afa158015610631573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506106549190810190611562565b145b80156107ca575060028260405161066d9190611994565b602060405180830381855afa15801561068a573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506106ad9190810190611562565b6002600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332d91c0e896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161072691906119ab565b60006040518083038186803b15801561073e57600080fd5b505afa158015610752573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061077b91908101906115cc565b6040516107889190611994565b602060405180830381855afa1580156107a5573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506107c89190810190611562565b145b801561089f5750801515600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee7ee0fd886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161084b91906119ab565b60206040518083038186803b15801561086357600080fd5b505afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061089b9190810190611539565b1515145b156108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d690611ad4565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eab7ad928787878787876040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610960969594939291906119e1565b600060405180830381600087803b15801561097a57600080fd5b505af115801561098e573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fc9e49a024d50440c73d2d12d0ae05064094dca76b46dc95e99ea6848eb8f27e960405160405180910390a2505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbd74f84336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610a5691906119c6565b60006040518083038186803b158015610a6e57600080fd5b505afa158015610a82573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610aab919081019061158b565b511415610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490611af4565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663954029c9336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610b6491906119c6565b600060405180830381600087803b158015610b7e57600080fd5b505af1158015610b92573d6000803e3d6000fd5b50505050565b610ba0610dae565b610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd690611ab4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ca661107c565b610cae61107c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631bab58f5846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610d2591906119ab565b60006040518083038186803b158015610d3d57600080fd5b505afa158015610d51573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610d7a919081019061160d565b905080915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b71da0d1836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610e7e91906119ab565b60206040518083038186803b158015610e9657600080fd5b505afa158015610eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ece9190810190611539565b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f03610dae565b610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3990611ab4565b60405180910390fd5b610f4b81610f4e565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb590611a94565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060e001604052806060815260200160608152602001606081526020016060815260200160001515815260200160008152602001600081525090565b60006110c78235611cd6565b905092915050565b60006110db8235611ce8565b905092915050565b60006110ef8251611ce8565b905092915050565b60006111038251611cf4565b905092915050565b600082601f83011261111c57600080fd5b815161112f61112a82611b63565b611b36565b9150808252602083016020830185838301111561114b57600080fd5b611156838284611d91565b50505092915050565b600082601f83011261117057600080fd5b813561118361117e82611b8f565b611b36565b9150808252602083016020830185838301111561119f57600080fd5b6111aa838284611d82565b50505092915050565b600082601f8301126111c457600080fd5b81516111d76111d282611b8f565b611b36565b915080825260208301602083018583830111156111f357600080fd5b6111fe838284611d91565b50505092915050565b600082601f83011261121857600080fd5b815161122b61122682611bbb565b611b36565b9150808252602083016020830185838301111561124757600080fd5b611252838284611d91565b50505092915050565b600082601f83011261126c57600080fd5b813561127f61127a82611be7565b611b36565b9150808252602083016020830185838301111561129b57600080fd5b6112a6838284611d82565b50505092915050565b600082601f8301126112c057600080fd5b81516112d36112ce82611be7565b611b36565b915080825260208301602083018583830111156112ef57600080fd5b6112fa838284611d91565b50505092915050565b600060e0828403121561131557600080fd5b61131f60e0611b36565b9050600082015167ffffffffffffffff81111561133b57600080fd5b6113478482850161110b565b600083015250602082015167ffffffffffffffff81111561136757600080fd5b61137384828501611207565b602083015250604082015167ffffffffffffffff81111561139357600080fd5b61139f8482850161110b565b604083015250606082015167ffffffffffffffff8111156113bf57600080fd5b6113cb84828501611207565b60608301525060806113df848285016110e3565b60808301525060a06113f384828501611413565b60a08301525060c061140784828501611413565b60c08301525092915050565b600061141f8251611d1e565b905092915050565b60006020828403121561143957600080fd5b6000611447848285016110bb565b91505092915050565b60008060008060008060c0878903121561146957600080fd5b600061147789828a016110bb565b965050602087013567ffffffffffffffff81111561149457600080fd5b6114a089828a0161115f565b955050604087013567ffffffffffffffff8111156114bd57600080fd5b6114c989828a0161125b565b945050606087013567ffffffffffffffff8111156114e657600080fd5b6114f289828a0161115f565b935050608087013567ffffffffffffffff81111561150f57600080fd5b61151b89828a0161125b565b92505060a061152c89828a016110cf565b9150509295509295509295565b60006020828403121561154b57600080fd5b6000611559848285016110e3565b91505092915050565b60006020828403121561157457600080fd5b6000611582848285016110f7565b91505092915050565b60006020828403121561159d57600080fd5b600082015167ffffffffffffffff8111156115b757600080fd5b6115c3848285016111b3565b91505092915050565b6000602082840312156115de57600080fd5b600082015167ffffffffffffffff8111156115f857600080fd5b611604848285016112af565b91505092915050565b60006020828403121561161f57600080fd5b600082015167ffffffffffffffff81111561163957600080fd5b61164584828501611303565b91505092915050565b61165781611d28565b82525050565b61166681611c8e565b82525050565b61167581611ca0565b82525050565b61168481611ca0565b82525050565b600061169582611c1e565b61169f8185611c50565b93506116af818560208601611d91565b6116b881611dc4565b840191505092915050565b60006116ce82611c1e565b6116d88185611c61565b93506116e8818560208601611d91565b80840191505092915050565b60006116ff82611c13565b6117098185611c3f565b9350611719818560208601611d91565b61172281611dc4565b840191505092915050565b61173681611d3a565b82525050565b600061174782611c34565b6117518185611c7d565b9350611761818560208601611d91565b61176a81611dc4565b840191505092915050565b600061178082611c29565b61178a8185611c6c565b935061179a818560208601611d91565b6117a381611dc4565b840191505092915050565b60006117bb601f83611c7d565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b60006117fb601383611c7d565b91507f53656e646572206973206e6f74206f776e6572000000000000000000000000006000830152602082019050919050565b600061183b602583611c7d565b91507f4572726f723a204e6f206368616e67657320696e20746865207061737365642060008301527f53746174650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006118a1601f83611c7d565b91507f4572726f723a20596f7520617265206e6f7420612076616c696461746f7221006000830152602082019050919050565b600060e08301600083015184820360008601526118f182826116f4565b9150506020830151848203602086015261190b8282611775565b9150506040830151848203604086015261192582826116f4565b9150506060830151848203606086015261193f8282611775565b9150506080830151611954608086018261166c565b5060a083015161196760a0860182611985565b5060c083015161197a60c0860182611985565b508091505092915050565b61198e81611ccc565b82525050565b60006119a082846116c3565b915081905092915050565b60006020820190506119c0600083018461165d565b92915050565b60006020820190506119db600083018461164e565b92915050565b600060c0820190506119f6600083018961165d565b8181036020830152611a08818861168a565b90508181036040830152611a1c818761173c565b90508181036060830152611a30818661168a565b90508181036080830152611a44818561173c565b9050611a5360a083018461167b565b979650505050505050565b6000602082019050611a73600083018461167b565b92915050565b6000602082019050611a8e600083018461172d565b92915050565b60006020820190508181036000830152611aad816117ae565b9050919050565b60006020820190508181036000830152611acd816117ee565b9050919050565b60006020820190508181036000830152611aed8161182e565b9050919050565b60006020820190508181036000830152611b0d81611894565b9050919050565b60006020820190508181036000830152611b2e81846118d4565b905092915050565b6000604051905081810181811067ffffffffffffffff82111715611b5957600080fd5b8060405250919050565b600067ffffffffffffffff821115611b7a57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115611ba657600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115611bd257600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115611bfe57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611c9982611cac565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611ce182611cfe565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611d3382611d5e565b9050919050565b6000611d4582611d4c565b9050919050565b6000611d5782611cac565b9050919050565b6000611d6982611d70565b9050919050565b6000611d7b82611cac565b9050919050565b82818337600083830152505050565b60005b83811015611daf578082015181840152602081019050611d94565b83811115611dbe576000848401525b50505050565b6000601f19601f830116905091905056fea265627a7a723058204ed2d756516ea8df8dbc4fbf2bd76bb43e93ab01c8c274fc9169dfd0be6254d06c6578706572696d656e74616cf5003700000000000000000000000012047000000000000000000000000000000000080000000000000000000000001204700000000000000000000000000000000005" - } - }, - "nodes": [ - "enode://59c9250cb805409e84c9cd0038e97d8e5e4605b928663675869ebdfd4c251d80ccad76267a5eb2f4362ddceb5ec671f7595463adfc0a12e9f68dbf233072db41@54.70.158.106:30303", - "enode://e487ebacbdad3418905d2ed7f009fa5dbd17d73880854884acc604c0afc1a60a396aa90cb2741278c555a4e30ffc6ffc1c29e83840aa22009ec92fe53f81ec04@99.81.92.124:30303", - "enode://563f12602a117201b39ebeea108185abb15d9286830c074640c9fccbaaaabcc7fe2c95682cc43f95b95059f6d0dc4c9becbc1b2bd78e0c5ef5fddff07d85ba0e@54.201.62.74:30303", - "enode://5903b3acebdc4a34800f6923e5f3aec3ca7e5d1285bec4adb9f20ebb0f87a3bebdd748b1849ca1108a9f1e37ff9ced0b475292b8effc29e95d49ec438f244b02@3.121.165.10:30303", - "enode://8f8e35a6dcacfee946f46447b4703c84f4e485e478143997f86b1834e1b0bb78dab363d700dff3147442b9d3e2a1c521f79340c436eb7245a97c7fe385b89a5d@54.93.159.98:30303", - "enode://bd228aa03cf4a88491c81c5f3ab4a1437df3b463081cc93943c4d3ab37f1e4f8081c6995eca076f717d4fdf9a277c750bd0289477ac151f1e2b024747dcd1747@52.31.129.130:30303" - ] + "name": "Volta", + "engine": { + "authorityRound": { + "params": { + "stepDuration": "5", + "validators": { + "contract": "0x1204700000000000000000000000000000000000" + }, + "maximumUncleCountTransition": "0", + "maximumUncleCount": "0", + "blockRewardContractAddress": "0x1204700000000000000000000000000000000002", + "blockRewardContractTransition": "0" + } + } + }, + "params": { + "networkID": "0x12047", + "maximumExtraDataSize": "0x20", + "gasLimitBoundDivisor": "0x400", + "minGasLimit": "0x1388", + "maxCodeSize": "0x6000", + "eip140Transition": "0x0", + "eip211Transition": "0x0", + "eip214Transition": "0x0", + "eip658Transition": "0x0", + "eip145Transition": "0x0", + "eip1014Transition": "0x0", + "eip1052Transition": "0x0", + "registrar": "0x1204700000000000000000000000000000000006" + }, + "genesis": { + "seal": { + "authorityRound": { + "step": "0x0", + "signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + }, + "difficulty": "0x20000", + "gasLimit": "0x5B8D80" + }, + "hardcodedSync":{ + "header": "f9022aa0e6ea64a2c18d4e60134a9b80dea17c069127e5c09ebee58b42108ad5ca2d5590a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493479420df7a4e8408add37c6a5c4afc1b1509924619fea07a7c1d3a7f2277bac57f1ec76773317841e6e4df6b403ebece7d3b10be71c2d5a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090fffffffffffffffffffffffffffffffe83222801837a120080845d7b87ef856577632d678412b24e63b841236604d05e940c6a1edac36df951e709a650df1969e5267ee6f42d5ba22638a21a79604fddac41b5c0a88aca5a393454781eacd9caf42f7ff0b3e87fe3d58d0601", + "totalDifficulty": "761710168469678517616542840624753029141072284", + "CHTs": [ + "0x41b3f780ecce0c3eaa620622be1ea2febc001b506c5420554376b99588e879bb", + "0x3f7357625521b6ee81a254983518ed97a1fd255339f0e491eed4ea2d8322cef2", + "0xcc77642475deb9fce7ce7fecef00f88033e417c066f1b4434e8b0f3a07eff7c7", + "0x75ddc483559ef7443fbc5cdc3d27f3e1dbb30652eea0d4535377de3c7892e08d", + "0x7dcb3d0ab710c314d05845170974cec53a1703d12d4808014894f7dd2dde70a3", + "0x2387995c0a39cc042ca30bccfeae1aff27b6e8c2f8e1ccb3b292ab0f8717b8ee", + "0x789d5915cca6bde2db2a6476bc7b7245f127f74e0eab6b7fb9b795e1e51fecf4", + "0xa25cf67523c8f4c34b7c6cdffbc46690a3c50998271955ca08b10fadfbd247c8", + "0x13699a3633823e28fbc46ab4c2f616831a13a6cb62f47a7ff573d8d198ff7e64", + "0x9ada8934b85fcd68b7c1b49f8f8986e6a3cb854b891ca17f5789412e132c2410", + "0x280caa3c4352d8bb476fbc8e0c28fd7c8fb5c29f408eeee4fda308d7edeb56cc", + "0x92137a64031b9980daec213cc6d68bfc87ec4726eef7d38a89bc18433eba9f57", + "0xa75db25830e0cbe8ee26d10a18773bbad9fbe11e097d29c664ea0856082d5b1b", + "0xdb020cc2ccc3e8b0ddb04ebb11a03354a15e40a8322197066cb130979dc25495", + "0xc463366e332e43c2471980496568f36342a3f4f7605b71e3ffa781020ede03bd", + "0x6fb25b998f4fbfe1373fb4d66380dfd938390704695541ad71fa8eba98cb74b4", + "0xf347fd85e47eb64db6e4f8b8b375122fe733e24da3de290528c9968ee54d2a2c", + "0x5a3c8a89497d57577aeebed419b5e11d81efd75b866d65979dc951bd1b97dad5", + "0xa6d48f29ced64c0c840ec8a265658e93b84c651d01ebffce33f10dadaf755e69", + "0xf54296197260da88327e3c80eba4d834dd03f20cd8c76bdbbc04d26281091b7d", + "0x6fb0aa7b79cd20b68519a1b30ee09cfb7c7df2c9b02722eaf0a2b1994f1d03a7", + "0xde3dab8a0b8cee49ac4d100dbf4863c9867202f774f7b2cf677c33b90936e7a0", + "0x6e96e646463aba29981593bb96614041175c0b6d6778bddb68935e1669cb483c", + "0x1d602efbe8bc065ac5e3008ca70f73921dd810efafa27f898d91be753431a903", + "0x3accb54475a399028cbddd96e77f914754f16c1be246629393713ad5cdd6a114", + "0x68e05b72aabd986254914e37f9c03304700e849cc8e10b7a97ba3842c92f8e2c", + "0xb16109323d95ccc44a651bf3202d827c2716d7041ad9e8558413ab8d2d7662e9", + "0x6741650eff050b1f0dc9d5256c3fec32b1601ba2413bbd75686f5d7928404cbb", + "0x8adf2952e8421b515b4425a5c1293e34e64e826a29d1c84be8059b87c072962f", + "0x0f23def280a4ac70820d01514506848740574ddc64539ed527140d8dca23469a", + "0x16b54677ea07856d7d69f032d9de2257bff506a11a8f9d5d0b63513b6afef3f9", + "0x429fae4397163ebb74482e43bf26877596fc436c5c87875bfe1ccd3fb73460b1", + "0x3d04731b7364885f37f476fe522d1a830a50f03e439be1844dcaae3f47928286", + "0x4aa8c62ac903d3bd4a789d332e8999d81054b1cbd35630e9c3e50d74810339e8", + "0xf165649e446d524766db95454e0e335fdb1f13687342be5ca2b5690495fb5a3a", + "0xfa3a865d026689e473ca3a82f14cacb0f53f7be04a7b528d2a976e336fc5d6b0", + "0xb066f97cfc19cae25576452cc7d0b7e3be69266e2655dc2708092f9b78d7e613", + "0x6fd390e9b661ed4074d7ea2234b7ae8ac90fe0e35d99ed4ef0e5d2ec17c646c6", + "0x51c6c122bd893f6370e8017f9394d3d8de9eb2187742fdd4cf5849bf4e80c8b6", + "0x85b10318b9fcddb09ec4846fe8905ceeac7ef1923cdaa5386eb2c91ad1121c19", + "0xd864bd5b7e65e7ce9f29162fa74d1903d8c898986abf8ad9c840bd14d4e6459a", + "0xfc5af2fb20535be25e5cadd2061491c308c556abf5b4ddd4b35e348eb1deec48", + "0xcf6d36922996b8b2fd98266fc1d21e702d87f3d5da5c24bce9ce12fa70b89142", + "0xba60ecebe0d75655e69e1cc9d225e44ae502b0147019629ec8951c5e02dd15c4", + "0xe9fba22b379f6b32316020ea1cd3af47049eb58cae10c7d43bb631fbea60c8c5", + "0x6dd578a373989ad3c8c701052bd120967b36713495d24c47467c801aca309545", + "0x6f8d05df4c09e7de8727eadf74caa91ccbe15c1f258fe19dd49fab01915652f7", + "0x0c3a833d2d63cb70481f4259477170745da87d724a7917575ff1617695d8f310", + "0x500f6b80d76f315a7c0dde48b7215c2aca55c2ddf4d09f803df8418c75b5c06d", + "0xc93861aae0c074b06bade783c9f58d3008b9545e4f189df2b482d9adddd48f33", + "0x78adeaf0a5423dda0c8775711535404ce8beb7f5bc4463c4c7a217d38aad9378", + "0x843e9ade9356c8bcfa8b90faeba38be759e55bf20780971535dab53ab2aa03cb", + "0xf4b47f5e0031d2042bba03bde9c1bef1279e53dcd3a6e67905af53c149c69952", + "0xd47ce7ba180e2d20ef494f668a9ef75f6a5b29827aba956ebe5045978ebabc92", + "0x280923c19c276cf299614c8b77f0a500cc2dfecf96e3c0c08b268f2a82e015c3", + "0xc10abd2d7d91530601d0e1d68381e063f38839c3c024824a17e501eaf5402c94", + "0x7675ccfbf244887d108afd102036dc42f84bfd1a8f2fea501456521f97536ef6", + "0xc56cecb2621e40724060ac11c9caea23845ecc90b794826e4eecd9ad9309da3d", + "0x205004c63736b7b904eea7b96b9656a293d1171e5bdbef962bdb30bfdb743bc7", + "0x4b53d96d36e99e83eac4b18fde812f8de3d96896d00d6007cac01fde18ce8737", + "0xd11c944eed2bcdf44fea0c7f3c8fc4823bf31ed5ee635dadb7969017f06f3e44", + "0x45b3d09ee88bf835a18446f787b768c7ad84e74a6944927b0cc266aa5f93da9a", + "0x135bf1bc55340ddc8473b34fa8c85e929ecfedab1fede7bbb6f98697d031a3fe", + "0xc510fd2e51dd7bfc42147486db35088140a3529f94c5076a4d1e7e619ab087fb", + "0x3047ece23f726c8cf82f59bd11f6b17cb39579e49405f28f6dad9f8a022e9548", + "0x3edcc019ed4012aa090ad08fb34ba3622dc1b30b75f10053d6e3d5b3a3e255bf", + "0xe180263ab8b372ce297cf0072f36a3e4c23734692e8f55eed22727be1de6eacd", + "0x93155c3aa8621b8a5999052659e60c226e854e93b9594587933ccabafe562d5f", + "0x33315d934d09be93fa523ee69ad5a44fce5c0940052f82cfe1b1a338e56939f0", + "0x586c36d4a2aa91aa933af4cb1336bcd8b484b27e8dc3f262eed314997bbf4506", + "0x4d7f22900814d9ba3365a4007e03581d60aa0639684a69ab5424d60a93d352e1", + "0xe12e4777e4ac20adb04a887064f3543b397bb6cf465cff0372703895eefcf1b7", + "0x0983ba3d5c9ede2f53bf71cf88c9300e1f83671a5d405b42ca711849e99e3a4e", + "0x35a8e5464d903099992e609d64b1a86c5309b8310a0cc7b488073d47cda73370", + "0x81d7c8b464fa3b424703643f332364536758639332b6582a582047d7db30f93c", + "0xd7a4680f8405e42871b522aa4df7b31906490a19904ebf1fdfb6e5bfe194e133", + "0xe5686d67673093eb22f277ce90aef0038691f37637469dc5cf32a29baac39d10", + "0xd972594aba86083be41b1b0f22ee20427b58a72d39d94e692a8cd27984e5d466", + "0x22d999b217f8d22276639f626d8f521dc05d96015ceca97e7b95024697000170", + "0x2e960190c87c8345bb9c0d01e512ae7e04fef2f1285d5c844754683dfc5e0332", + "0x84209c97130935bb1a50ec5ae0dc0ae6d2c2c0bca64aefd5942a3ec4b93c3a8e", + "0xd89e69e11b718a97f259c0bc80ca159c47840700f52fca79ed88fca5983d2892", + "0x4b24c823155a6bb126ec6985700cad976e274aeb0e317453c6cc8af68e5bbf6a", + "0x4c571c77f267bd7412f8ad74ba111fc66cfb4c9ec523777ca382f6004af55ddc", + "0xaced3e3f2c9e7756c1f333876be6a5e2eaaa3f0d2db1820750b11023551874fb", + "0xb768f2d34ebfb0cde65d20246660ed3201189bc908658b306407ac76ece650d6", + "0x72ee68d4c724c5e99c0963315487b366d6733b7f3e233507d8e49e2d7aac8398", + "0x234fd26c96b6105ced8bc2b4f6cdff99b745fb73798fa55f86d93507ec1270d5", + "0xde9a78fb6da543e095b5b21979a4aa0f92b188c2477a06e09d3bb8b557abda2e", + "0xf039f1703ee0e970a160658ec7be0528225b1536239de29d561e197d5689c3b2", + "0xbb7954ddf18678c94e9c5ac7a94b6dd8fe7c55fdc7ca6c33358ab3ab199a8865", + "0x8234b11e36c6cf91d6a51e49651b241fb8d870a3743f3639372ee1cab14dc028", + "0xa34bcdf488e3b8ecd15df8464003d28bbb3be2f6c3415f1ba5c813dd021a9c1d", + "0x1f6a57fd6001870a2e2ea3a2926468333c70c4d5b38419dc69877def6bac83d7", + "0x3a4cba6ff58ddab6bcf3773feca57a0550a4c3c56dda58ce4b73a308290fd7c5", + "0x2eca47820ad04951323dcb1ba4998d5085588717cf3813be673c1c10c17e2736", + "0x18760e32c529dc819ddef8fa4846da065c6275a8dadbb333d22de504e914a84f", + "0x8ef70eb412af3642a93d17a47a431981c8bfeec791ea8db3a3f43d40379ee8db", + "0xc58164a60cd4dbfee3f88c7944503f7f1784c57fbde51759993a512842b072c6", + "0xfc0f06f7ba1729704b1b93627b38847284ff2e8a172a9d6d47f9f08608fd1ad3", + "0x52cac99c64d0eb655660fe629e75cc8e66c8fd3e96517281b94c7a258c4592aa", + "0x2db1cbdc472651297d1494272ffd88846c28e2e8ebaf0e0e772ac35236452b80", + "0x66cf4ddd2d548597f74ea282181a4bfb11bed40a4809100ccce87276eba70ed6", + "0x44691b5cafab1d96b9ce6bb6005f6ef5ae0343c3873da9ec532e1734eee84f79", + "0xb4040911e710f7f0787bd04d4d9ef595cfdab78b9e00a65f3fbe240e07bc4d84", + "0xf42b2c5ebaf0cf42b6e0abc04af81b670488df57380448007804f8af2bf4ee1d", + "0x524a366182001a71599cfad9df99fca964a4caf132fa4af6c7784868eb926284", + "0x390c0feb6fbdfee1aed701cf26c3514e256f654bfcbc280effe38825c7e5423b", + "0x48a1863c854b163dabba8ffdfd4367657a5abff3443a591c13d4b160f4ef8822", + "0x4fc8f04d0cd89aaa43c435fb6aad02f4a6c45bacf6f57aeea29ddc4c552bed07", + "0x55ff12fe3bd59bdaf211ea6b74c87a58c57f8db280c86ca6952bd92351877274", + "0x7b22fcde7d64cd3f059ef5404b2ccdb82eff4300fba8fe25c7de20e43012795d", + "0x6b5bc10a0523747db88828ca35ddd9bf8a417b81442210d5b852c729e673fcca", + "0x70736b069938456836fd8fcd459f0e5e3ad66cb3570efa0d74c50f4a8f363af6", + "0x6dd2d30250675ce0de9f0ea8a806af237c7f285ead2054c3ec27408c36624b4e", + "0xcbafc9853c81de2a2ff637bbfaaddd95b7cf4be5708092f00db15c6f879fc0ed", + "0x4978ec88d1ce26a4f5287c9d76782ec4d86e724875b405fa85cb9a02ee030030", + "0xc801c340607e02750c8e56e608541e7ad4f4cf41462c1302eb8b8ba3a548f542", + "0xebdf8530bacd50755e38a28ef47acce13705f56b73d47c7642dcd94529d30dba", + "0x38f91c066f911e4194e979865fd0ea726e3973fec869ad535867753da287dae6", + "0x88c19e64f1ed5f6b2f9d4484e2af3a950930321777260b78dd6981a14037d2ba", + "0x0ac14f1f0fc2b2f1d60b5baeeabb0e345db69c8fd472c9dbe642595a7e42416a", + "0xb74b2c6e7fb58ce473438ff5c7bab0feafec9545de05291e2e832fdfbf136b6a", + "0x25add22bf0fc9bf19a9ae615dee83dce8cbe8dbb1c4b096f55bb8fb07f33fe02", + "0x3a1feba1f004d85a4c93d3c3fb860b777fd040644851fe5e4c956cdd6d857031", + "0xa553830b92170cbe84d143d873690be13d133aaa979193eaed0a0702bad4a39a", + "0x6b8f50607189c17b9ff6d841dc83044583fb967ad3367ce30c0976eccc47807e", + "0x5860e09a32b0e54b9d0765bf94e153727db8acce9aed30d2a0c0a2275f46aeca", + "0xb9e292fdafc7b5b20941203a86204862d811f118de212365c40cb533d657d470", + "0xa80d09ffe75a4d97c83e8518dd08aff8ec06088228f7bc41f658cee35b147619", + "0xc2cc23513896240766a9e60ee332c968a23228f103af0471f7895a49879513a8", + "0x858670cae905861ad87c120ee128ee6a976b0c6c8a49c4315dcbabb0c87e9a53", + "0xb55c00241029d1f7087f76af36d4a3081f75dc83f3ef5944d7464c215f095ec4", + "0x1ad8cf2111bf6ec6056306eb670d109f352b04fcc8fdae71ff0f9c72eb9adf00", + "0xa3c4ad1d4af73eaa27b6bab3fcd275113ccde3dc293912fafb03b15caa471f2d", + "0x4ce86f2bac3c8b621a032d066d6e427e194aeb7a39032d289311571639ecbeef", + "0x30e56f466f589d89ad7646167a82149b5a4fc17d401c183b228d5f3002377851", + "0x3489db0d7cf3f908699e2c311f51d68de31391a62e297ce9e3bdcef21b175c45", + "0x8d10d9c4fd3f75d8d5cd80095d255f50f638ac64488ed48e29897c43013c2f08", + "0xf14f1f0787357e36f98728e363be7d3062642b0318b49cb08f541f26782e8ccc", + "0x281a085b0112d332c18f3cdcf6aff0e452e8388182cb1bd20c5c46254aecbf0b", + "0x4f57d4301dfd9e6aee9d4d834b535ff6cbadf542a99c83282bd669d4df8e6152", + "0x5b930ef237fbd241eed87947cbd5a52f51df0f5308128c8bf1ffe50ece68111b", + "0xcb1830ad35fe0a9b66821ef8638dbd007259ba512ddc163d7ddb1b9ee2c3b704", + "0x9e998e22f94c0bcd32dca95776030e43ec36075083110192e74c8767c5c5d74b", + "0x05e03d936751d6bc887d90beffbe4ee593c6395c5dc666cdc4e3f614afd07bef", + "0x87c96a659976df9f0c87d27e7e9b7459023958488d88ec5a8cefb0138a336ce9", + "0x7475e882901797c14ca01226e0be42dea05a69b7c334f314dbd776376423c532", + "0x604f21fbe9d40fc2cce8e0924276503b40090ea857668af3386aaf94cd45b582", + "0x8c1c7440a30d3615052635001c4f3d97f5d01c9188b72f97b7b37fffc8405c28", + "0x20da627b4a619e401bb5e96e44bfa75239877e42963ab21f58116c2137479c8b", + "0x4349196f0fd0f857b8fc6a8f05e4243822de9b8627abdde7289f1dc5dce93dbe", + "0x6492274f5516fc78853a2c44bb2caca75b9d8003d9fbf1450ac81670dcd00952", + "0x70db7efb2ca923b56908b47ecf5f7321f4871f8d07045331cee49bc5a382c12d", + "0x41b9d10cf9871cd3e4948ca28d50fe70048daec6d3a3e91368a4304e29dd81a4", + "0x3f543d7a328238f74637396fe505cc37353108941cbe851b7c5a90b55a717f14", + "0xd5644d2b40ddaf47019081ea3c3f201d64175b716508b50d6356fffc78810aad", + "0xdba5f033a86bce361edc6d6cea97a2bf68871237a0bb9952bae4720fb4c68a1e", + "0xd6b3376cf36414d5144da72b312b3b2b2f6ba8dcb7a93a32c0ada619f076be55", + "0x6a5c4b324a7a3c301066ee55aea9dcfa776930b8642fd614664a5ba332a38918", + "0x999f9ec00c2b8d554dd491b93b1d25a09fa6e3910865fafe96a1e02845d11a46", + "0xeab66fa97529aabf17c50cab7f8dc7fa1e4d5af870f0d1ba8c6adbc7c592db50", + "0x38edf3cd86789d6b89b450a1510cf7868bec5a16b0983863a2b743f8fd399e58", + "0x0fd5fb68f9849626ed4b393909affc1ee113a8bed4b2991dfb98a584fa1703ee", + "0xbccfef39ae834f593741ef7898b27765c6e6661caaf020123a112b6368c9ca76", + "0x225fa981a54626352cf6dfe3298b39ae44847060ecd73d1f11c2231e4bbeee27", + "0x61d7079bad157a12aefb9b6c53e02575784833536d9a21971d401b553efd1c9d", + "0x6de24b1defb0c292ce6a90ad04c4fd795f9252adab3719e9aad70f3b13c8c6f6", + "0x4b8e435e443112f773dc913234ef945911af74093cc408ef558ba221592c6d15", + "0x73cf9f270d57128654d4142b3f09ff3fb4c0fd40c33aaf1f80d2db5b75348b22", + "0x8dac36d755951e95d1e5b1520207a9ee03e3cc2f41ebacdd0fc9c825ced0bb1c", + "0x8b32d81cb0fa801ca4b750857810faf6823399cef69c4ec38a748d9edf755f26", + "0x428e16bd34d5b3412e30c1907164e33a7de17620a154c1c2a9d0db1e064a8be3", + "0xcea1b574ac083a5b41da7d41290735c06630813ec44eeca231bf4c9512b2d614", + "0x707088e4e79039bd3f77c4b8f32bb03144edb11a543f059191529c3923f1c237", + "0x37f5ae7d2c2a0d9f61c12850b738c1ab3888d8dc1ec35bc6cdb857c7efa87b06", + "0x245e8e613249283566d6f436a4b2e8d37505270112f8b848d9150dd82d397266", + "0x2ed9aacc4224bd10996112dfd215be598270141f3cd9805d8a7b4e8492f430f7", + "0x4a18b388e58ba85c27245c38123b4aa9ea0a98153c3019b674d06e5ff98929e6", + "0x1043d401a0d62af95ab4cc5adf5050d4c7711d15d4636a230dd3adb47a15799e", + "0xa21fa3d7c91ccb27198c58e099fdf9619747f2c546e6c7530ec3d9fe22fc9047", + "0xd6c0b1b57bf582f0950efbb047b0567224851afc4939fee9e391c286b4a624bd", + "0x3af826ba6b78aac0ae170f191f23c6c13559c00040546706edfbc53bc3d336ff", + "0x1e1ac7cc499be3bc5661ec5a4b8b4b0161e6b3f532ae41fd4798ca7fc6d538da", + "0x6f0165b80c9aa08d72dde0643fb87ffeee9f61fed9d26939a901bf28d97347a6", + "0x4be21c67d18df789097d877d6c90271eb12319c88f65b04b756c3fd02012f427", + "0xcf8523a0e7256c2359db77b57bf22c30a30c0b7beb246166babf12f0a227d056", + "0xa90bccdf7c631ddcaaf1c0faa5f3927a750a0964f84cd3429e6d60581c612da8", + "0xb25181b7ff4d7203549bf20a8aaea8679d6fbe54ea214ee510ec502afbdb878c", + "0x1edf2675a587416317fe13b40ef1c7a35251604177070e6f110c5d0f50a54d71", + "0x0dda75f783981122aa46cb5c74f541636c7a05accfc95249b81de8514308ed12", + "0x015f6f0108de91e89b76c582390e23191c0d2d6d30985fb98574c0b53e3af6ff", + "0x1daaaf31b05dc0ef715861d06c50040bcffed39ceb95cd5d62ed2e8beda64336", + "0xda12f2341d85b3f70511782af0173948bda3b2680d41789b997aae0277ceaf6f", + "0x0acf2d7e658528aee304cabb9c89773d1be71525da49ce9ba2dd1d074bb3e02a", + "0x6bf7604e6b9528b47f9fca4f67b2556455d7cf182d01ebe0fd5e51fd9b3eb60c", + "0xebcc8534b8dd56355fb9c79b2146b89727fb6162d56750c10013616bdcd9a5a2", + "0xa2437a60b8a8420765843087e48417afac675b1ffe8f6f5edca95543ae9b8869", + "0x1d3a7639b96f49ad5a30bb5621bcfb1e7027f6e95a7ae70366406b1dda27d3b1", + "0x551fb4d5fbe49383f93935f8449c5924df2cf25b4ff74111e558339f7fb11ed1", + "0x9868fb8b81b8d58d502eb2ba65d65cef34f6127b15cc4a9eaddd4ca83cefa6f9", + "0xc874f00bf35db88bd32c54b318788ec1ffe1b6c06a7bac12e50c74bfa3a27218", + "0x85137adf206fd4e35715bbb512f7b715c2b0ac4b8972832ec0c5a11cc9398552", + "0x4ae1d4a1a3c870d22db44d647e9c5f53f1ef03f21ee2d47329121ecb84348be2", + "0x4714904bb039b609b517a91124646c037ac9f20ec0258dfc39925ed3cd9f0278", + "0xac60c857c4de03717cee2d96209ef32be8c0b10c4546fb03acee7b544b0c14b3", + "0xee1836df1c112ae89bcad172812909e88920308e707cbdf9afe01f725cc7718d", + "0xa0c86d0ff24b55d82348ba54087733b774dbf59178588c2975837d884dd4af86", + "0x088a7079084ee39a6848a50d3ace8acaa44b9ca257684174027bcb7e9f34af6f", + "0x7b4d4978b1ea3731339c4959483d691011ee74b49549109d56b21b036560b006", + "0x169bbdcc943db811fdcea9ccda6f29e75e9ab379144aed105d17a6a5eb023e6a", + "0xadb88d836adfa898efc591a100976c5f6aa09da42a5c80b913be1378ec1acd92", + "0xc80611c51be4c215d576aff2988cf48e3136e2710e214269709864562f5ee9ca", + "0x40c97f6b48b5a38996173f6498c4e239efe809e2512b74bd59c444609874ba21", + "0x3e52f02ed5d27ad47b7bab14211245f13dd361ac5a138b195a62f6748ac65fd9", + "0x505eb8bacb015678c179e28db862d612bcaf9022c060b9b4b51a0a9d2ff2c9f0", + "0x0e088c3d27ebfeee02748c04479ee5e63feba5ebe09b463ce4cd1106769eabd7", + "0xaf0f49fc79e5fb51960bc567076ceb3744e16357c774e8867d6f86fb9afd56e5", + "0x154ad5b477c2cb4887f64cf907304dd583fdd9435335e37ca87d4d5cc61835d0", + "0xc946833fa78b8d11a3ae7c69c546f20e2a20dbeef39b62c22447776c53ca0237", + "0x920108a359c507ea3c00f8d16ddaf1e30184a7d232f593e3a996ba47e621b51c", + "0xf837ec145ad844f928fb145c19a40076342a9dea88393074fc2d648a005e24a7", + "0x609e463455133feb00cbad4931cf3f201aa7ebe1e3c1af1cc8697cbfd299fe1e", + "0x008345051caf7253a1d6f4f331d84e53bf03e46ff00480f786baa905e97225e6", + "0xc771fccc08f942b0de47a2cd81b956815437c62ceeaf8178bf53f2c0f80f2be2", + "0xe5d361f6413f82983f7d16d6e74027d11edffbd6b8e5fbbed6121d2907154b15", + "0xaae9d7171d1485a92151423d29d8525230fa51b4ca0c07f37cdea261b30d30bc", + "0x28853430f42a2be4754e814655826dbbc1f52dae4a088c44089e2b2cb8123b86", + "0x129112b5f5e5a572d647d201fee35321d8201c8cca1252b9d8d01628910d7bd0", + "0x4f3f106f9de3437026d210d8dd51da8b3424f9198b0e94f9ddc0641be0c9d11d", + "0xe3b0c3be6851efe0965a961132c1888a5a2ba514c509fe227411f9ad97ba4988", + "0x2d33fdd62bcfb47253fece984a192647d590d9f23bbb6b3f3d11226b890f21d6", + "0x0a3d2f4cf5d893b2358a5d82df86611b9a553c99fe075887bc0540953701b47f", + "0x285a07e0a1ccf28b3864fffb1abd3380f7c00e6549a5b2fd6d54e64d1ab515af", + "0x56b08512e43065be1f0716a0432292a262ba63582c8bdf2a417a1f1734850405", + "0xc6da44dced1bb479611041ad17b588f638136da1417e62d21bd1f8dae3aa293c", + "0x6d177be98db07d363417767454f78860783466dea3814587444c1b6b3fb6331c", + "0x0355189dd2d3a39174d796e2aadfb9dfc01d2474793b7055160b99f623030d25", + "0xf95a7687eb64f922c3fdbf5b139281032d17504f6762c2e03749c08016205d14", + "0x95cf1f25fe50e8b8cd120803a3ed507f8f648fbc7910a8d1fb39b1af11cb5f04", + "0x7f79b0e7cfd858bd25db6cd7dcb839006f263dbeec880bd04bad2d928c5088e5", + "0xc696cc26e28404cb81b65a7ba61b891fe44de9d98c60fa34e56e59e6054462a0", + "0x7d1eb9cbfbff7c2bfdf5730ced7c10e506a50dffcc2226dfc2cac0fcc8d839b1", + "0x4b7a3716e7efd15cf68e71c1a18b406ca398bc06393710edded94c15335de317", + "0x5c39545d794c6f1c71717aec3980998f49de8b0e484e6a1cb1ca042a72443430", + "0xe10af689515cae040abd1fd629ae72733e681d94ac02dd0a97f7488e77a7bb1e", + "0xab0b294bfcf04f60573c1f96f99bb4613e4fea8a0e48d400454c7c8037fd30cf", + "0x87bc7473b3ddaa19ae3abb10be411e058d6b4d09b2d814db6b3d9f0ce6c6f566", + "0x2c5f6e71b55d68820aefec53204f30b0763975f815a941bca475d42513e9db48", + "0x20449d9c0986b7b1337996a2552925bcb1fee16be72494a63e4756733a0a8189", + "0x09fa3c9af750f387f8786fd6af7273307e4ae91121ee683d5106619881629013", + "0x664eb523dd54e6c85b34faefe100c61686bc00ecbc7c0780c837c6adc121c4e3", + "0x4b00b656534ca483cbb64d5c71f102f98f76456bc7d490de2babbc6fe554d9c2", + "0xb67d59ae8a4d5cc72743988f742e54763fcc920bf90c24613b2752c5b6b88732", + "0x53f5146410352968b052012b6aaa50467c71dbe46b482dfacab59f5afff9c438", + "0x7f5379ef8bce2e76300f85c80aa3bc75556a78315d9ec1b21396489957681fe9", + "0xdeb314296d9658b21a2ff1462d100d56f39cba861b4279dabdb7c62a24fcc952", + "0xf7512da6a322502a0d2e66e2db3cbc75a6499a5e9b773680ecdcec54ba5271bc", + "0x534715309910cbefd81eb85c0e32e7c00cc6ba134d0d758ed09879e6daa44d49", + "0x31ba6e3e1b63a5cf590795f40386068001059c8ec9f434e7cc8609b76f53e67a", + "0xc306d368230a642e153ee3d7651f102f8be7674a95abb4178214b02cb37e4094", + "0x4e722218d710fd712fdbfeea879346f6ff5ac684b8ec968d4a3e748efef7ae9d", + "0xdb6dedd39c8b44d5d3ee37e6394b25a039827be6b254ec3e74e63df83d1554fb", + "0x466ee9ef4087e4a6868c3714f7b217de47752ca27fbd971027906d5ab938d44f", + "0xe709e3327584f0061259133e307014883130250bcb6da0c0b7537007c49087f4", + "0xe4a16e63aed45118193da628e7639f30c5d92ef07d8173f171905ab636591af6", + "0x6a39375344768a72f3f25d638f870a1a2788a3a087f1427c975059fbe0279316", + "0xc4c5b7805c95e651c9a31f0dbe1f54b27913179c5499ef7821439a3ec90d427d", + "0xa441de2d9f3d3954ed4143147716ca5ed5537d1ac80f229065716befec55bf40", + "0xfe254394bbff420592de9694879d0b8695992bde730e41668651157dd0315b05", + "0xc15543485f35e2ae28c76afede06d359871b71c42fc8ff1235b3b648b42af2ee", + "0x4c189cb795fb07191e2ffc554de7cf71e23a9a0c31ae552b27ef63b81b81cf74", + "0x0012a33e2a754f6a0987fe9036a0816651481fc85e1cc33eae830fce28ae9deb", + "0x482b7e7abeee615a35c6e09ed3d57393e03d7d099bffc8a008571dbb239caba8", + "0xcbebd836de3c4d1d36c42bab17378f6a6e4d3fd56dfd0cecf2c1a12f2a2eda70", + "0xd466f0a6925a6fc25ea984d6d07c680028ff487962e71218b6e98c45db6e29e0", + "0x0a776d754b66554cc74f345d2041870f8893c49f8c3d312d2193b080cd0711cd", + "0x27075982ed5ec6b4bf6df75a9eee970f878c3b6c34b54af50f749af4514aefab", + "0xa6d385435f960dbeaf91abdffae677aee80005ec215bef93a17565c38e0dd28f", + "0x7edd4cc9f1e4b7f00441ec73de6ed8d3aa0d5d5a4fe60502a93e485cf7ee9df7", + "0x78b2b1e1d82d533c20101d17a6203fffc0d4a6431e4b11cefe9e616bc91c3d73", + "0x10ed93e3fc3d39347fad3f4ee9215e808e2f750bee4ecd26a6cf1ac2a609af3d", + "0x78fcf1d3fcf0e8fdae5f45b99f66ef5f909ed449385a34a4af4e0fc6ea9cebc8", + "0x76e7f70fd968df39d855e7fab7efcbf40997709ffcd9ebe4c1f94cfa0bd332f6", + "0x1c89d6e05ca2870b84df63272508fc51740b90f512509d540130c6b70aa0e4ee", + "0xa9271aec610d0dc64ecf170b744607b364f6a89e50137d870fecf9df69476489", + "0xa6bed34b3e626423541100033b4a9ebefdf9ec426a60196c99bd2b3cc4d1968f", + "0x5c3e3d643bdc643398d806187f2db958a5afa3b80813e654a23667b9fdaee979", + "0xccd5a3fea7c635c2e41f7a9bb9eb1dabaa149d7988fb34bece46ba6e420c5b90", + "0x8218d291553b38e6ac774c84f6a47a5bee8564bb9c53c6eccc55b26800c04f3d", + "0x9b42e29ff93389d8081db3ff65790a3844a199d76a680ba3b192d0d2d6e6b5a4", + "0x9bcaeae2b8459080cc22765d6e37e69488ad8ce2330abcfc2d4976780ab29a8c", + "0x8db4865d48ffba2f89232e1089c77da02d89e70402f2259868fde00d5bc0d8b6", + "0x21ba82862602aa263f94218d2c791dfb3c159d64771023b5d7e3afba239b0d1f", + "0x920f0f4b645536cb11d619d81a0836d6353ba4b951f6d2d646f258c5cd41f382", + "0xa5d5ac9a2a7c1ff2fd4c1b07df436d2f0dd1193a0b8decd645ae5fc67ee2a27f", + "0xae4cde591f67c28795d15b80efc20e516ff2542d7f4c1241ffd43ffbc625dd62", + "0xdc538641bc9862cb221dc964b3a363d4123d10013c123afe888aaa3aa93dba7b", + "0x83fd7a102239239c682948dd0444c22fbf6304b42be55dc6390e0170dd74b7b3", + "0x7d5d14e2f08dbc3185fdd5e291e116962f667368e40254ba37072f0743a94ce7", + "0x0930748b243b46787a06ae80e62ba84f8b6ab659326ad3c1996b568bf01a5047", + "0xb90356802cf8bc15e659b9d34fef588cd5d838bd9cb11a51559938b61cd92657", + "0x65a2bafd97b0f1886cadfacedee6632f8bdab7fbc30528b90da0fa142b493ce2", + "0xbf412a90e16c21a86e880dd62795442026f237210cd0a4635a6a1f06c421c806", + "0xf86b0c93cabce3538c2222dc41e1c2064d1dc64f5822e3978d5897808f2d92c6", + "0xf193cfef6f0c5037579917656293690bf90bf1da0b96cf66b72354c12a9adacf", + "0xcdb72eed57fe8634f9aebaed548b2a2d67995513229a68afb90b14376efd6726", + "0x36b096a5d8162ab305813690f066e1737165efa5cbef67b5ff7ec17ea3dfeae5", + "0x999d94a832fa7af1eed43484879bd15bbecb1326e39ca7815b64fdf626538a06", + "0x04d04ba4e96916e71ee06bb821c6d587f500ef05de0bfcac25a1e10573b07952", + "0xce9598c2a7ffed2a04e10930cd7546a99ebe04f16ad562d20ff6b182a53f2f42", + "0xa2f8112093cd50803de152baf66649499d7df5ea5cb5a21ad7da03c513f0626f", + "0xec3626a3b7e2b15b51739fc30aecf98b5c4f37af814f3e1a374fefe205fcea7b", + "0x180715b003cd0de98d1f4158b7ce24a437db531d145673e09f3c70a81b70f7dc", + "0xb843d1791a6f6115878d097af84804b1b8f61e7142f625dc6ac00ec91c3700a1", + "0x0262d2cd0de023e48c820675581f3c3a1fb9c5ff5b074246a3f13ed40156c7fe", + "0x66145883b036e74bad1547f18db7794f503801b5b0fe96fa1c1289b602eb9baf", + "0xe1566a31ce80ddf85494b6c1ee743728b1404467b0923ba3c3017d7431e114d3", + "0x49089ed792e0a76a78c78b2e959e0e4f8f6ed836a5fbc65741946392333b61b2", + "0x5752960eb3d3c38f62972d08e6a8c9fc3ee1a44bb067c711729df07f4ac032bc", + "0xf8fb145ba2fa9684e1954c197e5bc42c88c82f59e4aa1616d8f9345764631e87", + "0xc6e87900e03c656cd0dbcc5a013f7f0d4d5e27b5eaf074233dd1bc1309cfa89c", + "0x9f5c644d82ee74f034c2019d3650ad41c3cb79c8ce3ca8264363294b7b1a0bd7", + "0xea0607e49b125347edfc976d4736965a95cf892e17126ff72558c852616a3d8c", + "0x1018a047a5aa9a82d9b956f486be70ef856fc8c5126cff341a144ae3fa9702b0", + "0xdb655d919eb7347f8484adb7ef958946e0cd7b5ee408c96aa72f8c0b0e54be55", + "0x7f5986b674896dcba816c5008c44e6b09510add8d889ecd85778f1ca7265e35a", + "0x72d4a4d88ab367a072c4d9f9d0583312b60b2cb8c3718fea7c3ffd6e10bb7338", + "0xe58962cbab186e602da601ebbc2b807376472165fb5660610f095470b9a075c1", + "0x6e16dedd38955062c9cae9e0f9d986f98fa75da2f4dba47720e36fcc82ea002e", + "0x3f2777a1dbb9dc3dba63e34df2b2517c71c2e5741502d42c52d92d41bd6a19b8", + "0x4d74d322dfb4672af7368ddc312f0994dd8acc3d4e81d41301bc2cde24028ba5", + "0x0d1933a7f644b352400db5c7518142e97d02231240750590d1928b7a3b3a7d93", + "0x685ced7f0618cf29a5a93b3e444bfa8a6db35f8f87728cd5305184dd95c8f1aa", + "0x53000bb3e8022f80b43a4210a128868228b90576729887fcdb00dbd9a5a1ea1f", + "0x5c8bd1f5712e8cdad38d8ad2ce4889c820e056c2b941ccda795226e43d31adcd", + "0xc4ef659c2f742c74baf94c3d8c5756406c42ffe9511407c1bed50ab7627f35ac", + "0xe9a0f1d1c221c9852ed7d813c5a6df0561547f4dfd89820dee5d8c455bd796f8", + "0xb6213276df04617b51aa0271bd8ce7a154223e7078cf81a839a2293ac7cc247c", + "0x536449da324625ef81f92e6fd31e7265886039e500e35d3a1d69f516433d36f7", + "0x9aa041a9866dd97ef578b2bcb69b0b7283111cabc1e7eb75eedeee35a4e5b074", + "0x0123b2c16e8c9a8d1e3b7da4d218cc51ea674be14f03c6b4d73365fbfdd98ee7", + "0x0eb20387d1ec1ecd026a6d2ad699c54f6ffd8f30b783f8e0fe8e6f5509d15a85", + "0x563a70d42acc1246158fceda0f67b1fea0d2b296532bb2132ddae6198d435702", + "0x36f413dbe2721c85836b21263f0061848b35f1ffed43c016cd6e689a2ebd014a", + "0x3e0fc0db58d13922405b551fa1750bed62649c80f0a06d5086bedd44bc1beaf8", + "0x91adccae8ef501981199c5fa00153a70dc7e789afc129b38118c6da85660f8ae", + "0x1cc1fcd8c4557ab29a1bb097fee2cc8aa2b579ea85bdfdd8e1671a083598c68e", + "0xfe8fb70cae01d9583006f295cd30d07cf02f0dc18fbdce82edea7328c0d85898", + "0x0a046631b0a137d9c517e9f313aaec655e95e89c63e677b650947fd8064d0d39", + "0x888b0dfa9b325119a6277909e7268c6b8f51218e9cf1b99d090a067092361c88", + "0x01a56ea494615b4bb20c9a3734a9e529d31c4e79bad27b83b68070c94c892955", + "0x6f082b3f4d3c90f4c39f1add964c81073611503b1bca9566d681f257e8192055", + "0xc0886e0dfa26e1d505faa269d08105367deebd03ffffcc26c2d8554758fd0f1b", + "0xdc8ad68739d0d51c6600691234eda1de740a62fa110b5e1d66d49e23abcd5de1", + "0x7fb76390fa10105c55cb74719bd5a9ecc4c71c46c7d518eaf8cb5960e3bb4053", + "0xa27a4ff8b5b1643c2d5ec06af78778d915647730f8c1b6f888b9b220afee5140", + "0xf1fb33ca0c32478c068bff627034008fccf4b61e87e037c87220ab4c109598eb", + "0x0eb3d29c871ff80d186d7b5279ff61ffe17d2417727ff1c24a513f8c1733fce2", + "0x2f26a2428ccd2c920337e3ea82d1a9fe982f6e523fd6de951fd6ac7f6273899c", + "0x9627b8322b036daf334a5ee8fd88f26057fdd42df63a5201030517b4bb73d344", + "0x24ae0b0730c905e23cf3c0b144643a65821210de800628a0c7302450150c5493", + "0xd5c4255400a8a12deb48531dd5c3b8dc11d1192193cf3f5f40d8258b4c890663", + "0x0ea6700e745eb2c377d00f8590023aa61b0a99c4d7a18c1584bd41af953e5e6f", + "0x5378294c9b11a30195bc672e85ad2d950ffcdfd20f423fce8b3ee065764e174d", + "0x5d75de8a3fa97d7bee1bfa45421541ed41eac6ef5dd8298edb9d4cced75ace59", + "0xc0a50285022e8b9c3f25e9179155c9799b01dab71c64b00b36dfe0df58ad00a6", + "0x1add4e5cb42d8f4bb7ea4c2562360cfe97620b3d67fa5a36e27fdda8329f738a", + "0x1e0a529811e5abd7f932031c320be09f3a3fee757bd1824bd43a35588918f93c", + "0xf1578c2d5b99764ce92a1706d8f17a0dee00fcd0f65c2341e9c81f189ca42c3a", + "0xf2ed439b1a057602facbbc643c0095d6fc7250967eea08d7f263325330e59487", + "0x4285bc0479a9ae5f0558aa352cbd77c5adfb7d7f3845d4d128eb1fdbbc470482", + "0x2041915557c6d673dcca2ac6d660d6c09374c2f961ac89299b1197f2bfc83687", + "0xe31587cce449ff71c83810f2980435a4d6202e2345e3f501bb11100e82334e21", + "0x5e643dc7416c62cd0dadf7da1f4604936853f1903ac712026385fa845dc57498", + "0x8351d4ebe8322109274952a74ca7957d58eaea590b5495b753cf093d2cfa4992", + "0x29eac09319646f9340fb18aa2aff01d3fa2563809c7ab9ab64d5c2546ab21c26", + "0x5cfe455fc788cece20cd4d9d1c807fb3479f1acdf02613c0030b3c689263eaf4", + "0x8083e0d70b6afcd08cbfc48b228c9e50d85bba69fcffa71d3d2a418490b16729", + "0xb127fff7e08a52a7e1475e6cbfb884e3805419f9063a1ff07fcec2af040d76fa", + "0xf9a2084ab63b7ee7856b1e48478bc86afbecd61d0ecf42cc1f94b81467d73130", + "0x97194527e77fbc0f3939335311f484790bc188518932b498c6bf52d61b3f33ac", + "0x299dffb7cba8574c77e97f67fa108a4b2bf4db140917d5105bd22b0a9a1938ee", + "0xf161e0a7893d1f709c0001231cca9516f98a38f4ee25f5f71d85d2ca8d9a9d27", + "0x12e7644c623f229f1eb97f08a782e734c23876bf7ba289d086e98a3e90e355c1", + "0x2184f1fc43134e2d37169cac37264b4e4375e3a66365edd68652c384f31b5f05", + "0x565aef68dc59280c409112b4648a231e368b00c7adea2aa5d4a28850e5fecac0", + "0xb0ef3e2c4f25d05c004cdaed56d31b428818b75904e390a487a3682e21e40893", + "0x9b50f9cb4217b52cd5fea3aeb94889eff86b106bc951fd0b7e27db194cacd0c1", + "0x604bb1bf7ae4d6302fe754925d34387070bc3f029e6a145fd2e064e3d0f483f1", + "0xa5f933f0ace924f218cdb29dbe93764488121007d9254d150cc977927e903bac", + "0xe90f93265a9d7867c944b7192e12965bbc4c4e8cb0c7254c2db42532a7a2bb73", + "0xaae605c6ecc35897fa941c4a09a769c260c332a085e89aa8ad17f4d38fed0753", + "0x624e55c905ddd77cf4832683274645e10c48dd260ebad13e5ddcbf736fd2d9ab", + "0xae36858cc0dd2f35c7fe34127f77304138c19ecf500cb6629fc3793633146239", + "0x245885a09ddf383321845d293572aa059b5cd022271f2e3f9cd38e3ba3f6cb0c", + "0x04bc3498c84ff9fb5e01ab9c013a5e741df781e013ced7537de9ace0578630b9", + "0x55a526dd034e87063bf86d676f6ad97b83e4391df89f5f9367f3eda470a41f29", + "0x1a152b282e1d949b8803fef764e52f16302c8939aab62d53ca5099fcb192b00a", + "0xc42969585ee1cbb07816b2d569c69cd45435c02b952a81e2a6da1b3bb308a783", + "0x6855a97705f9db1dbce2479c8399829e5ba744e280b248c39112d554e8eb1e08", + "0xfdb86202cb249aff44b498ad1b8c298e68b00d18a78e4a8d79f81a7ce011fce2", + "0x4bb229a97da35dea56bc838e5360b3a8e487235431f54496fb3d82f390513019", + "0x7e16032f6ec38ba31ecb8e2ec27da77abf3e04862f0cb29272b25263fe893674", + "0x5b0b2013271895023d2128d54188312bedd7f94f508042626e9a5b6355620992", + "0x7f457f1688ccea4f900c4225568b0b53211ab9b9d4141e05b3f090d35baa6dc6", + "0xfd12d572cd9674283d57ad9ed1b09e6d23f6f709daa18a95fe87c56268ffda28", + "0x6e7e56c8a820fb2ef01b046f024c637cb246128f9508bbc58ab29b99d72c338d", + "0x53bbf016b4a55dcdd2924d30a62ca01e8f397cf31a8f54cbbdabfe349e64ffa0", + "0x3f4cf9d73818e2735c4b3cfed3365884e48afd69b2b0ccd89b55152baac1512e", + "0x71588b23a23ab7b35e955be65affc7a8e1b3f042e896f809bd72a2a54a5401db", + "0xab830958dcdc452dfc83ae2a01e67ba2f25196e55e546bd3b63e26b57938ca1f", + "0x178d5993c3a1af7952f763ddf798bc991a6a9fe89d63009c0c6a1f194599fa13", + "0x8e0447251ba26d017420d06694a6989fbb90feab5cee6fb21a756324c62219a4", + "0xa3f5a042b7fdd182188aac2042429bd813a373a6144e16e0b5b0cd4bd23aef10", + "0xe6853a6377cfd347ffa7083909a1fdc1c8470aa3f5a14c2297a897caf533d291", + "0x0f41c615e9cc322090efefdb92b16511cda0b42a6805023cf977d4662954997e", + "0x05e6976fa27d04393695aeedffe2dbbc350ba77009a9c214f4d2642d1392e6d8", + "0xd468865424ed556c89de8a27d1999bb9f140f20be787271f3afc4cd2f768675b", + "0x0737a857038a157a0e2d839abf3df94733fcefd9133ce96259228399c0cc834d", + "0x1ac2e20034e5bfc2fd2b2991ca7fcdf616bc42a44f772b70459fcb9bf7bf5770", + "0xc0685dd918de5c0573fa5cce7fe698b8f398b9926fd72b962b4c03ab068a22f7", + "0x283ca13b1ad22ba3813a5e58e91b99cb368dca8d729393e3b1bc09240d32d40b", + "0x4d8ceba5396f65c7944b1af5b0686631f0515b7bcc408743e0e4b806b2225421", + "0x3392667a27109c1e3b1481670537df4c3cf2c02a156b6489e352147c2b53258e", + "0x05c55b996e0835f2262100d2559dde635147b85688f3d0a40296a248145cfd28", + "0x8fb48e8a9b07c08dde30e580524da6dac7a1cc7173ca6deb7d899bc3682b6a39", + "0x425bd7e4683a77a54ce9971f415f988a07346cf333c2620cd9518490d3519cf8", + "0x2a085a4a242295ec378f3c3a71ca44fdb07cafb9a07dd4510e79d735cf444081", + "0x41a50d1a9c8cff6912e878e2d9d6cd9fddbfd518f90a7d30a7f77a8f672d28da", + "0xdcfa6c262c9cbb90248a26dfd99e0baf1cfd5ecbab9482d77222b54ad7916b33", + "0xbb66f9de9b13cda120dd1073e4dcc9b8a0c77e1cd7c90b253f90aab6474f67e8", + "0xb4d895d271f0825566c00ec548da16772da0dce0b67df0abf1f42f990c6446e4", + "0x26bae23affb763fd772b9c295e9fbf86e320bd229b610fea3f96267c47bfd488", + "0xe2796f3b29de84c1e6372d1563e249742b4653bdbc5bbf54fe817ff9e75c7497", + "0x5a8ffe11f7fb77d9eae8a3dfa9055f8b2f927e390ba580d7608c9e1f3440e687", + "0x8140d398ce888edd23d9c02d345ee27c0f8ca35e6061a359b9829877b41fa20d", + "0xef038b71e31cfa731cbf397d72898ad567da9e738a346e2e5a4299e0951898c3", + "0x8abe2e3bd91de4a41ac3cb54203877fffb2510169d0c4019de6ffd036ea615c6", + "0x58a6e8b582799560a4219946d52166b554ab9392825c776a375e747c848dc47d", + "0xce430b618269b1dfb846e434cacd8b0ececdb7f0f3f7e6cc29ab7da65d519680", + "0x547a8ca3474347927139520953affcf3d8e68cdf4770fc49da4950a93eb3d087", + "0x8939b6bf1da0c26aa4c5264a3241489e02cae7e0b9c53262fb621d5cb98034aa", + "0xf83f9c667a8fae29b6f0bc9138ed4331246437c3db77cc81e623b002a8cfa931", + "0xefafc4cc3d7ccc48d75ab8d3d4d153148ce7a9792fc1f38484dad6c5245407ff", + "0xe0c8e9b9cb5a4cdacd6516d44b072a2993e21a211e9b6292868ff50fc838ef99", + "0x880a9054165ac7327a17b6c0a8d3883b038e7578c8f7727bbb0ca477cb34b702", + "0xc4afc2bf9c1de5f8bc512495a8bb1b4ec606dc8f5ffa2bfcd0cebf5d99ac40c9", + "0x201422019952967ff99e271a7eea4c01d616edb9a6d972e926d9ae8a5d5addb0", + "0x4df1fb4c34fba4c8eb5ce44775ff2f5e7ef9094326a800c899c428136c57d4b0", + "0xd24164e0afcb4eff5dd05758eda40268c6085a8f8487af006d50a9c39c68df62", + "0x5a5fb603f2403171871f1c8dfe32b2fb2693fed701c0bb46800af9f6506e7745", + "0x0983b029c2baea9d44cb1ddea2087b4f0fa6a956ab6f0aa072052369e9462d9d", + "0x4de94a20443f2867f4a4da5a553933ef07a5d40409bf37e6d0b0e20a7edbabb5", + "0xedfeabc0fdc51114df2f008828f486e346e84e8440fa385b655ccacd57f36438", + "0xd81d3cca2273125c6ac5a5c9e246e5985fb30e3509c74ccc317e872448c48d39", + "0x67d5507adb24369c70a9e23ca120e449d30013ff36d54083a2ec5ce7e27544f7", + "0xc42788ea0a75f0e0f47f40cf614980ccb396059c3685c157e8b73ea44b4efe53", + "0x3f50107628150c8b7f6f102a39b295969bbfa7457cfdb007f83a478496846876", + "0x9fbd1d647de7d2d441be63244b79175ecd0f00efaabf50b620438ef418120186", + "0x9201463c17da85fb2aead6dc0977782fb9b0ec80489619b07712be1e713e2a53", + "0x50e601d9fe11879d099959f6fc7bcc52c3d28a7557f2174b6c80a4e69d72fc29", + "0x0833a425763fe63e4d3dd4b133744e207ebec5c16cd33781124d5a1312ec205b", + "0x997d3bf7df56c424d838c1ff1238a2f5e8438ad7c024bb86e1d536bec8d10813", + "0xa3d4ee43538381ce7731b0814030ab344b56188423a1fa23bfd683a70bc6a32a", + "0x008f63e3f38f9fcd757de776644f505df7e08c993c7cdf1742bf3ae85447f4ba", + "0x17c75fca2a3214510e39da02c949233faa1fa489bd6e395286cf22935fdf9edc", + "0x0a3dccf92be8568a8030d4e93c3cb8d005fb3dc149c2651a619dfef3e0e2f7b7", + "0x3869bb5d95b58060a16cc35c339fc074e84578abe915aa2b4b4c4a9779e98d23", + "0xcc208015c55e0e90ad04c6e10b573ebd4ca314d63e90744fbb047030149829a9", + "0xb03326ecabfa81fb4d57a701e0308d6851d46ddc7e0b932707772451400a0519", + "0x6366388019d9325046424bf9bcba7d283701692553a0e0d5202c10f23f16d112", + "0x57216573f60c991cf1be93dba6d8683092b765c6a4a62c45a97be0a2a038f8cb", + "0x3b28bba2c54dffc453d98bd95b0137345154b7546c9830c4e48751c50c7ddd4c", + "0x6016315c51e965418fb50031728f0baeaf6bb83784a7aa5482188ea4ba538594", + "0x93513ee2b22d317427232fba955e794040f23fc60c2ad7046b59ba6fa79880dc", + "0x58c2b131ce578a239bc6e344aed34e0b1907078468f52c6565389b687b443ee6", + "0x6fb649f410e24b59dd84eb3a3758211501923a2fc685ff504b5300b6ab9b29c1", + "0x85803e34062982a0ad9dccc2bfd21a25399f25402676175744e5dbb36c3ebc6d", + "0xac52dab7987e01703343eb3e5e3f889e18a39ee4e0afecd2efb0efe223763282", + "0x06332ef3f28285005258d375c523e95a3f5dd6c465ed810b053de9a27bba9a7a", + "0xdf14f0fbfbc16be422d42f66064709c6200f22873eb7f8e64457ed248764f1a2", + "0x1c2d219b87d6bb85ebb9e3f0dcd2f2626d37fd48ad9f9b6f18f56f8671ab5d7c", + "0x71d2e79a2295bbf8732ff802ec1243122e34a55b277c3e33a664a09dacb94841", + "0xf130f0ddb4367c005c3ec58ff3da025651b669643cbc1faf4fce43aac95b481b", + "0x8d5a3736c7ce7c603ff45c9b77e47b47a6c15d344e84535c37a38970d36bc2a9", + "0x06e852c89680a41d84971ba739ff9da471ee96ee28b19866f84eac48ba562554", + "0xd7daa76508f044548c5b2f3fb5a90ee0fd033d4404606cb4112cde594f67b116", + "0x44ab2f2645fa927a64d6f4b9393561c21c9167224092b993ba9703e050d590ca", + "0xf4e160bf5716e176ea248ea61b1d53852552d094390ac0c916abcf478db15030", + "0xc1269e7390ccacae733ac516ba58da6e4ad73b9321089420e5373f0e07d0dcb2", + "0xcd2e06b7eb82f903799c12b8bc2e8dc14a4c5be3f51146b552f6ba9cb7e4f91e", + "0xb718a2571ea271f470cf05af5c1a4be37f82dda304c1c84ab9d6add4dc8786e5", + "0xe713a00d8f6f2e794ce8da3427bd0e938a81abbba7fba6fbb053b43fae8034aa", + "0xa7b7aafa5fde6af9355e926c4e0deee07fd2a35f196eada57253d08405367bdc", + "0x1e97ed3fadd4d32660d4833091e6ced1b8eb3e99d41f42e9d4e874aef6be3217", + "0xbca4b08bf368d8cf7d666c4d7c5d8d10b034c3edc7142ba2bae857598e563e51", + "0xa83205e691d306cc69ca5967432fba70cccc68104e5dbd242035b7654c667815", + "0xcf5c446b8a20f874d5b8390d97e77dc192d65507b637c14181b8547daa10d9fd", + "0x02cac826b7dd1c08501284972a44154c474d3bd3ac5f4994d29a91e1f5d3058d", + "0x280c137e3b0a5314602f361ff8c8dbdda06ebc4f9dace21681439f44f421a3f4", + "0xff05091818cb32578323d8c60999b2d29715a043b94e694c76a50b94b63ec0c3", + "0xd8e53337fb619ae660281135ef1b324c7560b3d4cd497362aea57f0e4c2d18e4", + "0x83cd224e7c0432792f2d9f16eee09381ce52ab50c1dc5a57ed0c1659c7f4ee56", + "0x054993ca9efa566510ee58894ced8c69dac411424e6d1c4f1f6dcf2917e3517f", + "0x858749436fe2dbe91c57e97795965d4309a125ca4728871e080b14860bcf92ce", + "0x11b9d406a15f339c0a4d2a4592a14b59b96d2f912ebe246c2e61081461b03a66", + "0xfe1ac66bfbe527c51e41106ad46bd3febdd91a62628cf44c5647a1a23f5ee1a2", + "0x7b856712c95bff5c7bafe84a8a01f0a3c0bb0482366fa73acb89e0f6e07dabd3", + "0x284fc1319e573b1d3540a41885e03db2313e80960b06325881a1143fd86ce8bb", + "0xf0ce8af7a61b5d59e0daa08ea300ee992188ae898e518644e942efdf6303638e", + "0x1ea31970c2061dd8e60d439b799a8e00c47604f23d8eb7f9cf3b7ea685154be7", + "0xf3d30b8983d1848933674b22f54cbb54824dccea8c4ef7df81ddf6ecc0b4fecd", + "0x36ea20d41ce18f8d961992485210f7278721620d5535393c78245dd273950166", + "0x7245821c7b5b52d5bc677b0c597c8fa0bf11243b68087a763a3c4e37f9d2b515", + "0x3278f59c112998ffc5c089f17e240fccc312c29bde37735d4d30b6f5b2d3e450", + "0x44824db2abea486e28507b493224a26c20b668bd77b5b258ef040b219fe7890f", + "0x3062eec5cf8be0984a32ccc9123f43eb5fcc7a170969c90ce2fff582e80b3865", + "0xeca64b3fa1d26e8a0117b5f01f50ed0ec0d2c598f39dd6dc292bcf630fd08657", + "0x14b514569ecda34e0f9ad2a613a96acdd558bce3787d1ffd23bd62420fb6336d", + "0xec116d4cda3ba46940692fbcb84bbd513514948dce6a653502b78ddc3a7c2baa", + "0x9f174f3b7a20a6ddedf8de640492577e643363ab1e0034ad34f616139eb67a59", + "0xcaf0265214febdb4b6671ca6d05d5bcd4cb0292fa0944bbc80b039e5034ef323", + "0x4a05e3069a7a0f1763595f7e9d7c682eaa355ed39f2c8e4aa0614eeb34dffe83", + "0x9b953b7458aa76592c333e5cca276f5fee77ee1cc13394c227398eb28e628a42", + "0x727c5158d2deaa130fbb407fe5105217eb4484bb2e12cef2d850f134c51ed696", + "0xd27672dca52cbb440b8895d879d4d833976d8ad61f5f898c614cdfc69112d3b6", + "0x0d680ad40da25236980cc69040e4b03a84d275124502ef49b83ba8cde339dbb8", + "0xfde75d4d19e2d748579493175617948377e7e0b7af1a5839fe812b93977a83b5", + "0xbe2acedf4e754f646eeb4318853d0179e63860ccf4951536e52a2f6d4b50fdf6", + "0xe20b56949299c2cf65a6a0fbb5321f90c995677763b1e8537f674701135c6a6e", + "0x95d806e82d7d246fa1efc11bbc6f0892a2a450cb47d40b328c1467bfb0de78da", + "0x127ee2f6fa8265e89bcfe59775ac410b0af89372951a5865de2a7e8b5b555731", + "0x0826d22662a9b86c0fd049c9f0cd56c8bcfea96507ee9c822b7ce9a7011b6fba", + "0x315224d60866d2acebf8968290616ad61136a27bfa620f4bdba9aa0b948893af", + "0xa7b29cb77a7e65ed30277a564e86fe9dc40ab251ccd6dd7a6634e105dad9c59b", + "0x324fc898cb9e695c2a7673e5cac2cbb2d672fbb76ed6348bc4c43a2132ee1889", + "0xe7d0699df7d80900746669d39229c699c0630810ecb00b3afe780cb1abbd898d", + "0xf334f25a4c92cc2e79b3c633a49a00f4bdc4dcea13b6c9cd77bbc821a6ba38cc", + "0x307ad3315c4ac56ecc35e7fd6b77128f2755a5b11f525e63e0bd2f6f2ae69f8c", + "0xb5318892e137af40735f092374d65bb7c39b815056f9c567afaf0fb8ddf77502", + "0x819539ab72d20570db2d98e019fc017fc93b9c6606ebf59ba8e9e5b31be168c5", + "0x7e78c1f5e27c216395eb3d9763da1bcd8ef7c19008070132b4a6b83694d59b04", + "0x0374518118372a97f7c86bec9c79af686a9dcfcf66940c2abec27485049fd915", + "0xf860452500583a47aa37197b206175f0bcf13a90d50733227154bb41f0084b0f", + "0x9392dacaf6053fe8433a64b37af34dcacab720e1cf5060fbe80c7d2d3f73cae1", + "0x4c3bc17ee63d08ab63d03a1913ab4df5c6e24b8cf0709db7e381a5a92736259e", + "0xc3ba0ccd301b2b2b4b2d5cd4fbd23861e0d8436b23fc120c9dc86ff5659e2442", + "0x4cdd61ffa6969f9a618c95dd732f8b9be37d0153e6136e8524897bca156d4fd1", + "0xbd1f9bc5b7786cd205a42d6e2f586d73bc8321e06a4c74029636bd2230331309", + "0x4a91806e84eae34df335b9582b4018a2d1f38e9b823f5b780d1f27d81e8bd640", + "0x9d7b398bdfeb71a798392e941226de28a8abc1ae5b9ebaefd017e816e73ecd83", + "0x01f3cbacf791fc2f580d41e0ab0b31520db9833c388613bd44fa176324d9cd1c", + "0xa6dab4dc4aa066d1b940114ac033f61fc007ad754a10fc7a09a01f3293c2e3ea", + "0x553bdd4c68ca325fcb63b0fcb2f7789e1b15ee5ade70079c827000c8631badfc", + "0x546fda30b26590106475fc1093bb9540d2c4cd5782a18102938b6fcbd3632d24", + "0x05368f01715bb20d01b4ed7ab28947325c3d93fa36ba2cc13c714a46d4129f3f", + "0xc6de44fcc3ea1c4cb6dd81e819cacac726be9f818acb994d85a932beb7368cad", + "0xf7195116f2a5a18448193fd40f034af23538d5c6f49fd8f4f1979a5085bf05fe", + "0xaa74e99f384f5746e6d114be79750c317eb2bf9c42d39b1183805c7e3b5b078e", + "0xfcce4ed1448460fe5ec61a02c6f97d84d3217390c1948c602f01aa03118893b6", + "0x6c9bf42b44decb93eb07ded476b39ad9bd1312a221e6104d3bce72714b34008d", + "0xc85e29f3e0753fc756aa5c46268bbbb47f733902a0f363f03809cdedefa5d58b", + "0xce826332a6883e1e1445ff8da5dcd9af9fa80ee50cecdf663fbb74da7904eb0c", + "0x3ab951e50825f6f6301ffb1e328cfe93f9dc601d1b6d773257275658d0d130af", + "0x0eb5f77b4943002e532714424614d639bbc31ad2a8f00c9ce2368d35fa6a0039", + "0x7278f0d3971431659860d4570e3ba3f5f12a6d839ed6d7be41f9e02954a58dce", + "0xc389e2a42e1f3cdfa2fbf0aeabab5be64c068ecab99ccc073547180ad40e7dbf", + "0x855d175a6c22e578c1de3d0b87834724a56867e94d0bdd5eaf9f20fc411dda17", + "0x51e8b4e347a80f698bd9db854c0d6892a7d3225727ad896698c4c2d3023498b8", + "0x044ead2878d1a6f454c71881381388b207dd5e14550303a1ac9a74636fcd896b", + "0xfccfdfd9c60bb83d6b021884f569ec4576add6ae82c85dd1d19043316fea7895", + "0xc77ea57cdcf46d30fbf03e592fdc38f2a38fcf91ad8f90f322d228e42767793c", + "0xfd5e826c84a82c6fe76adadd8b79c5316fadb59cb3ef16c53f2b5001b61d210a", + "0x43bfe5f0e20fc578430b17895922c7eb37b84dcb9550c79cc92a3494133aab86", + "0x357f5eb1e6756b50ae39a80120ebb83ebc88bb30130ebea7a59da735de0b6d52", + "0xb0a6abe4a323c2cd24c21a036aaa5a893b5c1b7960d6334bded2da3b79595628", + "0x376a933f17ed8158688d3d21c4b911245828ebf3ee04bac36b2aeedec5e44dc1", + "0xb5c0ca679d7870c3640b9d7d928c041d60021601cdfa49ba5b280cd90241a7ab", + "0x37c6fd470099d01d579bc51dfd1bb7b9c87900ea8c63e0d283b44dcb18cf3740", + "0x897083a3699e55a241e524919ce1f483bfa8d66ef996c51d4d99361279fdcd51", + "0xd4ba50801efef0184b66e29b56d05d70ddf9deaddf0ae10b351a2f5a64e94ee5", + "0xf4daed74c17f344cb6de072fb42cdaff7736ca7f4b7f2d86fe8212257da736ca", + "0xcd60602cdfd58ac42f2d535fbb7d8fe009d98149640d72a2a2a03887cc804449", + "0xb0f2377efcd4ffd4ad7ca0943bcbe076e83a81cb0034ffa89d1ad28a43081cbf", + "0x62c44d9939642098240cebd4b82cb7d2312264652b22eb9c769c7d88ef18f070", + "0xb493b132e87ccddcd6dbd0b3a4259526ce1fd3ba427240df1ad81475c25ba5d2", + "0x360f58226f9dabc78ff2a532b819ee0996224aa389c5d5dbf67409a5065b9c0d", + "0xd9fe6d781deb8209b19db5704b40dd644adc2ac6fe5bcdd19a0f9c2f60898361", + "0x06ef9ae44d803ba59e359741314f660a22024262428089213a7f10af543d5321", + "0xee06fa53098291e32400909a5d18070d4c25ca449b217b3c361cb654706c2b1a", + "0x04ce2d5551735396c109123ab3cb1e41f4e0a7877dbcdb737410fea055437cb2", + "0x84d71efb344231bad4fc385fd69ac732861ac7af21b383e2521916c868c6593a", + "0x16310a24107da4fbc3ca801529c6e7c7f57816d606ba3171cdbb1314048a8b25", + "0xc9d2a29a96bd488b7774c34bcbedf541caa41767eaecaa74dc9ca463e1163d3a", + "0x81c6a09ae02edd0584124214a5df98b8520f9b63c19d1c82042724ae860ebe66", + "0xe588657d72617a6c54a93b628ea4249cc0268d7ec61f18e864c45042879cb8cf", + "0x9d26e5e113cbf9a05e924be913651057d828cd25eb9b53591400b018450aa229", + "0x53557c8a12b0c17510265dd1d01dc66aea588105b91d38cc4bdb15e4aaa861bf", + "0x76ea87476033b44c9276b0b2de0e882ed8ce5041adfdcb553e45c759029ef48d", + "0xacd97e5db37c7a3748ad833f4a1645c34cc3f0a611f11759622f5685c92848bc", + "0xa883cd47613b46e4323b14b64b337e8bc1d1226196a6a1bb0da3206204c97408", + "0x53efd395aef5b63c183022f98d52e7d389a96f12adc97085583b407b9f42d105", + "0x4bd2a41121286777ee3556879be8e2239d22f484917e816bc8e4ca843519cb88", + "0x89a8c2e32a4bd621e0f23164aca7c2e6a0125d1c110bbb5d7cea5efd4697a460", + "0x92f9d705c88c88cad2cadee358fcfb41b107a46a4afef58f128b4f8f835da7df", + "0x47e62e3ec453c3d9e57f078480788b9dd74dc987cfc2ab8decc325c6c9b0cbeb", + "0xf457b19f593bbd0452a965305994220379e19d96737d9731a1740b01149f51ff", + "0x62ee8ee67dba1e70b30df35227d76e7b386c78bcc0262d6a9e059e3f85e4a8f1", + "0xb0a130a355c47c406ccd1af450e39fffe9fc9e867d1c6939dcf3767d731c8993", + "0xbd9dd84ebdbb9418a1dfd2c57c9271ea024abd47f8656c71810f0f1cffe2283b", + "0x45ad6f082117859bb8b988a7c59c3e7e70cf743d6e6c9c0f263dc121d2bf9c48", + "0xc4a8ffb84279272d032464f70f443608ad5d26eda5837a255b1167b5d2166980", + "0x4fdda6cb1ad70527d021c1a9815a3fab0889088a022d23436957d370733482ef", + "0x6d3fe87816cf1e5a51f3959cbcfee2b3410ef61de9841cf7b0454f3c55db0835", + "0x7eb86ead4d2a08ea2bfcb8908156b40e48c9ced3239435f1111418d886818a89", + "0xaa245ead854f6114835d5078d74d74827935cb5eac24794a92cc2f1e75c881e1", + "0xf2faee74b4e91c8facd64897fff389211577154cd67a388380672b822e6d83e5", + "0xe7561ba52dfaf1197c84af04d3fe070288bb8a6bc494fc3e0281a833507b22ab", + "0x87ac3d861ad5c397cda1a3594b12aef878e6f89a2c7293b23dfd833e18492548", + "0x3d9b5218c3a7f3e7ab7704f5ee6ce7281cb8da82a33923441bd2f9210e117c2e", + "0x63fa6d289b4ca890001bdc1751fc3fa341e161f4c83efdad7f2c1e801acce49a", + "0xee01e88af73ef0bbefb93531d1c219ba9d93b635921db3953c128f4560acde24", + "0x91fe471a27189f30c5312ebd018322a41ce13f3ac5d9553d96dbe5c52d395200", + "0x99e45722381b9a8881d3be36b4ca2e48e0af1a4cd405f819aab5325adf1aa8fc", + "0x7bcf7a96539e9eee9e0fa802f8f7c6c196ddc5b5a6d661057db2fffa11996a91", + "0xde6b84fd4a401b99f54cd6a6e1664ce34369b23caae87f1a11958002284adbe2", + "0xfd17fcdfefab26e4284034f858fce86e184629e621cda48b529eb1c728b6a587", + "0x2e75427e33e0eeab27d2861a8dff35280156ff2d6f49ebc7c7d9783ed698ff23", + "0xa5a610b4d6ab1cf64995e579ad002413cb65991b38e870aded7c1d2c56db6d9b", + "0xc477485bcce1dc78fbada07358ce66488e1e07e69445834d8f0666607b31a604", + "0x3d2a49320af03fbc986e653cfa0f4748c0f0709ad061a028ccc1105223755dc8", + "0x39c22bd4aeadab10a0bc8014f5e6086c6be8563edcff73e9b2603ce579244636", + "0x509b2a544768870fd21ae2b1f4f4d1ce58b1e9759209818241e0d6d847f5340d", + "0xe2742910f6d34ba0eee958a11ff7980fe83ae61530f802eedf128af253d6f388", + "0xa96e61254a4bf2c365a61306b4097efcd2d92ba00f9cd1e0a4110186c2d90af4", + "0x3bcd2dbe645990dfd54761042bd63cbf633372276ae4e9929c1d82a835b456d3", + "0x2b113f84803ba0536e35381ca1d060674771264377fff821e057006bda97dd7c", + "0x3b662a34635ef80d54c6978e2b65f38757332abeb43e2c2f5420d554ab6e0aea", + "0x3e1496822a0da2153e5476c97c287dc8f8f5a89fec55a9abbdd979b47e205960", + "0x33920d13504b531bd39be9884fb2ee1183d56c1a8c6b458fce241e36a7330409", + "0x07a4cb0f62123b089f8e49b6ac5b4aaf15b75bbc5923c85a019b90a542ea115d", + "0x4cf0dad0eab7ac72265703277eae7c65782954482df634e214e8473c15eef072", + "0x876e4adf62cb1218758f74a7ff054b8a31d22df505ce385431f27e83e1ef667d", + "0xb41e0ea2779e527f524c529dfade91eaa1fefd68898be5df119ba5c5debc88ab", + "0x8a9aeaa2a6c111906cafacef446985002da828dbef1e6b17617670105b80085a", + "0x162f3e5ac3e0e4d97b6dcaaa6b426aafa80db5efe84944cfe616ebbc6ee11d3a", + "0xdcb9962a96557a6e1abee4705625e4bcbe47cfb30154ade63c677b6fb54cd312", + "0x9afa94f2afacb2224f62a0d0adda88c9f8617b8484e3833dd681b262af289215", + "0x835c77c064ca5c0ff520279986eb3b8c011d3f03795ec5ba53c2abd40f6d9be4", + "0x31f812523ec0705b8aea412a8f9d9039a84f10bd9ddfc9b4e05da75cc93a8871", + "0xe2b6a4c035dcde0dc6e8ddfa93be28b9cce4d8e981347b6d36e473b81812832c", + "0x321b80e522c8dd31db601b983a233cfcb2c74272c718a33e6ed70d496bd27b84", + "0x07a865114c148040c3ffbb24da9095b7e73a0349ba18fadc7bfe1da2e8279ecf", + "0x3d0c546a0a3a611facd37da1a4e6f46e557fda73122a2433682362cb16a5252f", + "0x02f3d6b72cd1a1d53ccb5d2f2ebbf40fea9d70b25f835b23795a92bebb2621a6", + "0x756f846220f348b778fc6b013dd019a365287ba3e1ad8f1cca780bd8d1853f0f", + "0x3f4e3bab6be10e0ea726813aed84e25bffe3c04d6583e22d954015414e9486b5", + "0xfd48468c58568697f564129337752b81aa38fec0e67eb0a78e4b65d3a980701b", + "0x15a24318e4de1ce927604e1f8f6ea99ddefe8eda4a99f2dac8351ec1a10b958e", + "0x28197f22fcebd5e79155f91b0b332d947b8fce84235067119ea95f113747be14", + "0x1004cbdbfc069f1084a05f59aa0810a016d1fdbf1daed935fb4bd81abbfdad61", + "0xe75796a23a4012b615e9c020decb50464e28ed3c25d3b36ead125f75e7640c48", + "0x60eee67b7e2676b4300b787b2df0f0be4f434e88cb50af66dd8531f2d6ad678c", + "0xdc30678aff2ae50378836333a4c3b6f9637c90c2642b9e1201c2349626475a57", + "0x9969844a438d5b040e972aeb87b6a0be03a45af71adadc1cd802659cf8272b37", + "0x1e4021e18e8b53598cd9fcddbd37419ff1b3aed7efa81a4da0a88fd11af146c6", + "0x4d70d0e076a11c72b7f1e92b56d4a0bb1d5f05d141481211e9e8b2faeb78f042", + "0x899bf0e3903971083800ff9e9e517ef897e785ef0869eca459b0a5e210562c07", + "0x25a4f8258c6e668c3cd54beaf10703b8d2d3630413670608c673ab390e5209d6", + "0xa5e7826501ddfbb5fc334c5f373d405ecd0cff9756ed29ae8fbc1a0c073ec280", + "0xcfa4ae8559503cd533dfcb2638cb625ee055129fa2be39b73e3814c17de72406", + "0x47288569efacfba5f5f9372a32d35321266ec4de71bdc8834529b1216b6ecfcf", + "0x4228ec6abd08230af654e15d94234cfb56fb53ae8a69c7a81cfd0b0bf0bc6184", + "0x7cbc69a239cdf89e1b1bd03dc4e9ac47073abc22218808690b21a29457ff5b20", + "0x54cab9ab46116fcb83ff9dfca6c42ad215d07c5085c841d9849b05c9610700f1", + "0x40a4d7c40aad2099501829d28803cfee9a00a3f407777c7d99020a7f6ebf71da", + "0xcf8b3d2f1d8034f97b6b6094d5fe6b2c867b5777507ddf8639830b2cedcc781f", + "0xf6c5e2ecdbdbc38bda835dffe62442349bcf4e2408229d4599231538337c8748", + "0xc28964529ac7f231c93edd8bd004709447508a6308bbe2360d0fdae3d227e15f", + "0x9c36be8c80f04269afb3d940cd18d6fa1572d27139002e70e94a4a88c511a2f8", + "0x84190b95d9cdbfe62d28c76c34af19357c8b57f87ee57a3f37d6852b2f7013f8", + "0x91ed9fd3946e2d5381bcf1d0cd819a6e7f41946532231f988bcce4bf303324c6", + "0x008efcb812b80e69f35ac5ded1e6f37b90293deb4d18e53d877af868a58a11ea", + "0xa75ada72e42d18922374c5081509273de09f35970d13f11da1a982dd2762fffe", + "0x804fc067668817bbc9251abcf16a54b9971f58323cfec124bd57db502969054a", + "0xa77a5349543f09b47ed3e38615dd62c94bc1e54399cfcd6a0bd3497a1d212e5e", + "0xf517f5d20929a6e1bc51c8b10323cd54903348add970b61509db8bf2a5cb0392", + "0xac637563891c2fd8953591643ce9f61cfa883364ac2dbc5af63fa0eeaa08de9d", + "0xf5c0756b591923f208b94b125c15dd3f7e13f2f45d7fbdc080faefa1823bd672", + "0xb83b3ab528b3dbf300f56d96d80a9b79f9182f31ff2af6c8b781b6bf46cddc2e", + "0x189b6703995828adbd51553773f2d8f238399e12290beb64d1de1d7d9c2f5327", + "0x5937bfacf2fcfafe6fc1df603f94f8c0075c646c9a802c49a040aac9f7ae082f", + "0x2f8bcb4aa577e0ae68c3baa326fb9dd5f039727559838faa8a28f34b7c103c1f", + "0x6312ce88a129b6dee2b07b68f15e77c8ee9fc1170e3ae2b05f4f2cadc3ec6a55", + "0xc44d39c1dc10ad6dae0fd0300abcdfef406b58f94a8e0111d2447e3bdc3aa9cd", + "0x179c33edfe39da01cdbbec36b4ce2f6775d0a7b9c570a4934cc60cfbd2940ad4", + "0xd6e94a0916e327c9eb0540408fae45e76e01830e597bfea82c6620e21ae631a6", + "0x06f274ad702ce8f5a584349b6aec3d826a1d248e7750be091aa07d7a441babf8", + "0xcf986fc90805cd16f76518fd37373469b588a27d7c21c68ba1d0d6a349dae1e8", + "0x036b973c1736a5967bfee6301d1a6e7af64e5cfbfec3066a67f3390ed5b87191", + "0xb221ddf6c6b142bddb69aefcf3ea899f6a22d6e3ebeb4e8e167a6b19b6a61b92", + "0x2e3ac0d4e5e25aea9dbb3f7a38a30582b2bbd29819553cd61fb2290cf56d481e", + "0xbe99a85ece700718bcb96a4527e1814ad4c338305e1f1f1af48a1bdf13886bee", + "0x87a2f12f58b0f326de885a8f081215bceb8b43ef8fb71a24ef93da4f2243bb93", + "0x84afcc3bbb52a5fc24537e700c55ec6b95ad959871f589253e6084e7e4237bc5", + "0xc671e485891a37d989c19b180a78b052f1c41bab4969febfff2da23b175494c3", + "0x9f285da613ca467ed9614ac5583c3118437aefd01a5034b305a5087fd19c406c", + "0x44aac47388129ef4b290983e58b70ac9ef523628c2130dac4af249fa64580d12", + "0x68b329a6e60e2919d3dcbea4c4beff28489d231ad973494bc2d70aae4b68892b", + "0x3d042a40cf48842ca8bce267ed38357cf52788f540af87d23ec3711d341c1867", + "0x37f134fc6d47270a969b951addaee057a9c382bece4834a56021cdcce6acee5a", + "0x997f424224232841c105af9b6ac92f99b17f487eba64ac8988b7822c401713d0", + "0x70c9215e11c0aab6c6895e54d33d500503ba138df8dd7e78f4bde2a17b93f8fb", + "0x63f3bfb4c54128f2949180842693cccc6563226ae52a073fdefa9da87b09732b", + "0x6a678a175d8ccc396355bfe2cb42c51a7b6d5181579aab2a645b6e5e45fdb22e", + "0x2e322919b50ace0d167b30da44ac8cb2d87d7ce1386ef6be2e42709491718f0f", + "0xa38ecd5580a67b838c49880ed9580aa1b4310dc66d6da21f4c610b08f93ef984", + "0x211e941e8972abf1cef0ff284abfabd551bb9dc7fa25a822f87225c5b5a0350e", + "0x8f7bb8570a07243910c67e43a94e4bc854bfff038f33b73d47fa7ebd114b811e", + "0xacbe9eb4a5c1c7397dca58158332e2ca6708d3c3f388f10d489eb9dd5c4e94eb", + "0x6a2979a3758824c6abfadd19baf1b186a384381761f93491357f54112fdeecf3", + "0x71b4356261682f9be9541fa695d56c3c2c4fd1a3cba3329f441d905024a253d6", + "0x17521c2ac53576ca6fe205495f910acf8a676f353c6038537eab45bb323f93e8", + "0x4466ccef41ce9f524ff1c60ceb56f026b24b58351a90f980637494d935c12195", + "0xf51beb0dbed6367d47dd6568664bb6523e3a4de0eebc7893a2b9f5965ac8d2f8", + "0x314b857d3f6e5d17514ab89d3dc8d7722cf6063c42ca23afa57be8aed30761f5", + "0x8bd3cb245c45060bf51581fa2dbf6e9ee41ade3080081b721134800e220bfc1d", + "0x1d2c1621d8257d8c5fbe717d046a7e43789bfdbb8e2d4a8ce36d1d99ae126c79", + "0x3d097d7cb7b8b08db4c531022effd5c3a334fa666a55ba6ef42e6761da3794f6", + "0x73edbc1940407880d112672fe9a9050d97794313174bc24034803255d446d1d5", + "0xb4f08ba9d5f7a537a3969ecfff0db4c7572d95695d96ccab2acc5c3ce15ca8a5", + "0x4fefaa4946e67942a2f99b938a576a698835b6aecf8d3b0cf3722f16265dc6cf", + "0x3922efb8e5cb8150ea9ed0aca2a38c9fb5dea6cfdbd91a28e1df114071ba171b", + "0x461906b8bf7de0db835ce4781976435454319de68a15250f95446fffa8b19624", + "0x5e07b47f0f5979469d2eef9c7164bdda51c282c2eda92867e79f1c8eda5d8d02", + "0xc314ae59d4cdfd61b544f6140baef007e641f1fe7262a0b1ae62090380219a56", + "0x01ec2c1100755b7ea2fa55af062d0613413948061f44154cac5b1a60102f730a", + "0xa59bbafd3b759530f957b6de2e6af5f2689f9f83bc3ccab36641079d3845361c", + "0x13269ef9a96d1172f44e1a2320e5223cd5a0687c484e298601701e2b140075a8", + "0x471c228cbb5154cc78385ced80432eec868d76a7718437fa95a6c22d2aa5b33d", + "0x5babd466acb34b53f51dd1e883f9dc5fdf0ff9428f1acc43bac527a29c19f478", + "0x07d3dbda2ef389783dff4865411e8f50d72a95cdf554f7cda1c127e1a4410d3f", + "0x8528111bb543d2a275320a613cb46f25623d40ad480495c2f5aa54605ce67fab", + "0x16fcc2ba08aacfbd9578a722dc2125f1eff8a246f122ba4ecaee21e90e188598", + "0x84e177242cb73e63b8b18b805ee8a9786e60e4098bbf05aba1e2e4825e80dcb1", + "0x3fbd51d54247533ee187251a5027b4dfe477dea4cb47aa3f54509fb0078864d0", + "0xe55a18b13b75084155ffb84c3a5bf7380eb8fdda4b4b441782661423625baea7", + "0x966f713f6410cef1c323ccc938d7c52e80d5019fdb5300841c3992c4c8dbb7a3", + "0x6c23d6c6cca9622c31154ced642e9572a66f1a699c29e77e559265339a2bba5e", + "0x554ae350171d09b93f40b460f034a2c146026a23b0dca9806bf2644bfd5dbc94", + "0xaa65276bd6585e45ba770fde229724a444c01b7c0ff42bb55ea6026a53a26d3c", + "0xdadf46090779bf9147d039fa530e0c36343862bde714678bef2c85e0c21164eb", + "0xb271935c2d29c5faf5447f26c15eda829f01f88127926ce4aa81b581753513db", + "0xf0e959d2f629321bdb028d8c9a5de714600b4736bf46c041b57d3b83a0705a94", + "0xdf1499dd19abaa95ac3bc2223354209eeb779a6a867bb81f2e916663a70e6876", + "0xaf66f05a6509489f0c501a13c183c4932779f95e1a04d18587f9c17433eb707f", + "0x9323d1fa9eb27be59d4f3b8b11fbb9c081a030f4f03f9f743328c97ecec30da6", + "0x97a3d74bb5ec2aae723eed8c8df524f9cbec191f7304e779601c2daf9c483ef5", + "0xd1f55a947c90db92000efd76a742c9bdc7f6056c9d0740b7409ddd19fc8c073f", + "0xfc47ed6abaf1736b16a262d7e9929eea7cee47d9ed1ef2a54818150820a8ae39", + "0xf90f93abd89bed263c5b4cb3b51c44a629b7bc07bb2e06feb3ba2afa86a6c076", + "0x82d1ffd3a901ad7752572e76f81763b9893993beb914e4eaec0ba3369334947c", + "0xdd7cade45b696fc5e52ca59098e43daedc37568a1ec25bc80868761b9bc151db", + "0x37c0da90a3fdf85e740da99c24c7b64f13b6d06854d1740c5d973121b9555590", + "0xfb17ed634b5aad830373ecf8b937351d3012ebbe258e8a87c82d5d7f3b36432b", + "0xa60e2aa09b1a296b0e4e63f4a6bbe5249677f5af33b72a15b8a3280bc2c81ffa", + "0x0e4b7ee7c2611c6099e4d3ec7c9a331e44e1492bc03e9fec27d2a29525987a44", + "0x2fec5182d56b93dd26e24694b3f26e9d40deecd76767ca5889ae590a360daf77", + "0x8e6da7f13e48d52ebedc8e2f81b76fd3a1f22a469cdbfbd4d5ca74669c3221da", + "0x8953dd2c95c7f5f721f11eef2122da0abaad384f2b6a4653de798f0db1c1b9a0", + "0x40b06d0ce4ed2317d5f559b0d9b4856c8f634369d8d24556811b6e9a633ad5b6", + "0x473e8fa4520c50623921abba89d23b5525b6e39810b5f702eba92950eb51ec12", + "0xa0cb368a75e1c8388d137d0fa240d502e589eddfddd85c8350b7f16fc89dba7b", + "0x1f9e094c3453de9fcb89e1b6119b1771d8fe2f83cfecead1a47f7e485a371f8c", + "0x46a105cf73a96a6d557b02a4df507f4383e8078c1a0e3b1909fd95c5217f6e75", + "0xea6cef6fac46652fa4ed3b9c01de0f515effce45009a442e5de644f8807f937d", + "0x73163cb9293f703fdb9f426c4bc0331bc71a00f9c5911ebe4dd3d4e6630eae22", + "0xdd6905ed33ed2704116316070a1925a45e7274071c793e7705f5bef74b8d9500", + "0x8f3a7230a2905d9e052f56e8e755af67bf7458a63197d8d4fc1a8e441977ec9a", + "0x309d075c26ce99710c18fa58cf42d538ac0653ebb501508a183249b11dd0cb79", + "0x2866b9e9ea1d2429a191dec597d236f41cc9ccc40c1a6027d5350a54aef4f986", + "0x60cec333cd2db98f6bf27283e44930fa72a00a71a17effb4ad9410af28461512", + "0xacf92d0251132afe0fa1a74c12200c7d84c1cc7e7290ae82796b81b8f3ae4a9c", + "0xb6cccfc1e4bd430f2701e4fbba009fcf3bc29f94d74498f9899c4023ce1f8d4b", + "0xe706c25537c6dd36b67ab45c7bf9807a2e290ef97084134bb2f8a6c55f2be064", + "0xdb52ad9bd3965f9bd61ea1b7c1dd6b9bb3e481b72e17093acf19d5f80d0b6ccf", + "0x027974ec8db0b1d6e5a1fa1115671451f236d71ca3147042d97b9b0b75d7f60f", + "0x9f9a15c62735a28e4d4d618c277b742cbb24763118042f3f9494dbaac11f171a", + "0xde1590619adecfe1e7a0831c5c180fa4ed70eafbe42e84bdd71b26039b4efae7", + "0xdbf11e73403244b0b449258d280aae92bd82ac6cddd4de566bb249febefce295", + "0x05552fd01548c1935c102dbf29521b2f186b6a18f7e93c67172b2a6608b5dcb3", + "0x35e084f3c927154923e8457cd12a9bb444d708de0d85462c52b344047cda7a12", + "0x8fdf7a3ad51c7cd97905386173c31fd073ffc5306bcd011aa42d60ada37f70f7", + "0x8697c2e4c0e6abf74a42bd0b116aaf0c7a1dcaf8320fd57d3245807cfc11ae79", + "0x3fdb80f2d9f02da7800ea73f99d49de276b70fa9d6398a7a08fe04be6b57f13f", + "0xf8ac9870c638840faded867d2bb1e08b52ce3017811279c0404eb77d139d2182", + "0x5c93cf6eeab0f4319e5ff8ccf94cad57d6ddaabc124f275d6b35380bcd584f60", + "0x1c0f79909bb9e88d8a57f351b2dee534c71b6781fa1481f7380a98af22be31a8", + "0x848caa171e0049ff653e6c11432bb89f248cf67666e636286d261fac07fe3372", + "0x60aced4443e04d8ca6631809a04eb520add999599e24963d00cb2b2b6a5832f0", + "0xe96e2e3832ba27f4607d540b9b850654b49a046b0506be8bd56e1ce1733359c8", + "0x90c617cc791e2fa12c42945d9cb41e943e45e05df6cdd51cc38cba745a63b281", + "0x4473dc1c6bac8cf833aed1d734ee0e60dfc5197bb5f70cb67f64c6a158770a49", + "0xaaba5aae8f36a866165e81f691e9a371be0c4dd167c755c3bc90d4f97673fc1a", + "0xb268b415e289be90d1f4b44ff98f1c34bd955fe79f1ff9733c1e4329a916d62b", + "0xa0608e5eeffca2e8ea8589763a1a3aea6627895b86b3ea4277adf03a063a51c4", + "0x5a1f5f357e8ee4862b0c0efc86e9230015d0774e4700832637d2fc65836e1f4c", + "0xe7492ad930a0e36db4609c81cd8d6e45151daebf8fa1ae461749334b5841d57d", + "0x99b3dd02ee9e107a684531c7b866f1e78f07226e7e2ea0dd8cce2e16a303d548", + "0x12ff9cf1135de89b912e4c091b9975caae36d472b3075dec45a4760845436291", + "0x044e4052b596365e25f8811b4f3a7a85b3ee14586c92b2aea18aa4dbbd211d3f", + "0x483926549c8ebf5afa904a4b432924d3a7fd137949bf116a5bd199f5b8ccb383", + "0xb0dcff0b137267663683d037bc909bdadc5b33ff6c0aa7783d0e27ff0b299278", + "0xf3d0a3758f278cb8bd3c5e0a178a2c87070d6b8b12747226c1af241fdd112edc", + "0xd336da9043a5109881cc071d78b83bbad2f6cfecf2a2d3e5da1263289e495141", + "0xba9f9c99a46e110998143f605a867a316d9b6bfa4ef84de81c8d1863fc88b77c", + "0x28e639302b0edf9e1e8d7ed5a8d583738f95f8e46fb272b4006adfc902a036e3", + "0x7e86f4fceeec4470a8ad0d683d26f37db34f439c425177fa84a7200ee50965c3", + "0xe688890b9bc0c5eb6cf0e55f0dda8afbc95bfc436f073ac6f09b594ac58b7568", + "0x9bad9a37c726cef3db9404bd1b70109f21307d1e6555ba31af99ab5784bb75da", + "0x96e4229af1a805c05e43a758b8be0bf6252d31657b7e069f2d9a56106b4ab95a", + "0x61ddc3176e913551edb3aa1ed873b173c15a2d37c754f52a23fd8a6aa8f22981", + "0x114a6528677a4d32525cce31204f4a274c5d51d4045f0cb28b8944a29342fc5b", + "0x4c936fc65dbb8ca9a1dcf0508a9bc659a4583394a53ead72b9622d019550baa0", + "0x31580da7ce9301c4226697ab1f8265136fc0317bcab22726bdc81ef10d579a2c", + "0xf8adc8c07663e31301b9f28d0e0bbd4316f8b70ee012af61de1dd4cc71e629bf", + "0x494405a0f5fa8c1452764d117f1655d107e940844b7a9b9af26e15b7520b3df5", + "0x98d8f1b6c829ab34f5560f9271bde2401f72e10db991c1e96ddccad248856cde", + "0xc8efc79a80e45ea0df723b9d394ee1c659d7ff980b1b23258515cbe89d94eb32", + "0x9fe59168e2199d180bb63b41dd5f8cd2a699d02b75eb6ea80669f72d4c6d55c9", + "0x8a8e9b799c93d8e24e71a11d7c2e29cb1e9e0eeb27a7febd13ff174d33c5439d", + "0x307335ef3abfbc5932e95d94cfd6eecf7475353eb94eb8995ceaf8021e090bc3", + "0x04c1998cf4039a44e8c690ba2e0c5953e2b73b5a5412cba203aecf26bc74a8d9", + "0xab9b1b7d40663498ca01334ecffeec3e1911650f735ba3212528c3457751527a", + "0x321cd0466beca7b80bd888fd4a2a69eedc0cf4c98a3f13f09702c88e11f01330", + "0xe07aabb02de13055d06d7d5529c8f259fa880fa3cbf9d77b23cb1c1920b7f749", + "0x4f2251e9c341f1e9d764b7a1de08af3b74cdfb642d72912b64df0befe7e94298", + "0x6e4d4056556929033f22e944229c5eeb141d1028b7689a242bb9494af1b21c53", + "0x73fd719af3b5ed20f23abf47e1af6e96876d3113b8d4cae1f14f69a187a8c633", + "0xea76498b8967047077db6440a2667b300a0713bfc58a51feb83197b859612d84", + "0x8eca2feff7710b254635bccec17af1b5683b0fe7b6b9bf03d172ee879e2c9f4d", + "0x5debbbc22f9a359b7a0ca382c0c30fcdc0d66589d123179d3b3d0b5f358eac1c", + "0xf1c417b3c8fce8220245f40e9d0f95ce770de1535dbc14242877e9d08a529d3f", + "0x9b308f5752a16ad3d7715b56a7df47057bed1b06a30a479f09d467066f1a697c", + "0xc3a720c56135630ca4af332c1fe005b7e7542b0fd5e8cc72157655ab588ddc75", + "0xdc61844a64c9c26caef5a9cfd59ea86f8a155067b9513970f4e4766e32e2873f", + "0x124ab0f305778905f30e3e3a0d3e736ed8aa667cf96bf8731bc8e93957da06ae", + "0x73d56dc8eda15410a1e7827ea1d6baf5b3d6b42f3522d702713771ac6b758cbb", + "0x00808b917a2bbab857c1273aa50b6d88a6398306242d8b29a158127d854a6730", + "0x627ee1f39983079a47dd68b95444931c1bd76a3075844f286af86f60237eee81", + "0x831de6f0f15f8bc023d4fddd344f0d4fb99f1875306b96e40d610970cd1e940d", + "0x4eb001b91a8a4ed11e252ec01956805f22a29c99315fa1062aa75599a052679c", + "0x2dd87817e45c7a5f8631b226ed9bd24b9ef98da2ea373d0ee5b69a253866e094", + "0x2b7d949e5e093d4b4e43f568f1a429e636207d55bc001862cfb4949019849c4c", + "0x41d88dcd720db475817ddff2a22c2ab75e9c29a8a00c87e140222c61489013b2", + "0x1892d37481d1de36c2946efda6781909057cb680e83bb468f10f5d86a30d964e", + "0x9eda987d93bbdc3de2da2a83fbe1580f26d95dae478d5d2b26843d43b344fed2", + "0xc6092cda6a690d9d86652460fa6f64cc325e69412566e0868670adf862bcd49a", + "0x1af54727923d411cca474d1d4dd67e97f34145a186c10a65bf3962f419a96406", + "0x7ffd73496a608682f7d7f2d8db21de1260c9509251d9c1a5de10583eabd79a87", + "0x5d49e2f163cdb7f6eeaf2a778b1fcb8bb3681912966de008483b7d997d5a1a4f", + "0xc09df8ec8124ac5e9b83cccf725b4c742c141b5458869ba394ed6764ab23f8e3", + "0x46f40a0524f9a7afb8d8d31622ab3468fac750f42aab74f2b2145a66c4dc2bc2", + "0x30738099d21cd9ed5f6dc9dd46858843583da0d3b29957b2187fb3971da7db4b", + "0x26d73f31256e9a5e1f1d2f5eee774fe09250b32d159c1ba1d7c0684473d96442", + "0xaf9b1ad6158b0b5dadeda93ddd89319a744b4b5b5632cdd92a14b1f9cf546e90", + "0xed1cab59aa51f23eb114141f5c129d5fc18727e026b2ef0680376d41bffde75c", + "0x3206bbdea1ba3ce188a4437e03d5d07d2269143c1498c1e05173bf7d05b36a46", + "0xce6ba1fa2d8f4e5a9f371a38d8c8e1aa94eafb329b45b902f9beef22d0775ada", + "0xd7831aaf526b07f38620d7b1090e519b61d3ad2c6bf7cb9230f6f58d446d4067", + "0xf12252798f26cdae6227edbce32b1fca897684a728726f221b88ef6b34614e4a", + "0x86abc41b3bebd7ba7df51d1ca3653f052af9f235f8633e11d3d0f12046007ee9", + "0x7a6c5d29005e6091a2e2fcc85576f9ba2116ce32367f9adaca592e99b69123f0", + "0xcb3dc5c24e3dc3008cbc92f580ab501c3240a64bfe3f62ab05f3c442d950f4e9", + "0xfb53f96159d1445b2ce967fa71d9cac18ea8461f8998b89b666e68a771c3add8", + "0x346da47460951b0f02188417373ecbddee70217e119d6f6ed0ba2ea6827b7b8f", + "0x029ac432992785e79259ae642acc3fc07bbec58287ba9a478937266290f648bd", + "0x49a23b35b18bcbe2ab2f40449754a78bcdf9ffef62ea8bd1a4d83ea528f3ae9c", + "0x61a527fa1c64e8d1ed6f8be598cb7df5a149ab23072477c6072f50e2b3e9435f", + "0x2faeef7d975d012b27669eeb18b8300d02ca51dc8c7bcc34b0fefd5b444cafd6", + "0x0f8e3208b8d34dbc5efc477f14cfebdeb420e16b400efd32cd6023c5507b1e09", + "0xd157d0daf47aac40d28afe1346b095c8b11f5aa93a1d480405b8b1c8afc0ba69", + "0x0da956cc77bbb010838d091b79e6376f6e1d67aa6c3b5d88adafbf284beea122", + "0x2b40edc2b8731cb69bcee295348c8d685737fc9b7b1eb18078d0687f8f2a8e06", + "0x06fa6e1a977b02303b7b2131746103b6227d40a63b91afbfc11fb29a6388c5e3", + "0x0cf089cbb7f09a5b40bccc9d039d2beed9f53b1ef68fd6a3da82182413a6a1b3", + "0x7dc5976168b3802651f1738d6ec07c8a5ce73eedac84c58e084e4aa22143f3b3", + "0xfaa8c1db0acd8c4484757e696fb8e081d83a5e3f2051472ec95afd2a2cf75c27", + "0x7b4b4c317d03bf74935bbce8d75bfd430a741312de511af2c03c15a8255c8fc8", + "0x73f1245184f4c1649491df1eafcc13ea954defb867fef32054f5b1e1f0d65264", + "0x4db585ed53af2b4c8d484233a78a8e028942a40d23e9d0922fb0a1cdb8c21398", + "0xa1e8481a017adc0e751da1c37c17a91cfd141454a28e96d20fb753c3e672e563", + "0x92f76cab19f99cb5afb1f6c86d39b91c977c2610b6205fe3edf095df268107d3", + "0x5ece345a8baba9afd82d71e0ca862145744bd7c8bf4b72af4fc3a6f2ed9aaac5", + "0xa5f9c2b29d06a900ff440f7c0563d694e753b56a2854dac4659de2d7f242d033", + "0x9b0208fc2f95aacb1cc40f859a1edfd4e0ea8e02f9d129f410aafabdf4db3232", + "0x9532f12aa0e91bc97bde54bbddc7a585bad5394671970d45345aeb493928553f", + "0xe54d2358ac3b50b48fd2eb84276dd395f3828baf11f97dc0d09336745cef6d5a", + "0x5d28abd1d31bd29109ab002acc898fc0bcfd52de08dcc50c5ca6cf757dbd99bf", + "0xd0c9991103969397500440a1dfc024ad2c381f065be895a5e2c2d54cb0c2fcd8", + "0xd2979ffe159ba77340470926d5b3fd124fd4ce3716ebc10abaed5cec5c2c9d8a", + "0x7c03d52aaa8ae16ea7afee8b4836a3867db30c8e5d2fae92c1ce68c2e6cb59f2", + "0x916fb8b790b3cd137923c338cb2d61f6825db62548e013854ce8ff4cf97d1659", + "0x8dd0237c7623fccf095ca4e46e23e29490acabcc8176ba12e56d0c141c8b97be", + "0x52bbc3148973dd3339c5fb429ce1345270e226c11e0c8a017cda38dec3824c6f", + "0xa20238f94ae9ea83852b45035a479f50fee9d649da05b0c0c98fd6952fe3f4a2", + "0x2745b0d174d075607e164831bfd681983d7ca309b5abf7914815a19d953ba4f0", + "0xdc95b4f2a390f77e684f7e47956e75dd66081f910ed274e579b175268e5ffcb7", + "0xc06e24e59d28b4f6fa09bad3dab9ffa1c07a564b395835b2e622d3d7026cbe72", + "0x7b497112636612b76d377a3321abe631a222b6b2d7f6992e463cf5606d4d33e0", + "0x8797215987eb5c9b0cd9f21eb8545e6fb491e255f2f5dc4d71bc5fc5cdc7ce53", + "0xb467f67e608e4a7050b516af1d55f0dd448322ef81df8c1f8114229904f33c63", + "0x79b68c87890a148ba03b6c0ca216b7d28065f8af1ebe23cf2c88db06ff6d5465", + "0x656c96e846e6de75f16b44d2e926c8085ee26a0965de0bf8c7bf0d2401a83e4c", + "0x978d9ee624d5ee3757b5a2148d20a126e64c751784c1d32940845a3054583d30", + "0xef90078ea4bb534b9ca254e8547653d7e52170194b6f8ceac83f374121dd0b12", + "0x6e0116cd60ca37900a3de52abec06f30f91f34d9a20e908431ac1af397a88c18", + "0x4888eb45c6380c280d47d342643f55271324e54e3228a8e870b0aae258495287", + "0x1f6278721c816577765c72082bc890195dd94b9d3c112ff3c2c6cba4ad45edbd", + "0x6487b511e60bb8cb53c3f78815ed24a396d2e8bed7575d1895c8039ef3797381", + "0x637687ebda7c801cf66a26dc3d41869dadd376100c83bf71d3a951662f20edf7", + "0xaffc2cbc626d48c70d3d0bcd1667d86e1a98fc496511432612e3106d1afb9929", + "0x5c9c7eefa7ea99ce35965523b436e2b8d7dd320b9bf924e7cf1503ca67d6b30a", + "0x22c494a2a842ffbeda62baad19683812f2fc5373b6e82ece7b8be00c5dadf10a", + "0xfad62a95acc8e4eb1c386fd88e8e3a0ff7d19ebd004f5ed45e8a7f7802ec43ea", + "0x0d07c634e961f28b282fc210d2913a0bd3bedadad080940281d886721c538fda", + "0x2d431642a8c83263954fd7c0f6e36348003019d9568d9d171f724f4756dd6f34", + "0xf962d76908c9d2a6cb9e7ceb7f8b7147720994e0519f729846b6e4f5e8b560bd", + "0x45d5f87964945970e6ba81c57cb8485fde586b41a05b5e4ac7da385d75fde6ce", + "0x7d07ebdd328f8e536351b424942e1880b14739c2f5cfee967a04056e6c9cc12b", + "0x388e92e3102e5511a304cbec618bde931f1f56010ef54202c065c3ec4686e685", + "0x14460220797e84ffc68d01ced33eb64e9bfba1bad82e29669fc3e74bc2519611", + "0x49c3bc1efc367f64f8329ae665ba1ab00c76ef430fe706c610f2a31b41de30d2", + "0x27e0db3c746b18dcb86d18fec9540bc1df18e8c1d77d17bb224a589d80a4068e", + "0xb933b4c8bbef48b335a34528f157ddc4f7c633c1603e52dcc2886e465deaf134", + "0x36bcb92112ea8b857db34f68c1670b6229b2eb7dd5539c7b97b5ba8e373bf1a2", + "0x32c23d02f0188330e2eef133052f28461ffc97d789e9e6202de57cce0a2afb8b", + "0x9f735c5b8257c702560ccf3dae7354194b62ba8d21150cb57b79fe9cd5d2f548", + "0xa6f28dc870680e9dfca80dd958095e106089558acdb615c2065533f636d96dfc", + "0x5ca9aa3c082751eb51c492710f8c6b02767c3b8b57987b326ff4dc41aa69987f", + "0x6df064448e5cb2fb01bd46e8726c4c17489ff328a359cc3465f5ac251532b471", + "0xbe05bbbfebe039e826f0b84cd5736bd2b4c26ca84b4a8195a547b91f1255744f", + "0x3217a4741751898ce2483d0436a330a195a3cbde875b8841e8ac74e488eb459e", + "0x081b1d042637b49375bec86e347ff7408f8f573841d740eaed1f6c77b9ea1f8d", + "0xbabd33314a1271a2c4f3246a8f2b7b621d967c23b665af0a8930e1ec77841061", + "0x2991cb2501802fa9bdfbea0e49afedb6ac9d88a5c4bf9a9bd29f92d33b988e49", + "0xd776e631ff61f340533010e564d8e0d6961e2f0ffb22836e81b0b5f84ec8fd01", + "0x56cf2f1155bc2d890c0e9c4fcbdd9b57020e3506353ab66d72da5ee36db046ea", + "0x6d7a243f0d1027de2ce938ae9d24f053d689747128c71f7fc8ae73b4c7229555", + "0x7dfd8d8588662e4321e4ccc993b61143b518a2c4d1d7f61fe038f30b78f1ab3e", + "0xaae76061640b8f345a8b0d0a4b9beaa0e0668ce4643da26987a255b0c013266e", + "0x6186aeacb7fe0940b710f69d923ff6b56c3c8d1e5df70e4ddc8b080b1c9684af", + "0x8b3c5b441f8f27c56b79abee2ea69efa2c88032a7b6c0e1e0054247244b9fa5d", + "0x8e5ab48d7c419927522377929b8b94b1d870c1a2c52800a0dfebbee0a32f2cbd", + "0x1ab04630c1432c909873dd6546dc0b60cccbab85b047ca8354f16c92decaa600", + "0x03e1c1c0ef846b5ba7227bfcebc35f19dc06809813f4c53e322bbe2aeaeed2f5", + "0x6d12edc20323412e39ca18adb2e4aad76656fec59d15646c150611a0e8e65ce5", + "0x7de54b33d70ed24d7d53c768c443152d61be5925464292e58179d06a0928821e", + "0x82d97f99c24a4c2c02ac11cf2c2b352e2ef420daf9aaf428898f8136660769a6", + "0x3ec29a3a534395405e907210ec03d9c323e7e3522342da8499d73bc7c55c885e", + "0x04fa1ddb763d17b2c412af9593bcca1886c36f598836cbd59125d6289f7ff794", + "0x88611ebdf982640198b1531ac7a98f0072cd65178c05e45176ccebd243ac2ad8", + "0xe39501353a6e2bc11236c48790960d9e200552e3533fcc87b39f24c2cc650d52", + "0x0859922b862889bd07a54ee28534171c8d329415ec33453fa96ec7fc2e441d88", + "0xb100bc9802ea2df0a91a88da009801c7e8f1ef5ea5799687c884aca8c0a5e207", + "0x1ed792dcec77ce61b7328c6804310f3268be600304e6a691d7138e2ed13d1042", + "0x87f0e29f88b89233b3d19f99d5771c8ff22548c26aa0233c29cf5a946164b55f", + "0x9d3ffac4afbce08c6cf2a37e9aefa41b6a1cb0681d595e09c51d1dbca887eabe", + "0x3053e5f7be54c097208db0fc2096baa2bfca2a3d12b602562507f10b3cfee9d9", + "0x5ef9e12b7a499934d68e75baa3af7ba06d88e7cded5944f050a4dbecf69dae10", + "0x56a05406985762aa30120261ec64ddac08bca126d53a7c9e701efbb228b4732d", + "0x39a2ea51bb3669788ce26930dd80781535dcfece82a9aba2c76a194ed275b8fa", + "0xd5289c0301ae93da8be1907ddf0fc94fc02cee4df121442315451b2fa7d28633", + "0x4b6f894058849249a6edd62a0076b88c7f79d045b2e1996fd7353f7a36fe17ab", + "0x344f0a036426900cfcbb5d258823beeeb43a093b9fcce906581eea90f454fcdc", + "0xe0dadd90a1330f66b5101f69f1fcc3abbae8601aa54805ce4dbb0f75f1505588", + "0xb61cefaced4cda06ea52e85b15069d301f6fe7f3cb95fae6aacad81ef0a061d6", + "0x7e2f2f169c6867a7ba49d709ffb14b38dbec1844c93783b61883174a19deb4e5", + "0x29c593944a9fde3a5e7e5ae63a7d3e8523bc8d02615f9e67cd60472c4938fd75", + "0xbf99b22355f6be28bbf0045286ad04628a3d30efa67638d9ba9f0ce976da9b30", + "0xc9c2b3c00d3b2d5df58f74fc80fdfdf5fb40fb62decc891766ea07bf202db995", + "0x98552dcf56acae020222fd2d42f98f66fa904c746c3caa17e456b85a83fc8f55", + "0x02c689808b40d1dc3e50a67b1d6910799ba0b249988c6cb6b8e71e7eceb98964", + "0x7cd2ac51dc7e81be2599d876756e969b742d62d28f802ba1af977686797fd6af", + "0x200e6f01b8a24964078d91a02901a007ee9c8c25d778fbf0ef36740e8960edf3", + "0x37f1ad082b6fb0a51ea5c88d7fa191a17eff96999fcc481a35b19347aede1ea5", + "0xc25657f6f04a18ed59b576de9eb9243ba403005bcb2623911b965d1f1bca4ec8", + "0xcc28e4da4050f0ae0595a435a1ee408aa7bdbb84d0a42fd2a41457f59f85d32b", + "0x64e5e17cd78170d733b526d19c05ee33d09227c5ec35976c5c312f9df19970b1", + "0x1a0c1afb2c4dcc85fa590143e79c543ceb3d96ea1866926d2df9902caa5830ae", + "0xdbe12369b90b73bcfe3e5268e70573b7ec7a73871c4210eb3ebcaf811942e8ab", + "0xf3af79f72fb8b254ee14c543de63129dee897958c1eac5adcd5335ccc526313e", + "0x44ae78a643c33822076ec29e398608fa1ab3d320c785978931d24972693be19f", + "0x75442e6334004a2d8cf5bae4a11b6239a0bd335299ee5f04fa12f7095078f0df", + "0x5c08d8c3869181ec13d314ad7b4f6f14d0d6b5a7e65635a2619d287fc3e71e6a", + "0x6beeda18d865a70bfa263f16b543d25599d430003bfed1a60c0e986c7929b2e4", + "0xe1d21ced822a50074685521183a3a7ef31d231637e9a0ec4500ce1640d3dd71b", + "0x325bd176c1da2a9eca970f2832124e031cc9c5332d27ec7d96adf9cdc9eb1264", + "0xecfc747869eb075dc4f2da1a775945881be255826bbb4f8e7d94e047269093ce", + "0xe661c2a6c70cd4c4cf803658429603cb8f7c8dd1a8bf1ac000c07b17cf7814b1", + "0x93fe369f8315de72944c7ea1f66506b0aa6a3923b435f352799c6796ba0ba7b2", + "0xdb3db5f92400631bcdc49b0036838b03000f465dde53ebbef11f04963ef5219e", + "0x8fbc83c7c4b16f8d48611d1125c9860b0837c3030aa5d0d64b327d722dec250b", + "0xb238016769421deaa46aa26ab968d6ead614b7e99e63432213bcc0636b03b7ec", + "0x46b91ab2e587a2efba39d7bbe65755e55751313833fcd6e07063a93165b61bc7", + "0x8bfae3a2623b6a73419732b15fe50f99ee75a6952c7ac90f9125ccd960a00b9d", + "0xce4fb96b99be5c663e14d783fb6980ba07c5689317b5fbac3d2e582653b73adc", + "0x7781efcfad9292b5a5a3c6839b9da00c590c0081a1bc9991cabbde69409e0fb9", + "0x4a4bd2eaba40041d0a876897e71ccdf33f82c5db990529e6a95446f1668c1182", + "0xaf099a17cfa6cc2d4414759b07ed319606e7b65d198fa3ba3652af0aa2646531", + "0x384f3d208a7df522ef623ed8e5175350c0ef098cfdb9077c45c92d46c132795f", + "0x4d6b6757fa1bf35f583b03a0469697a6c45c9eb2ea292aedae8bd31d3a806ddf", + "0x015281ce8981abefabecc71d179c2acf0b16ffae29159e58fd323712587d71a5", + "0xe6ee15ec60e4ad82db0dd843c5f75c4f143bc868dcc2ee90919b3b3991218f25", + "0x7e0339afd84ba2f05901431889d906b643bafb8052e169b42fb71b77a9731820", + "0xbef2923f78962680ad1249588c6a103a5989401c9d8f70598013d261d9a55861", + "0x08371f39d235fe240bb0d4c2d7a443a5289e78feb753a51496ba12edb7bccd85", + "0x22390078429bdb6c30fb866979bac61f07d8ee289a6d949d39fbae91b2d71415", + "0x122072162d14ba916547cdb29fc9d35c37456fc2058f69a07c019189eaee8f83", + "0xd23ab5e33fdde2ff43c115f3838a6514c9a3f35e4a6afece49cece76e61c53c7", + "0x141fecf80bc04cb714786bcfb9ece9722e73ed89887e6e68d6fc486471bad0bd", + "0x46604512136e3b3cd7e027de0fbc10c9bf6e1efb32be53a95cd7fdd03e3d53ac", + "0x52abd1afcb310ed61fc785fb4452bdf663a063a52ea6a37adbb902f51750bc11", + "0x361d341722d14fd2fad63c17befde24561a5b2f003be01fea2f892b0eeffc94d", + "0x3eaa9017f1d657975e93722d5c3b4109750945aa8ecc27f39e9b04c275e32106", + "0x9c5e0538ada58b7c54dfb2154668c0493be60d35064b2fbb5bf209a977d07e57", + "0xfc49a9ed903f1eecc775a50d7556b4046b6f66d8ac95d41ba36704f49bd63fce", + "0x85cf6c97570ad666afaf0ad1f7e7dc64e0b259dcb02c42554692a1735fb37ef4", + "0xae861970ecf45c5224f946ba8f6441c93edf83950b12fdd52ceda3d7d53dbf32", + "0xdf47a5dd7b8ade8b279ffe9047c2f0ad5c6a5431e9b4188591839bc7d6ff4173", + "0xa7a367a5d8d13e193051cb123b1cd917de8ebdc07918d682b31af7342ce7a698", + "0x060a49067d27644cb03689d4bb5f39a753224d593d4b91f2b70358d72d88853a", + "0x593aa3167b1dd3beabfc428cc53887c1cc1b5b570dd310143669a22ab2d1a4a8", + "0x9489e935cf00b5f3cbfdebbd6cace9bd8cba9f9e484664e8e76349e694314516", + "0x7549951fb66975623382c573f61c593e1d2096d21c3a68994a791425de4a92a0", + "0x85141c6f34e2a6648aa45b4780fa9179c9c229c774fe8ccb3b8ab0eca3a60391", + "0xe25ab18336722de9b22e3a8b2fe9adf6771b338b695ca5a80061d546caccb288", + "0x44fee3971e29540fcd7cc96cb08a22c6dd6dafc17fd9305e13500fe1de60bb5d", + "0x4d9258fd627ae96774fdeed0e5310ee976498d918e4b54275233da1b5f827362", + "0x485dc1aee5406a251cb437971bf928f447069a307045182d3db3a302155d6779", + "0xd7f6cdcf26d6ad0a7f21b103e958cc437bb5aa7ffecf97850165f43514d4c95b", + "0x6c210901e0218318e01f6d21d7c986f11de1bf84b9eff3e64a52ef42107185dd", + "0xb9d2c5b5e1bd808800bb33b11a7c2be2b872935e8492b7063285c49d7f92f734", + "0x66621907053ce5d1547df388ad8f8bdbbab9dd996f3b1fd640dc422a608a6087", + "0x8d371079e5187bf31d554c34697a9ac3c11ff8fb982e6b6a68429f2e8ffd4f8e", + "0x16951c981020495a83f79be9ad2f340ec5226bb04e4e0ebe1f27d3143feb9042", + "0x5c0efb6c1684f19c5a3c11b1243dadeba3e65b96b1b845fd0a75d8e241c94ca0", + "0xe43349db377ec74f78cfb37eb22bc39d74211646205cb4d1b5d1d0fd16021d05", + "0x4c379254315a3ec38621435b3e126336dd0b41f4d065d8733a358697cd541264", + "0xd84647d81ed4e556655ff9582032a954089e04392412808592ec7bb53cea5a2a", + "0x06a8faea1c4851de651635792445a3f25709514b9fb2bb23a2d24ac22f603ed0", + "0x977cea87698c8a08c874844f4639b146c68773e922a7ceae883dd862ccf95bd9", + "0x0cd0588cce5c2105bea36359363e86f6a6775aa0b3125a1780dbc4bb9537d627", + "0xee35b874e54a538170cb18bbf74d3dc7f7b2522263d2d79841591e9f09e3a1d6", + "0xa40fc1bfca63f507b80a5adad32ac883c7d928c23f3b203759b176cd80f37e35", + "0x6162bdef7a5e89e60b4abb3093af275455eebeaca5348a956d721642162c71b8", + "0xdc4e2606bd212827f8a391134861963fee5aba1005201edbe3178ba63e05500c", + "0x131601b1d34cde268443e666024fe502c9f23d54c975483b3b07d9759033eeb4", + "0x79e3abbb7bcd5ef05f069fbf5ea5d9639588e3f939cff5d2b612c240577c06ff", + "0xf7f88dcb5b486b78fe6c199cf756018e8709548dc7325f9e1e3e2d1169d5dc09", + "0x72d3d5836d6a68b5b4979431479f4a671e1c30539e4146e5859a97a195ed2782", + "0x086c291ddf5fa190e87ab4f76eba1231bcf59ec243d2843788dafe95bf7fcfb7", + "0x04287431e7f53066ab8e1550298ab3ce27c1ccc880e38f0b41ad872de3eff509", + "0x229a56f8970cc64570e8d0cad368d835d52bcb88ad8113cd45749b6d8df0b30c", + "0x89435c2fe11e6b8465da7bbd7663a1972f2416c7ee8d728a26b59898eda1890b", + "0x56367fd86cd4690cea733a6a5df7169e781ce3b991e0082ff3c9d269f58d4b76", + "0x654d2f3844d53c2d2744981355d1049f0f1d04c554959d19eb940c796812168e", + "0x67cd79714d1c59098c47ab8b192c8e4d7e79023f321f66eec9626b78204f4449", + "0x7251e63a3748a60505b4b99af71db656ed9780d49f10dc7dec363f96286dcba0", + "0x55325a35f7aaa81bb0a2027d0b9d013f9e4d6fb1a479056676ce5d31003f4d36", + "0xa02d3d68c32544184436ab09ffff241e2f44d133200122b277df2c33e681c799", + "0x57526b0d3ea172c41d8ac2ab9cf47932dc11b6f3b42027e475da5129c5394b76", + "0xf1cb875fb6c526909f4dac30c94b3fd72852dff282a8fe13bb5564a4a814ddb1", + "0x82b8b549cc4081fc924186fac0ac558c45fcaefd20fc7a9191981877d37ae92f", + "0xfc6e08279867a93c5899140e42279950d084bf3f120870844d123770f696aa50", + "0xdb22589b7b517c5fd6043a573d3171387718308acff879f087c3777f21e72911", + "0xd622734b593395fe457c1b01a073b8a9b88d877be3d04788bfebb7d9fd20192b", + "0xa6738bbf5e58be5f947f3bbe8564a6d64bbd713cb2e785152a56e7a3435fcbac", + "0x2a6093694b4aa95733d29cabe3f9aefa198887ba1d39335844a7789ccfcd25f1", + "0x7c70e33a011b2f8203a3148801cec71432b56474c77b5850c71df7e4b23b6bd3", + "0x2690ae9df75683037d3bbc5bbb068e770493033c3d5140a397b9a759be143422", + "0x54a5fa96035d40fd9557220d835dd82fdd981dbfec66e26e185018a2f7e3f665", + "0xa83c41a25d15d4eeaca2290b9d60e55d2b636f4083700f276eddc875eca857ce", + "0xd978eeaef835b1ece440ae4adc7862480373c635850965cec16dd8598593f7aa", + "0x18f9c6c1e03290d59e261da7caa867844cfe0b87710f41c07608613c86f9b902", + "0xadd7fdf1736b49de85a3d4c381bc055eff6dd8643d995d1bc340cc2651c0e4b9", + "0x7102ee375e3eff75e5a5a5dafb99864db8ad24a24e2817a927e2dc6878a09ef4", + "0x6619d248ef0d74ca1bddfec655b23229e79eecfa4e87d690166623ce94277db5", + "0x4be0eb7f32ba4870009d32c76ce5c3afeeb62dab6e688db7fd6266fa1c5bf8e8", + "0xa65578ed2affeb0b487db90b00f04b05d44cdc49875356b71c1cc1939203ba22", + "0xc70a2c953deed6e690a8d288b838c1e907c65cee4aa58ff7251826b692feead0", + "0x955f4c5bca931d7034384e9291a6777e99b2a8fc55b3fcb76ba63fd9ada41357" + ] + }, + "accounts": { + "0x0000000000000000000000000000000000000001": { + "balance": "1", + "builtin": { + "name": "ecrecover", + "activate_at": "0", + "pricing": { + "linear": { + "base": 3000, + "word": 0 + } + } + } + }, + "0x0000000000000000000000000000000000000002": { + "balance": "1", + "builtin": { + "name": "sha256", + "activate_at": "0", + "pricing": { + "linear": { + "base": 60, + "word": 12 + } + } + } + }, + "0x0000000000000000000000000000000000000003": { + "balance": "1", + "builtin": { + "name": "ripemd160", + "activate_at": "0", + "pricing": { + "linear": { + "base": 600, + "word": 120 + } + } + } + }, + "0x0000000000000000000000000000000000000004": { + "balance": "1", + "builtin": { + "name": "identity", + "activate_at": "0", + "pricing": { + "linear": { + "base": 15, + "word": 3 + } + } + } + }, + "0x0000000000000000000000000000000000000005": { + "balance": "1", + "builtin": { + "name": "modexp", + "activate_at": "0", + "pricing": { + "modexp": { + "divisor": 20 + } + } + } + }, + "0x0000000000000000000000000000000000000006": { + "balance": "1", + "builtin": { + "name": "alt_bn128_add", + "pricing": { + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} + } + } + } + }, + "0x0000000000000000000000000000000000000007": { + "balance": "1", + "builtin": { + "name": "alt_bn128_mul", + "pricing": { + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} + } + } + } + }, + "0x0000000000000000000000000000000000000008": { + "balance": "1", + "builtin": { + "name": "alt_bn128_pairing", + "pricing": { + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} + } + } + } + }, + "0x1204700000000000000000000000000000000005": { + "constructor": "0x606060405234156200001057600080fd5b6040516200240138038062002401833981016040528080518201919060200180519060200190919050505b600082518260328211158015620000525750818111155b801562000060575060008114155b80156200006e575060008214155b15156200007a57600080fd5b600092505b8451831015620001b6576002600086858151811015156200009c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156200012b5750600085848151811015156200010857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15156200013757600080fd5b60016002600087868151811015156200014c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82806001019350506200007f565b8460039080519060200190620001ce929190620001e3565b50836004819055505b5b5050505050620002b8565b8280548282559060005260206000209081019282156200025f579160200282015b828111156200025e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000204565b5b5090506200026e919062000272565b5090565b620002b591905b80821115620002b157600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000279565b5090565b90565b61213980620002c86000396000f3006060604052361561011b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101da57806320ea8d86146102135780632f54bf6e146102365780633411c81c1461028757806354741525146102e15780637065cb4814610325578063784547a71461035e5780638b51d13f146103995780639ace38c2146103d0578063a0e67e2b146104ce578063a8abe69a14610539578063b5dc40c3146105d1578063b77bf6001461064a578063ba51a6df14610673578063c01a8c8414610696578063c6427474146106b9578063d74f8edd14610752578063dc8452cd1461077b578063e20056e6146107a4578063ee22610b146107fc575b5b6000341115610174573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b5b005b341561018257600080fd5b610198600480803590602001909190505061081f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101e557600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061085f565b005b341561021e57600080fd5b6102346004808035906020019091905050610b02565b005b341561024157600080fd5b61026d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cae565b604051808215151515815260200191505060405180910390f35b341561029257600080fd5b6102c7600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cce565b604051808215151515815260200191505060405180910390f35b34156102ec57600080fd5b61030f600480803515159060200190919080351515906020019091905050610cfd565b6040518082815260200191505060405180910390f35b341561033057600080fd5b61035c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d91565b005b341561036957600080fd5b61037f6004808035906020019091905050610f99565b604051808215151515815260200191505060405180910390f35b34156103a457600080fd5b6103ba6004808035906020019091905050611081565b6040518082815260200191505060405180910390f35b34156103db57600080fd5b6103f16004808035906020019091905050611150565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001831515151581526020018281038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156104bc5780601f10610491576101008083540402835291602001916104bc565b820191906000526020600020905b81548152906001019060200180831161049f57829003601f168201915b50509550505050505060405180910390f35b34156104d957600080fd5b6104e16111ac565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105255780820151818401525b602081019050610509565b505050509050019250505060405180910390f35b341561054457600080fd5b610579600480803590602001909190803590602001909190803515159060200190919080351515906020019091905050611241565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105bd5780820151818401525b6020810190506105a1565b505050509050019250505060405180910390f35b34156105dc57600080fd5b6105f260048080359060200190919050506113a2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106365780820151818401525b60208101905061061a565b505050509050019250505060405180910390f35b341561065557600080fd5b61065d6115d3565b6040518082815260200191505060405180910390f35b341561067e57600080fd5b61069460048080359060200190919050506115d9565b005b34156106a157600080fd5b6106b76004808035906020019091905050611696565b005b34156106c457600080fd5b61073c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611877565b6040518082815260200191505060405180910390f35b341561075d57600080fd5b610765611897565b6040518082815260200191505060405180910390f35b341561078657600080fd5b61078e61189c565b6040518082815260200191505060405180910390f35b34156107af57600080fd5b6107fa600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118a2565b005b341561080757600080fd5b61081d6004808035906020019091905050611bc0565b005b60038181548110151561082e57fe5b906000526020600020900160005b915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561089b57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108f457600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610a80578273ffffffffffffffffffffffffffffffffffffffff1660038381548110151561098757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a725760036001600380549050038154811015156109e757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a2357fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a80565b5b8180600101925050610951565b6001600381818054905003915081610a989190611fe8565b506003805490506004541115610ab757610ab66003805490506115d9565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a25b5b505b5050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b5b57600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610bc657600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff16151515610bf657600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35b5b505b50505b5050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610d8957838015610d3c575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610d6f5750828015610d6e575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610d7b576001820191505b5b8080600101915050610d05565b5b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dcb57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610e2557600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff1614151515610e4c57600080fd5b60016003805490500160045460328211158015610e695750818111155b8015610e76575060008114155b8015610e83575060008214155b1515610e8e57600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610efa9190612014565b916000526020600020900160005b87909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25b5b50505b505b505b50565b6000806000809150600090505b60038054905081101561107957600160008581526020019081526020016000206000600383815481101515610fd757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611058576001820191505b60045482141561106b576001925061107a565b5b8080600101915050610fa6565b5b5050919050565b600080600090505b600380549050811015611149576001600084815260200190815260200160002060006003838154811015156110ba57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561113b576001820191505b5b8080600101915050611089565b5b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201908060030160009054906101000a900460ff16905084565b6111b4612040565b600380548060200260200160405190810160405280929190818152602001828054801561123657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111ec575b505050505090505b90565b611249612054565b611251612054565b6000806005546040518059106112645750595b908082528060200260200182016040525b50925060009150600090505b600554811015611322578580156112b8575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806112eb57508480156112ea575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15611314578083838151811015156112ff57fe5b90602001906020020181815250506001820191505b5b8080600101915050611281565b8787036040518059106113325750595b908082528060200260200182016040525b5093508790505b8681101561139657828181518110151561136057fe5b906020019060200201518489830381518110151561137a57fe5b90602001906020020181815250505b808060010191505061134a565b5b505050949350505050565b6113aa612040565b6113b2612040565b6000806003805490506040518059106113c85750595b908082528060200260200182016040525b50925060009150600090505b60038054905081101561152b5760016000868152602001908152602001600020600060038381548110151561141657fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561151d5760038181548110151561149f57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156114da57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b5b80806001019150506113e5565b816040518059106115395750595b908082528060200260200182016040525b509350600090505b818110156115ca57828181518110151561156857fe5b90602001906020020151848281518110151561158057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8080600101915050611552565b5b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161357600080fd5b600380549050816032821115801561162b5750818111155b8015611638575060008114155b8015611645575060008214155b151561165057600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a15b5b50505b50565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156116ef57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561174b57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156117b757600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a361186c85611bc0565b5b5b50505b505b5050565b6000611884848484611e6c565b905061188f81611696565b5b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118de57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561193757600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561199157600080fd5b600092505b600380549050831015611a7f578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119c957fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a715783600384815481101515611a2257fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a7f565b5b8280600101935050611996565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25b5b505b505b505050565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c1b57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c8657600080fd5b8460008082815260200190815260200160002060030160009054906101000a900460ff16151515611cb657600080fd5b611cbf86610f99565b15611e6057600080878152602001908152602001600020945060018560030160006101000a81548160ff021916908315150217905550611ddd8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015487600201805460018160011615610100020316600290049050886002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dd35780601f10611da857610100808354040283529160200191611dd3565b820191906000526020600020905b815481529060010190602001808311611db657829003601f168201915b5050505050611fc0565b15611e1457857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611e5f565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b5b5b5b505b50505b505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff1614151515611e9557600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019080519060200190611f54929190612068565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a25b5b509392505050565b6000806040516020840160008287838a8c6187965a03f1925050508091505b50949350505050565b81548183558181151161200f5781836000526020600020918201910161200e91906120e8565b5b505050565b81548183558181151161203b5781836000526020600020918201910161203a91906120e8565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120a957805160ff19168380011785556120d7565b828001600101855582156120d7579182015b828111156120d65782518255916020019190600101906120bb565b5b5090506120e491906120e8565b5090565b61210a91905b808211156121065760008160009055506001016120ee565b5090565b905600a165627a7a72305820f1129b699b3017535535a920e15503cd06af1f5c77637c0637cc29355b1dad3400290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000cb1437200aea736788f1fc56f327c0456c3598d00000000000000000000000074dd76e24b2cfb43c1b1a4498295d553d0843746000000000000000000000000eeb4ceee443f9e0d17bdbd6daa241681ee5e51c2000000000000000000000000a005caea55375ae20e3aaef746113535503abc19" + }, + "0x1204700000000000000000000000000000000003": { + "constructor": "0x606060405234156200001057600080fd5b6040516200240138038062002401833981016040528080518201919060200180519060200190919050505b600082518260328211158015620000525750818111155b801562000060575060008114155b80156200006e575060008214155b15156200007a57600080fd5b600092505b8451831015620001b6576002600086858151811015156200009c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156200012b5750600085848151811015156200010857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15156200013757600080fd5b60016002600087868151811015156200014c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82806001019350506200007f565b8460039080519060200190620001ce929190620001e3565b50836004819055505b5b5050505050620002b8565b8280548282559060005260206000209081019282156200025f579160200282015b828111156200025e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000204565b5b5090506200026e919062000272565b5090565b620002b591905b80821115620002b157600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000279565b5090565b90565b61213980620002c86000396000f3006060604052361561011b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101da57806320ea8d86146102135780632f54bf6e146102365780633411c81c1461028757806354741525146102e15780637065cb4814610325578063784547a71461035e5780638b51d13f146103995780639ace38c2146103d0578063a0e67e2b146104ce578063a8abe69a14610539578063b5dc40c3146105d1578063b77bf6001461064a578063ba51a6df14610673578063c01a8c8414610696578063c6427474146106b9578063d74f8edd14610752578063dc8452cd1461077b578063e20056e6146107a4578063ee22610b146107fc575b5b6000341115610174573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b5b005b341561018257600080fd5b610198600480803590602001909190505061081f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101e557600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061085f565b005b341561021e57600080fd5b6102346004808035906020019091905050610b02565b005b341561024157600080fd5b61026d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cae565b604051808215151515815260200191505060405180910390f35b341561029257600080fd5b6102c7600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cce565b604051808215151515815260200191505060405180910390f35b34156102ec57600080fd5b61030f600480803515159060200190919080351515906020019091905050610cfd565b6040518082815260200191505060405180910390f35b341561033057600080fd5b61035c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d91565b005b341561036957600080fd5b61037f6004808035906020019091905050610f99565b604051808215151515815260200191505060405180910390f35b34156103a457600080fd5b6103ba6004808035906020019091905050611081565b6040518082815260200191505060405180910390f35b34156103db57600080fd5b6103f16004808035906020019091905050611150565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001831515151581526020018281038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156104bc5780601f10610491576101008083540402835291602001916104bc565b820191906000526020600020905b81548152906001019060200180831161049f57829003601f168201915b50509550505050505060405180910390f35b34156104d957600080fd5b6104e16111ac565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105255780820151818401525b602081019050610509565b505050509050019250505060405180910390f35b341561054457600080fd5b610579600480803590602001909190803590602001909190803515159060200190919080351515906020019091905050611241565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105bd5780820151818401525b6020810190506105a1565b505050509050019250505060405180910390f35b34156105dc57600080fd5b6105f260048080359060200190919050506113a2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106365780820151818401525b60208101905061061a565b505050509050019250505060405180910390f35b341561065557600080fd5b61065d6115d3565b6040518082815260200191505060405180910390f35b341561067e57600080fd5b61069460048080359060200190919050506115d9565b005b34156106a157600080fd5b6106b76004808035906020019091905050611696565b005b34156106c457600080fd5b61073c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611877565b6040518082815260200191505060405180910390f35b341561075d57600080fd5b610765611897565b6040518082815260200191505060405180910390f35b341561078657600080fd5b61078e61189c565b6040518082815260200191505060405180910390f35b34156107af57600080fd5b6107fa600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118a2565b005b341561080757600080fd5b61081d6004808035906020019091905050611bc0565b005b60038181548110151561082e57fe5b906000526020600020900160005b915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561089b57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108f457600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610a80578273ffffffffffffffffffffffffffffffffffffffff1660038381548110151561098757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a725760036001600380549050038154811015156109e757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a2357fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a80565b5b8180600101925050610951565b6001600381818054905003915081610a989190611fe8565b506003805490506004541115610ab757610ab66003805490506115d9565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a25b5b505b5050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b5b57600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610bc657600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff16151515610bf657600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35b5b505b50505b5050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610d8957838015610d3c575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610d6f5750828015610d6e575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610d7b576001820191505b5b8080600101915050610d05565b5b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dcb57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610e2557600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff1614151515610e4c57600080fd5b60016003805490500160045460328211158015610e695750818111155b8015610e76575060008114155b8015610e83575060008214155b1515610e8e57600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610efa9190612014565b916000526020600020900160005b87909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25b5b50505b505b505b50565b6000806000809150600090505b60038054905081101561107957600160008581526020019081526020016000206000600383815481101515610fd757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611058576001820191505b60045482141561106b576001925061107a565b5b8080600101915050610fa6565b5b5050919050565b600080600090505b600380549050811015611149576001600084815260200190815260200160002060006003838154811015156110ba57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561113b576001820191505b5b8080600101915050611089565b5b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201908060030160009054906101000a900460ff16905084565b6111b4612040565b600380548060200260200160405190810160405280929190818152602001828054801561123657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111ec575b505050505090505b90565b611249612054565b611251612054565b6000806005546040518059106112645750595b908082528060200260200182016040525b50925060009150600090505b600554811015611322578580156112b8575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806112eb57508480156112ea575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15611314578083838151811015156112ff57fe5b90602001906020020181815250506001820191505b5b8080600101915050611281565b8787036040518059106113325750595b908082528060200260200182016040525b5093508790505b8681101561139657828181518110151561136057fe5b906020019060200201518489830381518110151561137a57fe5b90602001906020020181815250505b808060010191505061134a565b5b505050949350505050565b6113aa612040565b6113b2612040565b6000806003805490506040518059106113c85750595b908082528060200260200182016040525b50925060009150600090505b60038054905081101561152b5760016000868152602001908152602001600020600060038381548110151561141657fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561151d5760038181548110151561149f57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156114da57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b5b80806001019150506113e5565b816040518059106115395750595b908082528060200260200182016040525b509350600090505b818110156115ca57828181518110151561156857fe5b90602001906020020151848281518110151561158057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8080600101915050611552565b5b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161357600080fd5b600380549050816032821115801561162b5750818111155b8015611638575060008114155b8015611645575060008214155b151561165057600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a15b5b50505b50565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156116ef57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561174b57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156117b757600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a361186c85611bc0565b5b5b50505b505b5050565b6000611884848484611e6c565b905061188f81611696565b5b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118de57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561193757600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561199157600080fd5b600092505b600380549050831015611a7f578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119c957fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a715783600384815481101515611a2257fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a7f565b5b8280600101935050611996565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25b5b505b505b505050565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c1b57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c8657600080fd5b8460008082815260200190815260200160002060030160009054906101000a900460ff16151515611cb657600080fd5b611cbf86610f99565b15611e6057600080878152602001908152602001600020945060018560030160006101000a81548160ff021916908315150217905550611ddd8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015487600201805460018160011615610100020316600290049050886002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dd35780601f10611da857610100808354040283529160200191611dd3565b820191906000526020600020905b815481529060010190602001808311611db657829003601f168201915b5050505050611fc0565b15611e1457857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611e5f565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b5b5b5b505b50505b505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff1614151515611e9557600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019080519060200190611f54929190612068565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a25b5b509392505050565b6000806040516020840160008287838a8c6187965a03f1925050508091505b50949350505050565b81548183558181151161200f5781836000526020600020918201910161200e91906120e8565b5b505050565b81548183558181151161203b5781836000526020600020918201910161203a91906120e8565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120a957805160ff19168380011785556120d7565b828001600101855582156120d7579182015b828111156120d65782518255916020019190600101906120bb565b5b5090506120e491906120e8565b5090565b61210a91905b808211156121065760008160009055506001016120ee565b5090565b905600a165627a7a72305820f1129b699b3017535535a920e15503cd06af1f5c77637c0637cc29355b1dad3400290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000cb1437200aea736788f1fc56f327c0456c3598d00000000000000000000000074dd76e24b2cfb43c1b1a4498295d553d0843746000000000000000000000000eeb4ceee443f9e0d17bdbd6daa241681ee5e51c2000000000000000000000000a005caea55375ae20e3aaef746113535503abc19" + }, + "0x120470000000000000000000000000000000000a": { + "balance": "11310499300000000000000000", + "constructor": "0x606060405234156200001057600080fd5b6040516200240138038062002401833981016040528080518201919060200180519060200190919050505b600082518260328211158015620000525750818111155b801562000060575060008114155b80156200006e575060008214155b15156200007a57600080fd5b600092505b8451831015620001b6576002600086858151811015156200009c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156200012b5750600085848151811015156200010857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614155b15156200013757600080fd5b60016002600087868151811015156200014c57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82806001019350506200007f565b8460039080519060200190620001ce929190620001e3565b50836004819055505b5b5050505050620002b8565b8280548282559060005260206000209081019282156200025f579160200282015b828111156200025e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000204565b5b5090506200026e919062000272565b5090565b620002b591905b80821115620002b157600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000279565b5090565b90565b61213980620002c86000396000f3006060604052361561011b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c2714610177578063173825d9146101da57806320ea8d86146102135780632f54bf6e146102365780633411c81c1461028757806354741525146102e15780637065cb4814610325578063784547a71461035e5780638b51d13f146103995780639ace38c2146103d0578063a0e67e2b146104ce578063a8abe69a14610539578063b5dc40c3146105d1578063b77bf6001461064a578063ba51a6df14610673578063c01a8c8414610696578063c6427474146106b9578063d74f8edd14610752578063dc8452cd1461077b578063e20056e6146107a4578063ee22610b146107fc575b5b6000341115610174573373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a25b5b005b341561018257600080fd5b610198600480803590602001909190505061081f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101e557600080fd5b610211600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061085f565b005b341561021e57600080fd5b6102346004808035906020019091905050610b02565b005b341561024157600080fd5b61026d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cae565b604051808215151515815260200191505060405180910390f35b341561029257600080fd5b6102c7600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cce565b604051808215151515815260200191505060405180910390f35b34156102ec57600080fd5b61030f600480803515159060200190919080351515906020019091905050610cfd565b6040518082815260200191505060405180910390f35b341561033057600080fd5b61035c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d91565b005b341561036957600080fd5b61037f6004808035906020019091905050610f99565b604051808215151515815260200191505060405180910390f35b34156103a457600080fd5b6103ba6004808035906020019091905050611081565b6040518082815260200191505060405180910390f35b34156103db57600080fd5b6103f16004808035906020019091905050611150565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001831515151581526020018281038252848181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156104bc5780601f10610491576101008083540402835291602001916104bc565b820191906000526020600020905b81548152906001019060200180831161049f57829003601f168201915b50509550505050505060405180910390f35b34156104d957600080fd5b6104e16111ac565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105255780820151818401525b602081019050610509565b505050509050019250505060405180910390f35b341561054457600080fd5b610579600480803590602001909190803590602001909190803515159060200190919080351515906020019091905050611241565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105bd5780820151818401525b6020810190506105a1565b505050509050019250505060405180910390f35b34156105dc57600080fd5b6105f260048080359060200190919050506113a2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106365780820151818401525b60208101905061061a565b505050509050019250505060405180910390f35b341561065557600080fd5b61065d6115d3565b6040518082815260200191505060405180910390f35b341561067e57600080fd5b61069460048080359060200190919050506115d9565b005b34156106a157600080fd5b6106b76004808035906020019091905050611696565b005b34156106c457600080fd5b61073c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611877565b6040518082815260200191505060405180910390f35b341561075d57600080fd5b610765611897565b6040518082815260200191505060405180910390f35b341561078657600080fd5b61078e61189c565b6040518082815260200191505060405180910390f35b34156107af57600080fd5b6107fa600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118a2565b005b341561080757600080fd5b61081d6004808035906020019091905050611bc0565b005b60038181548110151561082e57fe5b906000526020600020900160005b915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561089b57600080fd5b81600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108f457600080fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600091505b600160038054905003821015610a80578273ffffffffffffffffffffffffffffffffffffffff1660038381548110151561098757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a725760036001600380549050038154811015156109e757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610a2357fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a80565b5b8180600101925050610951565b6001600381818054905003915081610a989190611fe8565b506003805490506004541115610ab757610ab66003805490506115d9565b5b8273ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a25b5b505b5050565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610b5b57600080fd5b81336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610bc657600080fd5b8360008082815260200190815260200160002060030160009054906101000a900460ff16151515610bf657600080fd5b60006001600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e960405160405180910390a35b5b505b50505b5050565b60026020528060005260406000206000915054906101000a900460ff1681565b60016020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600080600090505b600554811015610d8957838015610d3c575060008082815260200190815260200160002060030160009054906101000a900460ff16155b80610d6f5750828015610d6e575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15610d7b576001820191505b5b8080600101915050610d05565b5b5092915050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610dcb57600080fd5b80600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610e2557600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff1614151515610e4c57600080fd5b60016003805490500160045460328211158015610e695750818111155b8015610e76575060008114155b8015610e83575060008214155b1515610e8e57600080fd5b6001600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038054806001018281610efa9190612014565b916000526020600020900160005b87909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508473ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25b5b50505b505b505b50565b6000806000809150600090505b60038054905081101561107957600160008581526020019081526020016000206000600383815481101515610fd757fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611058576001820191505b60045482141561106b576001925061107a565b5b8080600101915050610fa6565b5b5050919050565b600080600090505b600380549050811015611149576001600084815260200190815260200160002060006003838154811015156110ba57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561113b576001820191505b5b8080600101915050611089565b5b50919050565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101549080600201908060030160009054906101000a900460ff16905084565b6111b4612040565b600380548060200260200160405190810160405280929190818152602001828054801561123657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111ec575b505050505090505b90565b611249612054565b611251612054565b6000806005546040518059106112645750595b908082528060200260200182016040525b50925060009150600090505b600554811015611322578580156112b8575060008082815260200190815260200160002060030160009054906101000a900460ff16155b806112eb57508480156112ea575060008082815260200190815260200160002060030160009054906101000a900460ff165b5b15611314578083838151811015156112ff57fe5b90602001906020020181815250506001820191505b5b8080600101915050611281565b8787036040518059106113325750595b908082528060200260200182016040525b5093508790505b8681101561139657828181518110151561136057fe5b906020019060200201518489830381518110151561137a57fe5b90602001906020020181815250505b808060010191505061134a565b5b505050949350505050565b6113aa612040565b6113b2612040565b6000806003805490506040518059106113c85750595b908082528060200260200182016040525b50925060009150600090505b60038054905081101561152b5760016000868152602001908152602001600020600060038381548110151561141657fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561151d5760038181548110151561149f57fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156114da57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001820191505b5b80806001019150506113e5565b816040518059106115395750595b908082528060200260200182016040525b509350600090505b818110156115ca57828181518110151561156857fe5b90602001906020020151848281518110151561158057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b8080600101915050611552565b5b505050919050565b60055481565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161357600080fd5b600380549050816032821115801561162b5750818111155b8015611638575060008114155b8015611645575060008214155b151561165057600080fd5b826004819055507fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a836040518082815260200191505060405180910390a15b5b50505b50565b33600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156116ef57600080fd5b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561174b57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156117b757600080fd5b600180600087815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550843373ffffffffffffffffffffffffffffffffffffffff167f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef60405160405180910390a361186c85611bc0565b5b5b50505b505b5050565b6000611884848484611e6c565b905061188f81611696565b5b9392505050565b603281565b60045481565b60003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118de57600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561193757600080fd5b82600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561199157600080fd5b600092505b600380549050831015611a7f578473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119c957fe5b906000526020600020900160005b9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611a715783600384815481101515611a2257fe5b906000526020600020900160005b6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a7f565b5b8280600101935050611996565b6000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508473ffffffffffffffffffffffffffffffffffffffff167f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9060405160405180910390a28373ffffffffffffffffffffffffffffffffffffffff167ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d60405160405180910390a25b5b505b505b505050565b600033600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c1b57600080fd5b82336001600083815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c8657600080fd5b8460008082815260200190815260200160002060030160009054906101000a900460ff16151515611cb657600080fd5b611cbf86610f99565b15611e6057600080878152602001908152602001600020945060018560030160006101000a81548160ff021916908315150217905550611ddd8560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866001015487600201805460018160011615610100020316600290049050886002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dd35780601f10611da857610100808354040283529160200191611dd3565b820191906000526020600020905b815481529060010190602001808311611db657829003601f168201915b5050505050611fc0565b15611e1457857f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7560405160405180910390a2611e5f565b857f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923660405160405180910390a260008560030160006101000a81548160ff0219169083151502179055505b5b5b5b505b50505b505050565b60008360008173ffffffffffffffffffffffffffffffffffffffff1614151515611e9557600080fd5b60055491506080604051908101604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020016000151581525060008084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002019080519060200190611f54929190612068565b5060608201518160030160006101000a81548160ff0219169083151502179055509050506001600560008282540192505081905550817fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5160405160405180910390a25b5b509392505050565b6000806040516020840160008287838a8c6187965a03f1925050508091505b50949350505050565b81548183558181151161200f5781836000526020600020918201910161200e91906120e8565b5b505050565b81548183558181151161203b5781836000526020600020918201910161203a91906120e8565b5b505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120a957805160ff19168380011785556120d7565b828001600101855582156120d7579182015b828111156120d65782518255916020019190600101906120bb565b5b5090506120e491906120e8565b5090565b61210a91905b808211156121065760008160009055506001016120ee565b5090565b905600a165627a7a72305820f1129b699b3017535535a920e15503cd06af1f5c77637c0637cc29355b1dad3400290000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000cb1437200aea736788f1fc56f327c0456c3598d00000000000000000000000074dd76e24b2cfb43c1b1a4498295d553d0843746000000000000000000000000eeb4ceee443f9e0d17bdbd6daa241681ee5e51c2000000000000000000000000a005caea55375ae20e3aaef746113535503abc19" + }, + "0x0cB1437200aea736788f1Fc56F327c0456c3598D": { + "balance": "250000000000000000" + }, + "0x74dd76E24B2CFB43C1b1a4498295d553D0843746": { + "balance": "250000000000000000" + }, + "0xeeB4CEEe443F9e0D17BdBD6Daa241681EE5E51c2": { + "balance": "250000000000000000" + }, + "0xA005caEa55375ae20e3aAEF746113535503ABC19": { + "balance": "250000000000000000" + }, + "0x1204700000000000000000000000000000000001": { + "constructor": "0x60806040523480156200001157600080fd5b5060405162002f1538038062002f15833981018060405260608110156200003757600080fd5b81019080805190602001909291908051906020019092919080516401000000008111156200006457600080fd5b828101905060208101848111156200007b57600080fd5b81518560208202830111640100000000821117156200009957600080fd5b5050929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062002ec56024913960400191505060405180910390fd5b60018151101562000242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018062002ee9602c913960400191505060405180910390fd5b6200025c8362000473640100000000026401000000009004565b6200027682620005d5640100000000026401000000009004565b60008090505b81518110156200042057600073ffffffffffffffffffffffffffffffffffffffff16828281518110620002ab57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156200033e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f56616c696461746f7220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b6001600360008484815181106200035157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836003811115620003b257fe5b02179055508060036000848481518110620003c957fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555080806001019150506200027c565b508060029080519060200190620004399291906200065c565b50600260019080546200044e929190620006eb565b506001600060146101000a81548160ff02191690831515021790555050505062000788565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe8ec518081a7aa1fc5d586a5443a858ab130be8b8e39b545172c879a7e242c6b60405160405180910390a250565b828054828255906000526020600020908101928215620006d8579160200282015b82811115620006d75782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200067d565b5b509050620006e7919062000742565b5090565b8280548282559060005260206000209081019282156200072f5760005260206000209182015b828111156200072e57825482559160010191906001019062000711565b5b5090506200073e919062000742565b5090565b6200078591905b808211156200078157600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000749565b5090565b90565b61272d80620007986000396000f3fe608060405234801561001057600080fd5b506004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900480639f723637116100d5578063b980490911610099578063b980490914610594578063bd21442a146105f0578063c805f68b146106b3578063d826b7f1146106f7578063f2fde38b14610765578063f3aeac02146107a95761015f565b80639f7236371461040e578063a00745b61461046d578063a6940b07146104c9578063b3f05b9714610513578063b7ab4db5146105355761015f565b8063455701d611610127578063455701d6146102eb5780634d238c8e1461034a578063715018a61461038e57806375286211146103985780638da5cb5b146103a25780638f32d59b146103ec5761015f565b8063267fa41d1461016457806334ba3c1b146101c057806340550a1c146101de57806340a141ff1461023a578063418349551461027e575b600080fd5b6101a66004803603602081101561017a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610805565b604051808215151515815260200191505060405180910390f35b6101c8610877565b6040518082815260200191505060405180910390f35b610220600480360360208110156101f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610884565b604051808215151515815260200191505060405180910390f35b61027c6004803603602081101561025057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610965565b005b6102c06004803603602081101561029457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ab0565b604051808360038111156102d057fe5b60ff1681526020018281526020019250505060405180910390f35b6102f3610ae1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561033657808201518184015260208101905061031b565b505050509050019250505060405180910390f35b61038c6004803603602081101561036057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b6f565b005b610396610d79565b005b6103a0610eb2565b005b6103aa611328565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103f4611351565b604051808215151515815260200191505060405180910390f35b6104166113a8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561045957808201518184015260208101905061043e565b505050509050019250505060405180910390f35b6104af6004803603602081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114d7565b604051808215151515815260200191505060405180910390f35b6104d16115b8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61051b6115de565b604051808215151515815260200191505060405180910390f35b61053d6115f1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610580578082015181840152602081019050610565565b505050509050019250505060405180910390f35b6105d6600480360360208110156105aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061167f565b604051808215151515815260200191505060405180910390f35b6106b16004803603608081101561060657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561066d57600080fd5b82018360208201111561067f57600080fd5b803590602001918460018302840111640100000000831117156106a157600080fd5b90919293919293905050506116f0565b005b6106f5600480360360208110156106c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061194c565b005b6107636004803603606081101561070d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611aff565b005b6107a76004803603602081101561077b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d59565b005b6107eb600480360360208110156107bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ddf565b604051808215151515815260200191505060405180910390f35b60006001600381111561081457fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561086f57fe5b149050919050565b6000600180549050905090565b60006001600381111561089357fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156108ee57fe5b148061095e575060038081111561090157fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561095c57fe5b145b9050919050565b61096d611351565b6109df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600060149054906101000a900460ff16610a44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126736022913960400191505060405180910390fd5b80610a4e81610884565b610aa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126516022913960400191505060405180910390fd5b610aac82611e51565b5050565b60036020528060005260406000206000915090508060000160009054906101000a900460ff16908060010154905082565b60606002805480602002602001604051908101604052809291908181526020018280548015610b6557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610b1b575b5050505050905090565b610b77611351565b610be9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600060149054906101000a900460ff16610c4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126736022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cf1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f56616c696461746f7220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b610cfa81610884565b15610d6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f546869732076616c696461746f7220697320616c72656164792061637469766581525060200191505060405180910390fd5b610d76816120a4565b50565b610d81611351565b610df3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060149054906101000a900460ff1615610f35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f56616c696461746f72207365742069732066696e616c697a656400000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ff8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f74207468652052656c617920636f6e747261637481525060200191505060405180910390fd5b6001600060146101000a81548160ff02191690831515021790555060008090505b6002805490508110156110dd576000600360006002848154811061103957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160000160006101000a81548160ff021916908360038111156110c157fe5b0217905550818160010181905550508080600101915050611019565b50600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126757600060036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908360038111156111b557fe5b0217905550600060036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6002600190805461127992919061251f565b507f8564cd629b15f47dc310d45bcbfc9bcf5420b0d51bf0659a16c67f91d276325360016040518080602001828103825283818154815260200191508054801561131857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116112ce575b50509250505060405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6060600180549050600280549050111561144a57600280548060200260200160405190810160405280929190818152602001828054801561143e57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116113f4575b505050505090506114d4565b60018054806020026020016040519081016040528092919081815260200182805480156114cc57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611482575b505050505090505b90565b6000600260038111156114e657fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16600381111561154157fe5b14806115b1575060038081111561155457fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156115af57fe5b145b9050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1681565b6060600180548060200260200160405190810160405280929190818152602001828054801561167557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161162b575b5050505050905090565b600060038081111561168d57fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660038111156116e857fe5b149050919050565b846116fa81610884565b61174f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126516022913960400191505060405180910390fd5b8461175981610884565b6117ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126516022913960400191505060405180910390fd5b84438110611824576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f426c6f636b206e756d626572206973206e6f742076616c69640000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f74207468652052656c617920636f6e747261637481525060200191505060405180910390fd5b858773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f729a19138e072a5a8d3a56d74ae0b5c84530f09aacd6e12b24c5b2fdc3f8a3d060405160405180910390a45050505050505050565b611954611351565b6119c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806126066024913960400191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611af3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806126956040913960400191505060405180910390fd5b611afc81612179565b50565b82611b0981610884565b611b5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126516022913960400191505060405180910390fd5b82611b6881610884565b611bbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806126516022913960400191505060405180910390fd5b82438110611c33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f426c6f636b206e756d626572206973206e6f742076616c69640000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f74207468652052656c617920636f6e747261637481525060200191505060405180910390fd5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fbc459bd9db54016b1966d0fe812bbe0a82cd627ae3eacd01727dc63a432ca41b60405160405180910390a4505050505050565b611d61611351565b611dd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b611ddc81612200565b50565b600060026003811115611dee57fe5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff166003811115611e4957fe5b149050919050565b600160028054905011611eaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061262a6027913960400191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905060006001600280549050039050600060028281548110611f1257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508060028481548110611f4d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506002805480919060019003611ff19190612571565b5060038060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083600381111561205057fe5b021790555083600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061209e612361565b50505050565b6002600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083600381111561210357fe5b021790555060028190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050612176612361565b50565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe8ec518081a7aa1fc5d586a5443a858ab130be8b8e39b545172c879a7e242c6b60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060146101000a81548160ff021916908315150217905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a084718a600143034060026040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200180602001828103825283818154815260200191508054801561246c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311612422575b50509350505050602060405180830381600087803b15801561248d57600080fd5b505af11580156124a1573d6000803e3d6000fd5b505050506040513d60208110156124b757600080fd5b810190808051906020019092919050505061251d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806126d5602d913960400191505060405180910390fd5b565b8280548282559060005260206000209081019282156125605760005260206000209182015b8281111561255f578254825591600101919060010190612544565b5b50905061256d919061259d565b5090565b8154818355818111156125985781836000526020600020918201910161259791906125e0565b5b505050565b6125dd91905b808211156125d957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016125a3565b5090565b90565b61260291905b808211156125fe5760008160009055506001016125e6565b5090565b9056fe52656c617920636f6e747261637420616464726573732063616e6e6f74206265203078305468657265206d757374206265206174206c6561737420312076616c696461746f72206c65667441646472657373206973206e6f7420616e206163746976652076616c696461746f7256616c696461746f7220736574206973206e6f742066696e616c697a6564207965744e65772072656c617920636f6e747261637420616464726573732063616e6e6f74206265207468652073616d65206173207468652063757272656e74206f6e6552656c617920636f6e747261637420496e6974696174654368616e67652063616c6c6261636b206661696c6564a165627a7a72305820c6b083565ee91eecaf8e5a6f14e1677206b36466bdfe0248a47919657b68255b002952656c617920636f6e747261637420616464726573732063616e6e6f74206265203078305468657265206d757374206265206174206c6561737420312076616c696461746f7220696e697469616c6c79000000000000000000000000120470000000000000000000000000000000000500000000000000000000000012047000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000300000000000000000000000036f67dd84e7327c10c7ead6c429a47189798fbdc00000000000000000000000020df7a4e8408add37c6a5c4afc1b1509924619fe00000000000000000000000077901f14183b1669c80e8c6137ff6721c9a26b25" + }, + "0x1204700000000000000000000000000000000000": { + "constructor": "0x608060405273fffffffffffffffffffffffffffffffffffffffe600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006557600080fd5b506040516040806116c18339810180604052604081101561008557600080fd5b810190808051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361017482610193640100000000026401000000009004565b61018c816102f4640100000000026401000000009004565b5050610506565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610398576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f416464726573732063616e6e6f7420626520307830000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561043f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061167f6042913960600191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4fea88aaf04c303804bb211ecc32a00ac8e5f0656bb854cad8a4a2e438256b7460405160405180910390a3505050565b61116a806105156000396000f3fe608060405234801561001057600080fd5b50600436106100d1576000357c010000000000000000000000000000000000000000000000000000000090048063b7ab4db51161008e578063b7ab4db51461023b578063bd9656771461029a578063c476dd40146102de578063d3e848f114610381578063d69f13bb146103cb578063f2fde38b14610419576100d1565b8063715018a6146100d657806375286211146100e05780638da5cb5b146100ea5780638f32d59b14610134578063a084718a14610156578063ae3783d6146101f1575b600080fd5b6100de61045d565b005b6100e8610596565b005b6100f26106f9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61013c610722565b604051808215151515815260200191505060405180910390f35b6101d76004803603604081101561016c57600080fd5b81019080803590602001909291908035906020019064010000000081111561019357600080fd5b8201836020820111156101a557600080fd5b803590602001918460208302840111640100000000831117156101c757600080fd5b9091929391929390505050610779565b604051808215151515815260200191505060405180910390f35b6101f9610893565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102436108b9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561028657808201518184015260208101905061026b565b505050509050019250505060405180910390f35b6102dc600480360360208110156102b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109d5565b005b61037f600480360360608110156102f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b9091929391929390505050610a5b565b005b610389610ba6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610417600480360360408110156103e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bcc565b005b61045b6004803603602081101561042f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce1565b005b610465610722565b6104d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53656e646572206973206e6f742073797374656d00000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663752862116040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1580156106df57600080fd5b505af11580156106f3573d6000803e3d6000fd5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061111d6022913960400191505060405180910390fd5b837f55252fa6eee4741b4e24a74a70e9c11fd2c2281df8d6ea13126ff845f7825c89848460405180806020018281038252848482818152602001925060200280828437600081840152601f19601f820116905080830192505050935050505060405180910390a2600190509392505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b7ab4db56040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160006040518083038186803b15801561093f57600080fd5b505afa158015610953573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561097d57600080fd5b81019080805164010000000081111561099557600080fd5b828101905060208101848111156109ab57600080fd5b81518560208202830111640100000000821117156109c857600080fd5b5050929190505050905090565b6109dd610722565b610a4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b610a5881610d67565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bd21442a33868686866040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610b8857600080fd5b505af1158015610b9c573d6000803e3d6000fd5b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d826b7f13384846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015610cc557600080fd5b505af1158015610cd9573d6000803e3d6000fd5b505050505050565b610ce9610722565b610d5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b610d6481610f79565b50565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e0b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f416464726573732063616e6e6f7420626520307830000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610eb2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806110db6042913960600191505060405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f4fea88aaf04c303804bb211ecc32a00ac8e5f0656bb854cad8a4a2e438256b7460405160405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fe4e65772072656c6179656420636f6e747261637420616464726573732063616e6e6f74206265207468652073616d65206173207468652063757272656e74206f6e6553656e646572206973206e6f74207468652052656c6179656420636f6e7472616374a165627a7a72305820df8e72037cf9237ba09d135b3962a00a0186ba17dcbbe421274543975b2c346100294e65772072656c6179656420636f6e747261637420616464726573732063616e6e6f74206265207468652073616d65206173207468652063757272656e74206f6e6500000000000000000000000012047000000000000000000000000000000000050000000000000000000000001204700000000000000000000000000000000001" + }, + "0x1204700000000000000000000000000000000002": { + "constructor": "0x608060405273fffffffffffffffffffffffffffffffffffffffe600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b5060405160408062001b22833981018060405260408110156200008857600080fd5b810190808051906020019092919080519060200190929190505050620000bc6200010c640100000000026401000000009004565b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a81905550505062000825565b60405180610f0001604052806704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704398372e97bae8081526020016704395680a6af46808152602001670438cfa9de4a0e808152602001670437eeee904c06808152602001670436b44ebcb52e8081526020016704351fca638586808152602001670433316184bd0e808152602001670430e914205bc680815260200167042e46e23661ae80815260200167042b4acbc6cec6808152602001670427f4d0d1a30e80815260200167042444f156de868081526020016704203b2d56812e80815260200167041bd784d08b0680815260200167041719f7c4fc0e808152602001670412028633d44680815260200167040c91301d13ae808152602001670406c5f580ba46808152602001670400a0d65ec80e8081526020016703fa21d2b73d068081526020016703f348ea8a192e8081526020016703ec161dd75c868081526020016703e4896c9f070e8081526020016703dca2d6e118c68081526020016703d4625c9d91ae8081526020016703cbc7fdd471c68081526020016703c2d3ba85b90e8081526020016703b98592b167868081526020016703afdd86577d2e8081526020016703a5db9577fa0680815260200167039b7fc012de0e808152602001670390ca06282946808152602001670385ba67b7dbae80815260200167037a50e4c1f54680815260200167036e8d7d46760e8081526020016703627031455e06808152602001670355f900bead2e80815260200167034927ebb2638680815260200167033bfcf220810e80815260200167032e78140905c680815260200167032099516bf1ae80815260200167031260aa4944c6808152602001670303ce1ea0ff0e8081526020016702f4e1ae7320868081526020016702e59b59bfa92e8081526020016702d5fb208699068081526020016702c60102c7f00e8081526020016702b5ad0083ae468081526020016702a4ff19b9d3ae808152602001670293f74e6a6046808152602001670282959e95540e808152602001670270da0a3aaf0680815260200167025ec4915a712e80815260200167024c5533f49a86808152602001670238da1d6b04400081526020016702260c5cdf4d240081526020016702138f83989f90008152602001670201639196fb840081526020016701ef8886da61000081526020016701ddfe6362d0040081526020016701ccc5273048900081526020016701bbdcd242caa40081526020016701ab45649a564000815260200167019afede36eb6400815260200167018b093f188a1000815260200167017b64873f324400815260200167016c10b6aae40000815260200167015d0dcd5b9f4400815260200167014e5bcb51641000815260200167013ffab08c3264008152602001670131ea7d0c0a400081526020016701242b30d0eba4008152602001670116bccbdad6900081526020016701099f4e29cb0400815260200166fcd2b7bdc90000815260200166f0570896d08400815260200166e42c40b4e19000815260200166d8526017fc2400815260200166ccc966c0204000815260200166c19154ad4de400815260200166b6aa29df851000815260200166ac13e656c5c400815260200166a1ce8a1310000081526020016697da151463c4008152602001668e36875ac1100081526020016684e3e0e627e4008152602001667be221b6984000815260200166733149cc1224008152602001666ad1592695900081526020016662c24fc62284008152602001665b042daab900008152602001665396f2d45904008152602001664c7a9f4302900081526020016645af32f6b5a4008152602001663f34adef724000815260200166390b102d386400815260200166333259b00810008152602001662daa8a77e144008152602001662873a284c40000815260200166238da1d6b044008152602001661ef8886da610008152602001661ab45649a5640081526020016616c10b6aae4000815260200166131ea7d0c0a4008152602001660fcd2b7bdc90008152602001660ccc966c0204008152602001660a1ce8a131000081526020016607be221b69840081526020016605b042daab900081526020016603f34adef7240081526020016602873a284c4000815260200166016c10b6aae400815260200165a1ce8a1310008152602001652873a284c40081525060009060786200078e929190620007ab565b506208052060018190555060008054905060015402600281905550565b828054828255906000526020600020908101928215620007ea579160200282015b82811115620007e9578251825591602001919060010190620007cc565b5b509050620007f99190620007fd565b5090565b6200082291905b808211156200081e57600081600090555060010162000804565b5090565b90565b6112ed80620008356000396000f3fe608060405234801561001057600080fd5b5060043610610132576000357c0100000000000000000000000000000000000000000000000000000000900480634476d66a116100bf57806394f7f62b1161008e57806394f7f62b14610451578063df6a503014610493578063e6e100db146104b1578063f91c289814610509578063fb1ac5251461067457610132565b80634476d66a14610363578063553a5c85146103a557806358ceb672146103c357806360d4b8be146103cd57610132565b80631a488047116101065780631a4880471461020357806330f6eb161461022157806333ea51a81461028357806337339a16146102c75780633d84b8c11461030b57610132565b8062f380f414610137578063078d8e7a146101815780630f411cdb146101a357806318129375146101c1575b600080fd5b61013f610692565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101896106b8565b604051808215151515815260200191505060405180910390f35b6101ab6106c8565b6040518082815260200191505060405180910390f35b6101ed600480360360208110156101d757600080fd5b81019080803590602001909291905050506106ce565b6040518082815260200191505060405180910390f35b61020b6106ef565b6040518082815260200191505060405180910390f35b61026d6004803603604081101561023757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106f5565b6040518082815260200191505060405180910390f35b6102c56004803603602081101561029957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061071a565b005b610309600480360360208110156102dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061079b565b005b61034d6004803603602081101561032157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108a2565b6040518082815260200191505060405180910390f35b61038f6004803603602081101561037957600080fd5b81019080803590602001909291905050506108ba565b6040518082815260200191505060405180910390f35b6103ad6108d2565b6040518082815260200191505060405180910390f35b6103cb6108d8565b005b61040f600480360360208110156103e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061093c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61047d6004803603602081101561046757600080fd5b810190808035906020019092919050505061096f565b6040518082815260200191505060405180910390f35b61049b6109b3565b6040518082815260200191505060405180910390f35b6104f3600480360360208110156104c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b9565b6040518082815260200191505060405180910390f35b6105d56004803603604081101561051f57600080fd5b810190808035906020019064010000000081111561053c57600080fd5b82018360208201111561054e57600080fd5b8035906020019184602083028401116401000000008311171561057057600080fd5b90919293919293908035906020019064010000000081111561059157600080fd5b8201836020820111156105a357600080fd5b803590602001918460208302840111640100000000831117156105c557600080fd5b90919293919293905050506109d1565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561061c578082015181840152602081019050610601565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561065e578082015181840152602081019050610643565b5050505090500194505050505060405180910390f35b61067c610eca565b6040518082815260200191505060405180910390f35b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106c343610ed0565b905090565b60025481565b600081815481106106db57fe5b906000526020600020016000915090505481565b600a5481565b6008602052816000526040600020602052806000526040600020600091509150505481565b80600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461085e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616c6c6572206973206e6f742074686520636f6d6d756e6974792066756e6481525060200191505060405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915090505481565b60076020528060005260406000206000915090505481565b60035481565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061097a82610ed0565b1561098857600090506109ae565b6000600154838161099557fe5b04815481106109a057fe5b906000526020600020015490505b919050565b60045481565b60056020528060005260406000206000915090505481565b606080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a97576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616c6c6572206973206e6f74207468652073797374656d000000000000000081525060200191505060405180910390fd5b838390508686905014610af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061129d6025913960400191505060405180910390fd5b60018686905014610b6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f42656e65666163746f7273206c697374206c656e677468206973206e6f74203181525060200191505060405180910390fd5b600084846000818110610b7d57fe5b9050602002013561ffff1661ffff1614610be2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061127b6022913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1686866000818110610c0757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610c4b5750610c4a43610ed0565b5b15610cc1576000604051908082528060200260200182016040528015610c805781602001602082028038833980820191505090505b506000604051908082528060200260200182016040528015610cb15781602001602082028038833980820191505090505b5081915080905091509150610ec1565b60606002604051908082528060200260200182016040528015610cf35781602001602082028038833980820191505090505b50905060608151604051908082528060200260200182016040528015610d285781602001602082028038833980820191505090505b509050610d5d88886000818110610d3b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16610edf565b82600081518110610d6a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610dad4361096f565b81600081518110610dba57fe5b602002602001018181525050610df1600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610edf565b82600181518110610dfe57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5481600181518110610e4857fe5b602002602001018181525050610e8682600081518110610e6457fe5b602002602001015182600081518110610e7957fe5b6020026020010151610f8c565b610eb882600181518110610e9657fe5b602002602001015182600181518110610eab57fe5b6020026020010151611134565b81819350935050505b94509492505050565b60015481565b60006002548210159050919050565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f825782915050610f87565b809150505b919050565b610fef81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000438152602001908152602001600020546111f290919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060004381526020019081526020016000208190555061109581600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f290919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110fe8160076000438152602001908152602001600020546111f290919063ffffffff16565b600760004381526020019081526020016000208190555061112a816003546111f290919063ffffffff16565b6003819055505050565b611149816004546111f290919063ffffffff16565b6004819055506111a181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111f290919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111ee8282610f8c565b5050565b600080828401905083811015611270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4f766572666c6f77206572726f7200000000000000000000000000000000000081525060200191505060405180910390fd5b809150509291505056fe42656e65666163746f72206973206e6f742074686520626c6f636b20617574686f7242656e65666163746f72732f7479706573206c697374206c656e6774682064696666657273a165627a7a723058209c17c14dc9f6fcdd3ddef3913263be4e76376e948facfc131a975ceda79ba0d6002900000000000000000000000012047000000000000000000000000000000000030000000000000000000000000000000000000000000000000856d3dfb6e26d00" + }, + "0x1204700000000000000000000000000000000004": { + "balance": "40789499640000000000000000", + "constructor": "0x608060405260006001556a21bd8334ca74c3834c00003073ffffffffffffffffffffffffffffffffffffffff16311462000085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018062001b5b6023913960400191505060405180910390fd5b6200009e6200010b640100000000026401000000009004565b6a21bd8334ca74c3834c00006001541462000105576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018062001b0a6028913960400191505060405180910390fd5b620017b4565b6200014a73120470000000000000000000000000000000000a6a084595161401484a000000635d408564620016da640100000000026401000000009004565b62000188735a3977e000000000000000000000000000000000691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b620001c673aae0debd2a4c519364e6098537145369913b26ec6901c761ff4c24e9210000635db8d244620016da640100000000026401000000009004565b620002047336874a6000000000000000000000000000000000691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b6200024273108dd64c9e0d603d56304e97656e011831ed07ff6901c761ff4c24e9210000635db8d244620016da640100000000026401000000009004565b6200028073294f3750000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b620002be732fb294a0000000000000000000000000000000006902d2cd1fdffd73150000635db8d244620016da640100000000026401000000009004565b620002fc73102fb040000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b6200033a732b250010000000000000000000000000000000006902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b620003787335c468d000000000000000000000000000000000696abafbb89b2adcd80000635db8d244620016da640100000000026401000000009004565b620003b673c8be7a00000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b620003f47353f3170000000000000000000000000000000000692004e50f922be25a0000635db8d244620016da640100000000026401000000009004565b6200043373dc918900000000000000000000000000000000006a0215a6ea9b07d650380000635db8d244620016da640100000000026401000000009004565b6200047173b476ee7d610dae7b23b671ebc7bd6112e97729696902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b620004af732908b900000000000000000000000000000000006969e10de76676d0800000635d408564620016da640100000000026401000000009004565b620004ed733b2ef740000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b6200052b731153818a2eb49f0a71b27313c32814fc02e4db50694220bb939da668600000635db8d244620016da640100000000026401000000009004565b6200056973330d6100000000000000000000000000000000006923466459b949a9950000635db8d244620016da640100000000026401000000009004565b620005a7733e5518c20876eab3a42969d032fa7c30599af912691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b620005e57357f33efad76d4b783cf42c9e6cb08f4425dfe96e6902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b6200062373a87e88f0bbc43468cb657294f2479c6f35179b80692004e50f922be25a0000635db8d244620016da640100000000026401000000009004565b62000661734cebef90000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b6200069f73511909cef97475819de66b645f13464285c227ce6934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b620006dd7322fc2310000000000000000000000000000000006902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b6200071b7347919fb8d4e7e360bef0d5a7a2411593dbcc0e776902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b6200075973949423db1bfee1ddec99c9d24a12a6ea27cb34896901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b620007977343ec5680000000000000000000000000000000006907f0e10af47c1c700000635db8d244620016da640100000000026401000000009004565b620007d57367cf1c40622f39fa067b614f13aad6da5dd95f326969e10de76676d0800000635d408564620016da640100000000026401000000009004565b620008137310b9390000000000000000000000000000000000692ab13175efe0a8630000635db8d244620016da640100000000026401000000009004565b620008517376b707604cbd862050b938739637b7bde1b7ad486901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b6200088f73568075f0000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b620008cd73d44fb8de580d34f44789408cc9335c9a9ce0ce4d691ad0235eb930a0540000635db8d244620016da640100000000026401000000009004565b6200090a727801b12345b6f10b69263cd6d4fc50b58c8d80696d688e69e3a9742b0000635db8d244620016da640100000000026401000000009004565b62000948735d66a150000000000000000000000000000000006969e10de76676d0800000635d408564620016da640100000000026401000000009004565b62000987731d258680000000000000000000000000000000006a020057f2c74d5a91080000635db8d244620016da640100000000026401000000009004565b620009c57330e311c00000000000000000000000000000000069355d7ddc4d956e6c0000635db8d244620016da640100000000026401000000009004565b62000a0373428ab4b019ee3a9b9863b2b4bf1885ce6dff9a736902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b62000a41738081f20000000000000000000000000000000000691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b62000a7f735305c8071b604da7fb45059e7ebfa1d674ddfc3569038780827d32a3ab0000635db8d244620016da640100000000026401000000009004565b62000abd7335007170000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b62000afc733484c850000000000000000000000000000000006a0422ca8b0a00a42500000063608a9f84620016da640100000000026401000000009004565b62000b3a73ffd9b871df6e93803c0877e98fc1722b39c00d786902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b62000b787396a5eb172efdf262ed6beaaf0e20c6af71831fc96934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62000bb6732dd2e140000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b62000bf473656e5569bef7781bf0db199d32027766053501ff69438ec266600555e00000635db8d244620016da640100000000026401000000009004565b62000c32731d53db7000000000000000000000000000000000691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b62000c7073b5b6d8885fbf28f843cc7886de242b811d6952056901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b62000cae734549ef8e287b94f1c0a8b88f55ed8707d74d843c6934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62000cec73dacd80d8e1d4f117515caa477ee7599cdfc766196902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b62000d2a731f603e000000000000000000000000000000000069d3c21bcecceda1000000635db8d244620016da640100000000026401000000009004565b62000d68735548f000000000000000000000000000000000006902ab1310b5b095920000635db8d244620016da640100000000026401000000009004565b62000da6735bb9ba00000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62000de4736dd10e41a7a84fe23ab35fefa2f46c9895f87a2d693c8c4bde2deef1680000635db8d244620016da640100000000026401000000009004565b62000e227316337db0000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b62000e6073b999004b49c6b907d4278067da5c85195dcd7fc769081e0dd1d85030b50000635db8d244620016da640100000000026401000000009004565b62000e9e733dbb2290000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62000edc73559da540000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62000f1a733a9d83766c03c465851a38daa364ef7deccd1ece6934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62000f5873b61c11b6e42d459efaee8995c44db08507e468e169477d5529f68a63000000635db8d244620016da640100000000026401000000009004565b62000f9673e803d7955a911106cb8fd79049a2374ff059000369038780827d32a3ab0000635db8d244620016da640100000000026401000000009004565b62000fd473509b057000000000000000000000000000000000691aaebeee26cab7360000635db8d244620016da640100000000026401000000009004565b620010127383980db85394d7c1610f37a90be744432368bad4692393a931b168245d0000635db8d244620016da640100000000026401000000009004565b6200105073db6cc57168c07b83a00f1f8871538446068824fc691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b6200108e735035fba0000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b620010cc73d96c8300000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b6200110b7331178cd0000000000000000000000000000000006a042b4dd5360faca070000063608a9f84620016da640100000000026401000000009004565b62001149732f531158e2305ed4fb4144a2f4085e3d96e1982e6934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b62001188735d5da310000000000000000000000000000000006a017293b0a9e69fd9c00000635db8d244620016da640100000000026401000000009004565b620011c67318b9347000000000000000000000000000000000696abafbb89b2adcd80000635d408564620016da640100000000026401000000009004565b62001203722d4606b65c033769968bcdc63881b90b0853f5692648770b742bb90b0000635db8d244620016da640100000000026401000000009004565b62001241731faa8d10000000000000000000000000000000006969e10de76676d0800000635d408564620016da640100000000026401000000009004565b6200127f7333445720000000000000000000000000000000006902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b620012bd730d1d4e623d10f9fba5db95830f7d3839406c6af26901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b620012fa72c2f65230815d30eaa1a4d057bcf0b72fe3cc4e6902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b62001338739c3a5ec7bd63ecac1b92abe4b01b12ffd50bf3f26969e10de76676d0800000635d408564620016da640100000000026401000000009004565b620013767345635660000000000000000000000000000000006969e10de76676d0800000635d408564620016da640100000000026401000000009004565b620013b2739be61e41490f5227080fa1adbe3ec0a973d59732678ac7230489e80000635cc83884620016da640100000000026401000000009004565b620013f073572f91b0000000000000000000000000000000006934f086f3b33b68400000635db8d244620016da640100000000026401000000009004565b6200142e7339350e4a75d1e50a5072950325328884c11c12326901c761ff4c24e9210000635db8d244620016da640100000000026401000000009004565b6200146c733c96a530000000000000000000000000000000006969e10de76676d0800000635d408564620016da640100000000026401000000009004565b620014aa730ad7ba4af33b485e6f2505c417554631a3e5643f6902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b620014e8735eea7250000000000000000000000000000000006901c3c02f7b2019f50000635db8d244620016da640100000000026401000000009004565b62001526733ab790e0000000000000000000000000000000006902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b62001564734cf84620000000000000000000000000000000006902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b620015a2735425f6f0000000000000000000000000000000006969e10de76676d0800000635d408564620016da640100000000026401000000009004565b620015e0736d516767e4068fc331bdb331fba7578bdb07a68c69234b04ae4f23156b0000635db8d244620016da640100000000026401000000009004565b6200161e73106a8ff0000000000000000000000000000000006902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b6200165c73102fb9400000000000000000000000000000000069038780827d32a3ab0000635db8d244620016da640100000000026401000000009004565b6200169a737ed62cf71d519d3bf293ef90829508f92f4ccccb6902a5a058fc295ed00000635db8d244620016da640100000000026401000000009004565b620016d873199a8c5000000000000000000000000000000000691a784379d99db4200000635db8d244620016da640100000000026401000000009004565b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015414801562001735575060008160010154145b6200178c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018062001b326029913960400191505060405180910390fd5b8260016000828254019250508190555082816000018190555081816001018190555050505050565b61034680620017c46000396000f3fe608060405234801561001057600080fd5b5060043610610069576000357c01000000000000000000000000000000000000000000000000000000009004806318a5bbdc1461006e578063192e7a7b146100cd57806330f0dbe0146101115780639976e12f1461012f575b600080fd5b6100b06004803603602081101561008457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061014d565b604051808381526020018281526020019250505060405180910390f35b61010f600480360360208110156100e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610171565b005b610119610305565b6040518082815260200191505060405180910390f35b610137610314565b6040518082815260200191505060405180910390f35b60006020528060005260406000206000915090508060000154908060010154905082565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001541161022d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f417661696c61626c6520616d6f756e742069732030000000000000000000000081525060200191505060405180910390fd5b806001015442116102a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f486f6c64696e6720706572696f64206973206e6f74206f76657200000000000081525060200191505060405180910390fd5b600081600001549050600082600001819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156102ff573d6000803e3d6000fd5b50505050565b6a21bd8334ca74c3834c000081565b6001548156fea165627a7a7230582078bf501dd1d053c49557b82491b940e47ebf94b95608375e22da53fcc7120a1a002954617267657420616d6f756e742073686f756c6420657175616c2061637475616c20616d6f756e74486f6c64696e6720666f72207468697320616464726573732077617320616c7265616479207365742e42616c616e63652073686f756c6420657175616c2074617267657420616d6f756e742e" + }, + "0x1204700000000000000000000000000000000006": { + "constructor": "0x6080604052670de0b6b3a76400006003553480156200001d57600080fd5b5060405160208062003e58833981018060405260208110156200003f57600080fd5b8101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a362000126816200012d640100000000026401000000009004565b506200028f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613bb9806200029f6000396000f3fe6080604052600436106101d4576000357c0100000000000000000000000000000000000000000000000000000000900480639269881411610109578063df57b742116100a7578063ef5454d611610081578063ef5454d614610d59578063f25eb5c114610e17578063f2fde38b14610e2e578063f6d339e414610e7f576101d4565b8063df57b74214610b62578063e30bd74014610bdd578063eadf976014610ca7576101d4565b8063ac72c120116100e3578063ac72c120146109c5578063c3a3582514610a18578063ddca3f4314610abc578063deb931a214610ae7576101d4565b806392698814146108855780639890220b146108d8578063ac4e73f914610907576101d4565b806369fe0e2d1161017657806379ce9fac1161015057806379ce9fac146106e85780638da5cb5b1461075b5780638f32d59b146107b257806390b97fc1146107e1576101d4565b806369fe0e2d146105b45780636a1acc3f14610607578063715018a6146106d1576101d4565b80633f3935d1116101b25780633f3935d1146103ad578063432ced041461044b5780634f39ca59146104915780636795dbcd146104e4576101d4565b806306b2ff47146101d957806319362a2814610242578063267b6922146102f4575b600080fd5b3480156101e557600080fd5b50610228600480360360208110156101fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f47565b604051808215151515815260200191505060405180910390f35b34801561024e57600080fd5b506102da6004803603606081101561026557600080fd5b81019080803590602001909291908035906020019064010000000081111561028c57600080fd5b82018360208201111561029e57600080fd5b803590602001918460018302840111640100000000831117156102c057600080fd5b909192939192939080359060200190929190505050610fa7565b604051808215151515815260200191505060405180910390f35b34801561030057600080fd5b5061032d6004803603602081101561031757600080fd5b81019080803590602001909291905050506111ff565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182151515158152602001935050505060405180910390f35b3480156103b957600080fd5b50610431600480360360208110156103d057600080fd5b81019080803590602001906401000000008111156103ed57600080fd5b8201836020820111156103ff57600080fd5b8035906020019184600183028401116401000000008311171561042157600080fd5b9091929391929390505050611276565b604051808215151515815260200191505060405180910390f35b6104776004803603602081101561046157600080fd5b8101908080359060200190929190505050611553565b604051808215151515815260200191505060405180910390f35b34801561049d57600080fd5b506104ca600480360360208110156104b457600080fd5b810190808035906020019092919050505061185c565b604051808215151515815260200191505060405180910390f35b3480156104f057600080fd5b506105726004803603604081101561050757600080fd5b81019080803590602001909291908035906020019064010000000081111561052e57600080fd5b82018360208201111561054057600080fd5b8035906020019184600183028401116401000000008311171561056257600080fd5b9091929391929390505050611acc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105c057600080fd5b506105ed600480360360208110156105d757600080fd5b8101908080359060200190929190505050611bb0565b604051808215151515815260200191505060405180910390f35b34801561061357600080fd5b506106566004803603602081101561062a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c73565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561069657808201518184015260208101905061067b565b50505050905090810190601f1680156106c35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106dd57600080fd5b506106e6611d23565b005b3480156106f457600080fd5b506107416004803603604081101561070b57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e5c565b604051808215151515815260200191505060405180910390f35b34801561076757600080fd5b5061077061208a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107be57600080fd5b506107c76120b3565b604051808215151515815260200191505060405180910390f35b3480156107ed57600080fd5b5061086f6004803603604081101561080457600080fd5b81019080803590602001909291908035906020019064010000000081111561082b57600080fd5b82018360208201111561083d57600080fd5b8035906020019184600183028401116401000000008311171561085f57600080fd5b909192939192939050505061210a565b6040518082815260200191505060405180910390f35b34801561089157600080fd5b506108be600480360360208110156108a857600080fd5b81019080803590602001909291905050506121ea565b604051808215151515815260200191505060405180910390f35b3480156108e457600080fd5b506108ed6122f3565b604051808215151515815260200191505060405180910390f35b34801561091357600080fd5b506109ab6004803603604081101561092a57600080fd5b810190808035906020019064010000000081111561094757600080fd5b82018360208201111561095957600080fd5b8035906020019184600183028401116401000000008311171561097b57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612422565b604051808215151515815260200191505060405180910390f35b3480156109d157600080fd5b506109fe600480360360208110156109e857600080fd5b8101908080359060200190929190505050612982565b604051808215151515815260200191505060405180910390f35b348015610a2457600080fd5b50610aa660048036036040811015610a3b57600080fd5b810190808035906020019092919080359060200190640100000000811115610a6257600080fd5b820183602082011115610a7457600080fd5b80359060200191846001830284011164010000000083111715610a9657600080fd5b9091929391929390505050612a8b565b6040518082815260200191505060405180910390f35b348015610ac857600080fd5b50610ad1612b6f565b6040518082815260200191505060405180910390f35b348015610af357600080fd5b50610b2060048036036020811015610b0a57600080fd5b8101908080359060200190929190505050612b75565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b6e57600080fd5b50610b9b60048036036020811015610b8557600080fd5b8101908080359060200190929190505050612c4e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610be957600080fd5b50610c2c60048036036020811015610c0057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d27565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c6c578082015181840152602081019050610c51565b50505050905090810190601f168015610c995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610cb357600080fd5b50610d3f60048036036060811015610cca57600080fd5b810190808035906020019092919080359060200190640100000000811115610cf157600080fd5b820183602082011115610d0357600080fd5b80359060200191846001830284011164010000000083111715610d2557600080fd5b909192939192939080359060200190929190505050612e08565b604051808215151515815260200191505060405180910390f35b348015610d6557600080fd5b50610dfd60048036036040811015610d7c57600080fd5b8101908080359060200190640100000000811115610d9957600080fd5b820183602082011115610dab57600080fd5b80359060200191846001830284011164010000000083111715610dcd57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613063565b604051808215151515815260200191505060405180910390f35b348015610e2357600080fd5b50610e2c613297565b005b348015610e3a57600080fd5b50610e7d60048036036020811015610e5157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613648565b005b348015610e8b57600080fd5b50610f2d60048036036060811015610ea257600080fd5b810190808035906020019092919080359060200190640100000000811115610ec957600080fd5b820183602082011115610edb57600080fd5b80359060200191846001830284011164010000000083111715610efd57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506136ce565b604051808215151515815260200191505060405180910390f35b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080546001816001161561010002031660029004905014159050919050565b6000846001600082815260200190815260200160002060010160149054906101000a900460ff1615611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611119576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b83600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a2600192505050949350505050565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900460ff16905083565b600082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600160008280519060200120815260200190815260200160002060010160149054906101000a900460ff161561135b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050503373ffffffffffffffffffffffffffffffffffffffff16600160008380519060200120815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461147e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4572726f723a204f6e6c79207768656e2070726f706f7365640000000000000081525060200191505060405180910390fd5b8484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091906114cc929190613aa0565b503373ffffffffffffffffffffffffffffffffffffffff167f098ae8581bb8bd9af1beaf7f2e9f51f31a8e5a8bfada4e303a645d71d9c91920868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a260019250505092915050565b6000816001600082815260200190815260200160002060010160149054906101000a900460ff16156115ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4572726f723a204f6e6c79207768656e20756e7265736572766564000000000081525060200191505060405180910390fd5b60035434101561173e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4572726f723a206f6e6c79207768656e2066656520706169640000000000000081525060200191505060405180910390fd5b6117466120b3565b6117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b336001600086815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16847f4963513eca575aba66fdcd25f267aae85958fe6fb97e75fa25d783f1a091a22160405160405180910390a3600192505050919050565b6000816001600082815260200190815260200160002060010160149054906101000a900460ff16156118f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b823373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b600260006001600087815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611a4f9190613b20565b600180600086815260200190815260200160002060010160146101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16847fef1961b4d2909dc23643b309bfe5c3e5646842d98c3a58517037ef3871185af360405160405180910390a3600192505050919050565b6000836001600082815260200190815260200160002060010160149054906101000a900460ff1615611b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b600160008681526020019081526020016000206002018484604051808383808284378083019250505092505050908152602001604051809103902054600190049150509392505050565b6000611bba6120b3565b611c2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b816003819055507f6bbc57480a46553fa4d156ce702beef5f3ad66303b0ed1a5d4cb44966c6584c3826040518082815260200191505060405180910390a160019050919050565b60026020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d1b5780601f10611cf057610100808354040283529160200191611d1b565b820191906000526020600020905b815481529060010190602001808311611cfe57829003601f168201915b505050505081565b611d2b6120b3565b611d9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000826001600082815260200190815260200160002060010160149054906101000a900460ff1615611ef6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b833373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b836001600087815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16867f7b97c62130aa09acbbcbf7482630e756592496f1759eaf702f469cf64dfb779460405160405180910390a460019250505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000836001600082815260200190815260200160002060010160149054906101000a900460ff16156121a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b6001600086815260200190815260200160002060020184846040518083838082843780830192505050925050509081526020016040518091039020549150509392505050565b6000816001600082815260200190815260200160002060010160149054906101000a900460ff1615612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415915050919050565b60006122fd6120b3565b61236f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b7fdef931299fe61d176f949118058530c1f3f539dcb6950b4e372c9b835c33ca073073ffffffffffffffffffffffffffffffffffffffff16316040518082815260200191505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561241a573d6000803e3d6000fd5b506001905090565b600083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600160008280519060200120815260200190815260200160002060010160149054906101000a900460ff1615612507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b848460405180838380828437808301925050509250505060405180910390203373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b6000868660405180838380828437808301925050509250505060405180910390209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561276e575080600260006001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051808280546001816001161561010002031660029004801561275f5780601f1061273d57610100808354040283529182019161275f565b820191906000526020600020905b81548152906001019060200180831161274b575b50509150506040518091039020145b156128a557600260006001600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006127f49190613b20565b6001600082815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd888860405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a25b846001600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f728435a0031f6a04538fcdd24922a7e06bc7bc945db03e83d22122d1bc5f28df888860405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a2600193505050509392505050565b6000816001600082815260200190815260200160002060010160149054906101000a900460ff1615612a1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166001600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415915050919050565b6000836001600082815260200190815260200160002060010160149054906101000a900460ff1615612b25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b600160008681526020019081526020016000206002018484604051808383808284378083019250505092505050908152602001604051809103902054600190049150509392505050565b60035481565b6000816001600082815260200190815260200160002060010160149054906101000a900460ff1615612c0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000816001600082815260200190815260200160002060010160149054906101000a900460ff1615612ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b6001600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6060600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612dfc5780601f10612dd157610100808354040283529160200191612dfc565b820191906000526020600020905b815481529060010190602001808311612ddf57829003601f168201915b50505050509050919050565b6000846001600082815260200190815260200160002060010160149054906101000a900460ff1615612ea2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b83600102600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a2600192505050949350505050565b600083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050600160008280519060200120815260200190815260200160002060010160149054906101000a900460ff1615613148576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b6131506120b3565b6131c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b8484600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209190613210929190613aa0565b508273ffffffffffffffffffffffffffffffffffffffff167f098ae8581bb8bd9af1beaf7f2e9f51f31a8e5a8bfada4e303a645d71d9c91920868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a260019150509392505050565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561336a5780601f1061333f5761010080835404028352916020019161336a565b820191906000526020600020905b81548152906001019060200180831161334d57829003601f168201915b5050505050600160008280519060200120815260200190815260200160002060010160149054906101000a900460ff161561340d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4572726f723a204f6e6c79207768656e20656e7472790000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f12491ad95fd945e444d88a894ffad3c21959880a4dcd8af99d4ae4ffc71d4abd600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051808060200182810382528381815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561350d5780601f106134e25761010080835404028352916020019161350d565b820191906000526020600020905b8154815290600101906020018083116134f057829003601f168201915b50509250505060405180910390a260016000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180828054600181600116156101000203166002900480156135b95780601f106135975761010080835404028352918201916135b9565b820191906000526020600020905b8154815290600101906020018083116135a5575b50509150506040518091039020815260200190815260200160002060010160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006136459190613b20565b50565b6136506120b3565b6136c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f53656e646572206973206e6f74206f776e65720000000000000000000000000081525060200191505060405180910390fd5b6136cb8161393f565b50565b6000846001600082815260200190815260200160002060010160149054906101000a900460ff1615613768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4572726f723a204f6e6c79207768656e20656e7472792072617700000000000081525060200191505060405180910390fd5b853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613840576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4572726f723a204f6e6c79206f776e6572206f6600000000000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16600102600160008981526020019081526020016000206002018787604051808383808284378083019250505092505050908152602001604051809103902081905550867fb829c3e412537bbe794c048ccb9e4605bb4aaaa8e4d4c15c1a6e0c2adc1716ea878789896040518080602001806020018381038352878782818152602001925080828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925080828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a2600192505050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156139e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4e6577206f776e657220616464726573732063616e6e6f74206265203078300081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ae157803560ff1916838001178555613b0f565b82800160010185558215613b0f579182015b82811115613b0e578235825591602001919060010190613af3565b5b509050613b1c9190613b68565b5090565b50805460018160011615610100020316600290046000825580601f10613b465750613b65565b601f016020900490600052602060002090810190613b649190613b68565b5b50565b613b8a91905b80821115613b86576000816000905550600101613b6e565b5090565b9056fea165627a7a723058201b0da92162b975c882f9c56423cbea6ec9afb46d8dccc92abe125e91c84d52de00290000000000000000000000001204700000000000000000000000000000000005" + }, + "0x1204700000000000000000000000000000000007": { + "constructor": "0x608060405234801561001057600080fd5b50604051604080610a5f833981018060405261002f919081019061028d565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101448161014b640100000000026401000000009004565b505061036c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156101bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101b290610309565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610285825161033a565b905092915050565b600080604083850312156102a057600080fd5b60006102ae85828601610279565b92505060206102bf85828601610279565b9150509250929050565b60006102d6601f83610329565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b60006020820190508181036000830152610322816102c9565b9050919050565b600082825260208201905092915050565b60006103458261034c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6106e48061037b6000396000f3fe608060405234801561001057600080fd5b506004361061007f576000357c0100000000000000000000000000000000000000000000000000000000900480636ddc4a0714610084578063715018a6146100a25780638da5cb5b146100ac5780638f32d59b146100ca578063f2fde38b146100e8578063fe64d6ff14610104575b600080fd5b61008c610120565b60405161009991906105b3565b60405180910390f35b6100aa610146565b005b6100b461024c565b6040516100c191906105b3565b60405180910390f35b6100d2610275565b6040516100df91906105ce565b60405180910390f35b61010260048036036100fd91908101906104ec565b6102cc565b005b61011e600480360361011991908101906104ec565b61031f565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61014e610275565b61018d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018490610609565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6102d4610275565b610313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030a90610609565b60405180910390fd5b61031c816103aa565b50565b610327610275565b610366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035d90610609565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561041a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610411906105e9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006104e48235610678565b905092915050565b6000602082840312156104fe57600080fd5b600061050c848285016104d8565b91505092915050565b61051e8161063a565b82525050565b61052d8161064c565b82525050565b6000610540601f83610629565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b6000610580601383610629565b91507f53656e646572206973206e6f74206f776e6572000000000000000000000000006000830152602082019050919050565b60006020820190506105c86000830184610515565b92915050565b60006020820190506105e36000830184610524565b92915050565b6000602082019050818103600083015261060281610533565b9050919050565b6000602082019050818103600083015261062281610573565b9050919050565b600082825260208201905092915050565b600061064582610658565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006106838261068a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff8216905091905056fea265627a7a723058207424d262effee3c4b2cfbe03927ef8931223cda85f89bf647b88b2f7e64cc5516c6578706572696d656e74616cf5003700000000000000000000000012047000000000000000000000000000000000090000000000000000000000001204700000000000000000000000000000000005" + }, + "0x1204700000000000000000000000000000000008": { + "constructor": "0x60806040523480156200001157600080fd5b5060405160408062002b838339810180604052620000339190810190620002af565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200014a8162000152640100000000026401000000009004565b5050620003ad565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001bc9062000332565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600062000291825162000365565b905092915050565b6000620002a7825162000379565b905092915050565b60008060408385031215620002c357600080fd5b6000620002d38582860162000299565b9250506020620002e68582860162000283565b9150509250929050565b6000620002ff601f8362000354565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b600060208201905081810360008301526200034d81620002f0565b9050919050565b600082825260208201905092915050565b600062000372826200038d565b9050919050565b6000620003868262000365565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6127c680620003bd6000396000f3fe608060405234801561001057600080fd5b506004361061011d576000357c010000000000000000000000000000000000000000000000000000000090048063954029c9116100b4578063eab7ad9211610083578063eab7ad92146102e4578063ee7ee0fd14610300578063f2fde38b14610330578063fbd74f841461034c5761011d565b8063954029c91461024c578063a999809f14610268578063b71da0d114610298578063da5393d5146102c85761011d565b806370a05b18116100f057806370a05b18146101d6578063715018a6146102065780638da5cb5b146102105780638f32d59b1461022e5761011d565b80631bab58f5146101225780632c5653e21461015257806332d91c0e146101705780636a564261146101a0575b600080fd5b61013c60048036036101379190810190611f97565b61037c565b604051610149919061260c565b60405180910390f35b61015a6107b5565b604051610167919061254f565b60405180910390f35b61018a60048036036101859190810190611f97565b6107db565b604051610197919061256a565b60405180910390f35b6101ba60048036036101b59190810190611f97565b6109e8565b6040516101cd97969594939291906124c4565b60405180910390f35b6101f060048036036101eb9190810190611f97565b610c97565b6040516101fd91906124a2565b60405180910390f35b61020e610ea4565b005b610218610faa565b604051610225919061246c565b60405180910390f35b610236610fd3565b6040516102439190612487565b60405180910390f35b61026660048036036102619190810190611f97565b61102a565b005b610282600480360361027d9190810190611f97565b61119d565b60405161028f919061256a565b60405180910390f35b6102b260048036036102ad9190810190611f97565b6113aa565b6040516102bf9190612487565b60405180910390f35b6102e260048036036102dd9190810190611f97565b61143a565b005b6102fe60048036036102f99190810190611fe9565b611535565b005b61031a60048036036103159190810190611f97565b611853565b6040516103279190612487565b60405180910390f35b61034a60048036036103459190810190611f97565b6119d5565b005b61036660048036036103619190810190611f97565b611a28565b60405161037391906124a2565b60405180910390f35b610384611d63565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561040857600080fd5b505afa15801561041c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104409190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a49061258c565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060e0016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105905780601f1061056557610100808354040283529160200191610590565b820191906000526020600020905b81548152906001019060200180831161057357829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106d45780601f106106a9576101008083540402835291602001916106d4565b820191906000526020600020905b8154815290600101906020018083116106b757829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107765780601f1061074b57610100808354040283529160200191610776565b820191906000526020600020905b81548152906001019060200180831161075957829003601f168201915b505050505081526020016004820160009054906101000a900460ff16151515158152602001600582015481526020016006820154815250509050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561086157600080fd5b505afa158015610875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108999190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd9061258c565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109dc5780601f106109b1576101008083540402835291602001916109dc565b820191906000526020600020905b8154815290600101906020018083116109bf57829003601f168201915b50505050509050919050565b6001602052806000526040600020600091509050806000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a945780601f10610a6957610100808354040283529160200191610a94565b820191906000526020600020905b815481529060010190602001808311610a7757829003601f168201915b505050505090806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b325780601f10610b0757610100808354040283529160200191610b32565b820191906000526020600020905b815481529060010190602001808311610b1557829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bd05780601f10610ba557610100808354040283529160200191610bd0565b820191906000526020600020905b815481529060010190602001808311610bb357829003601f168201915b505050505090806003018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c6e5780601f10610c4357610100808354040283529160200191610c6e565b820191906000526020600020905b815481529060010190602001808311610c5157829003601f168201915b5050505050908060040160009054906101000a900460ff16908060050154908060060154905087565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015610d1d57600080fd5b505afa158015610d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d559190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db99061258c565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e985780601f10610e6d57610100808354040283529160200191610e98565b820191906000526020600020905b815481529060010190602001808311610e7b57829003601f168201915b50505050509050919050565b610eac610fd3565b610eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee2906125ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156110ae57600080fd5b505afa1580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110e69190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a9061258c565b60405180910390fd5b43600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555050565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561122357600080fd5b505afa158015611237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061125b9190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf9061258c565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561139e5780601f106113735761010080835404028352916020019161139e565b820191906000526020600020905b81548152906001019060200180831161138157829003601f168201915b50505050509050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154109050919050565b611442610fd3565b611481576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611478906125ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e8906125ac565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156115b957600080fd5b505afa1580156115cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115f19190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461165e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116559061258c565b60405180910390fd5b8888600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000191906116af929190611da2565b508686600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019190611701929190611e22565b508484600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002019190611753929190611da2565b508282600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030191906117a5929190611e22565b5080600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006101000a81548160ff02191690831515021790555043600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555050505050505050505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156118d957600080fd5b505afa1580156118ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119119190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461197e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119759061258c565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff169050919050565b6119dd610fd3565b611a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a13906125ec565b60405180910390fd5b611a2581611c35565b50565b6060600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636ddc4a076040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015611aae57600080fd5b505afa158015611ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ae69190810190611fc0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a9061258c565b60405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c295780601f10611bfe57610100808354040283529160200191611c29565b820191906000526020600020905b815481529060010190602001808311611c0c57829003601f168201915b50505050509050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9c906125cc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060e001604052806060815260200160608152602001606081526020016060815260200160001515815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611de357803560ff1916838001178555611e11565b82800160010185558215611e11579182015b82811115611e10578235825591602001919060010190611df5565b5b509050611e1e9190611ea2565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e6357803560ff1916838001178555611e91565b82800160010185558215611e91579182015b82811115611e90578235825591602001919060010190611e75565b5b509050611e9e9190611ea2565b5090565b611ec491905b80821115611ec0576000816000905550600101611ea8565b5090565b90565b6000611ed382356126e6565b905092915050565b6000611ee782516126e6565b905092915050565b6000611efb82356126f8565b905092915050565b60008083601f840112611f1557600080fd5b8235905067ffffffffffffffff811115611f2e57600080fd5b602083019150836001820283011115611f4657600080fd5b9250929050565b60008083601f840112611f5f57600080fd5b8235905067ffffffffffffffff811115611f7857600080fd5b602083019150836001820283011115611f9057600080fd5b9250929050565b600060208284031215611fa957600080fd5b6000611fb784828501611ec7565b91505092915050565b600060208284031215611fd257600080fd5b6000611fe084828501611edb565b91505092915050565b60008060008060008060008060008060c08b8d03121561200857600080fd5b60006120168d828e01611ec7565b9a505060208b013567ffffffffffffffff81111561203357600080fd5b61203f8d828e01611f03565b995099505060408b013567ffffffffffffffff81111561205e57600080fd5b61206a8d828e01611f4d565b975097505060608b013567ffffffffffffffff81111561208957600080fd5b6120958d828e01611f03565b955095505060808b013567ffffffffffffffff8111156120b457600080fd5b6120c08d828e01611f4d565b935093505060a06120d38d828e01611eef565b9150509295989b9194979a5092959850565b6120ee8161269e565b82525050565b6120fd816126b0565b82525050565b61210c816126b0565b82525050565b600061211d82612639565b612127818561266b565b9350612137818560208601612748565b6121408161277b565b840191505092915050565b60006121568261262e565b612160818561265a565b9350612170818560208601612748565b6121798161277b565b840191505092915050565b600061218f8261262e565b612199818561266b565b93506121a9818560208601612748565b6121b28161277b565b840191505092915050565b6121c681612724565b82525050565b60006121d78261264f565b6121e1818561268d565b93506121f1818560208601612748565b6121fa8161277b565b840191505092915050565b600061221082612644565b61221a818561267c565b935061222a818560208601612748565b6122338161277b565b840191505092915050565b600061224982612644565b612253818561268d565b9350612263818560208601612748565b61226c8161277b565b840191505092915050565b600061228460138361268d565b91507f4572726f723a206f6e6c794c6f676963204462000000000000000000000000006000830152602082019050919050565b60006122c460298361268d565b91507f4572726f723a206e65774c6f6f6b5570206973206e6f7420616c6c6f7765642060008301527f746f2062652030783000000000000000000000000000000000000000000000006020830152604082019050919050565b600061232a601f8361268d565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b600061236a60138361268d565b91507f53656e646572206973206e6f74206f776e6572000000000000000000000000006000830152602082019050919050565b600060e08301600083015184820360008601526123ba828261214b565b915050602083015184820360208601526123d48282612205565b915050604083015184820360408601526123ee828261214b565b915050606083015184820360608601526124088282612205565b915050608083015161241d60808601826120f4565b5060a083015161243060a086018261244e565b5060c083015161244360c086018261244e565b508091505092915050565b612457816126dc565b82525050565b612466816126dc565b82525050565b600060208201905061248160008301846120e5565b92915050565b600060208201905061249c6000830184612103565b92915050565b600060208201905081810360008301526124bc8184612112565b905092915050565b600060e08201905081810360008301526124de818a612184565b905081810360208301526124f2818961223e565b905081810360408301526125068188612184565b9050818103606083015261251a818761223e565b90506125296080830186612103565b61253660a083018561245d565b61254360c083018461245d565b98975050505050505050565b600060208201905061256460008301846121bd565b92915050565b6000602082019050818103600083015261258481846121cc565b905092915050565b600060208201905081810360008301526125a581612277565b9050919050565b600060208201905081810360008301526125c5816122b7565b9050919050565b600060208201905081810360008301526125e58161231d565b9050919050565b600060208201905081810360008301526126058161235d565b9050919050565b60006020820190508181036000830152612626818461239d565b905092915050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b60006126a9826126bc565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006126f182612704565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061272f82612736565b9050919050565b6000612741826126bc565b9050919050565b60005b8381101561276657808201518184015260208101905061274b565b83811115612775576000848401525b50505050565b6000601f19601f830116905091905056fea265627a7a723058207e60ec05ac38073f6d98c9cff2cce094d00db0238d6d4b0c183253539a43fe2b6c6578706572696d656e74616cf5003700000000000000000000000012047000000000000000000000000000000000070000000000000000000000001204700000000000000000000000000000000005" + }, + "0x1204700000000000000000000000000000000009": { + "constructor": "0x60806040523480156200001157600080fd5b50604051604080620021cc8339810180604052620000339190810190620002af565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200014a8162000152640100000000026401000000009004565b5050620003ad565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620001c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001bc9062000332565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600062000291825162000365565b905092915050565b6000620002a7825162000379565b905092915050565b60008060408385031215620002c357600080fd5b6000620002d38582860162000299565b9250506020620002e68582860162000283565b9150509250929050565b6000620002ff601f8362000354565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b600060208201905081810360008301526200034d81620002f0565b9050919050565b600082825260208201905092915050565b600062000372826200038d565b9050919050565b6000620003868262000365565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b611e0f80620003bd6000396000f3fe608060405234801561001057600080fd5b50600436106100b0576000357c0100000000000000000000000000000000000000000000000000000000900480638da5cb5b116100835780638da5cb5b146101155780638f32d59b14610133578063b71da0d114610151578063ec26261114610181578063f2fde38b1461019f576100b0565b806312127ed7146100b55780633f67c333146100d1578063715018a6146100db57806389c3ce1e146100e5575b600080fd5b6100cf60048036036100ca9190810190611450565b6101bb565b005b6100d96109dd565b005b6100e3610b98565b005b6100ff60048036036100fa9190810190611427565b610c9e565b60405161010c9190611b14565b60405180910390f35b61011d610d85565b60405161012a91906119ab565b60405180910390f35b61013b610dae565b6040516101489190611a5e565b60405180910390f35b61016b60048036036101669190810190611427565b610e05565b6040516101789190611a5e565b60405180910390f35b610189610ed5565b6040516101969190611a79565b60405180910390f35b6101b960048036036101b49190810190611427565b610efb565b005b6101c3610dae565b610202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f990611ab4565b60405180910390fd5b6002856040516102129190611994565b602060405180830381855afa15801561022f573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506102529190810190611562565b6002600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbd74f84896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016102cb91906119ab565b60006040518083038186803b1580156102e357600080fd5b505afa1580156102f7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610320919081019061158b565b60405161032d9190611994565b602060405180830381855afa15801561034a573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525061036d9190810190611562565b1480156104e257506002846040516103859190611994565b602060405180830381855afa1580156103a2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506103c59190810190611562565b6002600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a999809f896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161043e91906119ab565b60006040518083038186803b15801561045657600080fd5b505afa15801561046a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061049391908101906115cc565b6040516104a09190611994565b602060405180830381855afa1580156104bd573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506104e09190810190611562565b145b801561065657506002836040516104f99190611994565b602060405180830381855afa158015610516573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506105399190810190611562565b6002600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a05b18896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105b291906119ab565b60006040518083038186803b1580156105ca57600080fd5b505afa1580156105de573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610607919081019061158b565b6040516106149190611994565b602060405180830381855afa158015610631573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506106549190810190611562565b145b80156107ca575060028260405161066d9190611994565b602060405180830381855afa15801561068a573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506106ad9190810190611562565b6002600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332d91c0e896040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161072691906119ab565b60006040518083038186803b15801561073e57600080fd5b505afa158015610752573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061077b91908101906115cc565b6040516107889190611994565b602060405180830381855afa1580156107a5573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052506107c89190810190611562565b145b801561089f5750801515600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee7ee0fd886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161084b91906119ab565b60206040518083038186803b15801561086357600080fd5b505afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061089b9190810190611539565b1515145b156108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d690611ad4565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eab7ad928787878787876040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610960969594939291906119e1565b600060405180830381600087803b15801561097a57600080fd5b505af115801561098e573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff167fc9e49a024d50440c73d2d12d0ae05064094dca76b46dc95e99ea6848eb8f27e960405160405180910390a2505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fbd74f84336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610a5691906119c6565b60006040518083038186803b158015610a6e57600080fd5b505afa158015610a82573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610aab919081019061158b565b511415610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490611af4565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663954029c9336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610b6491906119c6565b600060405180830381600087803b158015610b7e57600080fd5b505af1158015610b92573d6000803e3d6000fd5b50505050565b610ba0610dae565b610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd690611ab4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ca661107c565b610cae61107c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631bab58f5846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610d2591906119ab565b60006040518083038186803b158015610d3d57600080fd5b505afa158015610d51573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610d7a919081019061160d565b905080915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b71da0d1836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610e7e91906119ab565b60206040518083038186803b158015610e9657600080fd5b505afa158015610eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ece9190810190611539565b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610f03610dae565b610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3990611ab4565b60405180910390fd5b610f4b81610f4e565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb590611a94565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040518060e001604052806060815260200160608152602001606081526020016060815260200160001515815260200160008152602001600081525090565b60006110c78235611cd6565b905092915050565b60006110db8235611ce8565b905092915050565b60006110ef8251611ce8565b905092915050565b60006111038251611cf4565b905092915050565b600082601f83011261111c57600080fd5b815161112f61112a82611b63565b611b36565b9150808252602083016020830185838301111561114b57600080fd5b611156838284611d91565b50505092915050565b600082601f83011261117057600080fd5b813561118361117e82611b8f565b611b36565b9150808252602083016020830185838301111561119f57600080fd5b6111aa838284611d82565b50505092915050565b600082601f8301126111c457600080fd5b81516111d76111d282611b8f565b611b36565b915080825260208301602083018583830111156111f357600080fd5b6111fe838284611d91565b50505092915050565b600082601f83011261121857600080fd5b815161122b61122682611bbb565b611b36565b9150808252602083016020830185838301111561124757600080fd5b611252838284611d91565b50505092915050565b600082601f83011261126c57600080fd5b813561127f61127a82611be7565b611b36565b9150808252602083016020830185838301111561129b57600080fd5b6112a6838284611d82565b50505092915050565b600082601f8301126112c057600080fd5b81516112d36112ce82611be7565b611b36565b915080825260208301602083018583830111156112ef57600080fd5b6112fa838284611d91565b50505092915050565b600060e0828403121561131557600080fd5b61131f60e0611b36565b9050600082015167ffffffffffffffff81111561133b57600080fd5b6113478482850161110b565b600083015250602082015167ffffffffffffffff81111561136757600080fd5b61137384828501611207565b602083015250604082015167ffffffffffffffff81111561139357600080fd5b61139f8482850161110b565b604083015250606082015167ffffffffffffffff8111156113bf57600080fd5b6113cb84828501611207565b60608301525060806113df848285016110e3565b60808301525060a06113f384828501611413565b60a08301525060c061140784828501611413565b60c08301525092915050565b600061141f8251611d1e565b905092915050565b60006020828403121561143957600080fd5b6000611447848285016110bb565b91505092915050565b60008060008060008060c0878903121561146957600080fd5b600061147789828a016110bb565b965050602087013567ffffffffffffffff81111561149457600080fd5b6114a089828a0161115f565b955050604087013567ffffffffffffffff8111156114bd57600080fd5b6114c989828a0161125b565b945050606087013567ffffffffffffffff8111156114e657600080fd5b6114f289828a0161115f565b935050608087013567ffffffffffffffff81111561150f57600080fd5b61151b89828a0161125b565b92505060a061152c89828a016110cf565b9150509295509295509295565b60006020828403121561154b57600080fd5b6000611559848285016110e3565b91505092915050565b60006020828403121561157457600080fd5b6000611582848285016110f7565b91505092915050565b60006020828403121561159d57600080fd5b600082015167ffffffffffffffff8111156115b757600080fd5b6115c3848285016111b3565b91505092915050565b6000602082840312156115de57600080fd5b600082015167ffffffffffffffff8111156115f857600080fd5b611604848285016112af565b91505092915050565b60006020828403121561161f57600080fd5b600082015167ffffffffffffffff81111561163957600080fd5b61164584828501611303565b91505092915050565b61165781611d28565b82525050565b61166681611c8e565b82525050565b61167581611ca0565b82525050565b61168481611ca0565b82525050565b600061169582611c1e565b61169f8185611c50565b93506116af818560208601611d91565b6116b881611dc4565b840191505092915050565b60006116ce82611c1e565b6116d88185611c61565b93506116e8818560208601611d91565b80840191505092915050565b60006116ff82611c13565b6117098185611c3f565b9350611719818560208601611d91565b61172281611dc4565b840191505092915050565b61173681611d3a565b82525050565b600061174782611c34565b6117518185611c7d565b9350611761818560208601611d91565b61176a81611dc4565b840191505092915050565b600061178082611c29565b61178a8185611c6c565b935061179a818560208601611d91565b6117a381611dc4565b840191505092915050565b60006117bb601f83611c7d565b91507f4e6577206f776e657220616464726573732063616e6e6f7420626520307830006000830152602082019050919050565b60006117fb601383611c7d565b91507f53656e646572206973206e6f74206f776e6572000000000000000000000000006000830152602082019050919050565b600061183b602583611c7d565b91507f4572726f723a204e6f206368616e67657320696e20746865207061737365642060008301527f53746174650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006118a1601f83611c7d565b91507f4572726f723a20596f7520617265206e6f7420612076616c696461746f7221006000830152602082019050919050565b600060e08301600083015184820360008601526118f182826116f4565b9150506020830151848203602086015261190b8282611775565b9150506040830151848203604086015261192582826116f4565b9150506060830151848203606086015261193f8282611775565b9150506080830151611954608086018261166c565b5060a083015161196760a0860182611985565b5060c083015161197a60c0860182611985565b508091505092915050565b61198e81611ccc565b82525050565b60006119a082846116c3565b915081905092915050565b60006020820190506119c0600083018461165d565b92915050565b60006020820190506119db600083018461164e565b92915050565b600060c0820190506119f6600083018961165d565b8181036020830152611a08818861168a565b90508181036040830152611a1c818761173c565b90508181036060830152611a30818661168a565b90508181036080830152611a44818561173c565b9050611a5360a083018461167b565b979650505050505050565b6000602082019050611a73600083018461167b565b92915050565b6000602082019050611a8e600083018461172d565b92915050565b60006020820190508181036000830152611aad816117ae565b9050919050565b60006020820190508181036000830152611acd816117ee565b9050919050565b60006020820190508181036000830152611aed8161182e565b9050919050565b60006020820190508181036000830152611b0d81611894565b9050919050565b60006020820190508181036000830152611b2e81846118d4565b905092915050565b6000604051905081810181811067ffffffffffffffff82111715611b5957600080fd5b8060405250919050565b600067ffffffffffffffff821115611b7a57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115611ba657600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115611bd257600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115611bfe57600080fd5b601f19601f8301169050602081019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611c9982611cac565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611ce182611cfe565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611d3382611d5e565b9050919050565b6000611d4582611d4c565b9050919050565b6000611d5782611cac565b9050919050565b6000611d6982611d70565b9050919050565b6000611d7b82611cac565b9050919050565b82818337600083830152505050565b60005b83811015611daf578082015181840152602081019050611d94565b83811115611dbe576000848401525b50505050565b6000601f19601f830116905091905056fea265627a7a723058204ed2d756516ea8df8dbc4fbf2bd76bb43e93ab01c8c274fc9169dfd0be6254d06c6578706572696d656e74616cf5003700000000000000000000000012047000000000000000000000000000000000080000000000000000000000001204700000000000000000000000000000000005" + } + }, + "nodes": [ + "enode://59c9250cb805409e84c9cd0038e97d8e5e4605b928663675869ebdfd4c251d80ccad76267a5eb2f4362ddceb5ec671f7595463adfc0a12e9f68dbf233072db41@54.70.158.106:30303", + "enode://e487ebacbdad3418905d2ed7f009fa5dbd17d73880854884acc604c0afc1a60a396aa90cb2741278c555a4e30ffc6ffc1c29e83840aa22009ec92fe53f81ec04@99.81.92.124:30303", + "enode://563f12602a117201b39ebeea108185abb15d9286830c074640c9fccbaaaabcc7fe2c95682cc43f95b95059f6d0dc4c9becbc1b2bd78e0c5ef5fddff07d85ba0e@54.201.62.74:30303", + "enode://5903b3acebdc4a34800f6923e5f3aec3ca7e5d1285bec4adb9f20ebb0f87a3bebdd748b1849ca1108a9f1e37ff9ced0b475292b8effc29e95d49ec438f244b02@3.121.165.10:30303", + "enode://8f8e35a6dcacfee946f46447b4703c84f4e485e478143997f86b1834e1b0bb78dab363d700dff3147442b9d3e2a1c521f79340c436eb7245a97c7fe385b89a5d@54.93.159.98:30303", + "enode://bd228aa03cf4a88491c81c5f3ab4a1437df3b463081cc93943c4d3ab37f1e4f8081c6995eca076f717d4fdf9a277c750bd0289477ac151f1e2b024747dcd1747@52.31.129.130:30303" + ] } diff --git a/ethcore/res/ethereum/xdai.json b/ethcore/res/ethereum/xdai.json index ac2a40e1489..ba224d980ad 100644 --- a/ethcore/res/ethereum/xdai.json +++ b/ethcore/res/ethereum/xdai.json @@ -1,157 +1,2972 @@ { - "name": "xDai Chain", - "dataDir": "xdai", - "engine": { - "authorityRound": { - "params": { - "stepDuration": 5, - "blockReward": "0x0", - "maximumUncleCountTransition": 0, - "maximumUncleCount": 0, - "validators": { - "multi": { - "0": { - "list": ["0xcace5b3c29211740e595850e80478416ee77ca21"] - }, - "1300": { - "safeContract": "0x22e1229a2c5b95a60983b5577f745a603284f535" - } - } - }, - "blockRewardContractAddress": "0x867305d19606aadba405ce534e303d0e225f9556", - "blockRewardContractTransition": 1310 - } - } - }, - "params": { - "gasLimitBoundDivisor": "0x400", - "maximumExtraDataSize": "0x20", - "minGasLimit": "0x1388", - "networkID": "100", - "eip140Transition": "0x0", - "eip211Transition": "0x0", - "eip214Transition": "0x0", - "eip658Transition": "0x0", - "eip145Transition": 1604400, - "eip1014Transition": 1604400, - "eip1052Transition": 1604400, - "eip1283Transition": 1604400, - "eip1283DisableTransition": 2508800, - "registrar": "0x1ec97dc137f5168af053c24460a1200502e1a9d2" - }, - "genesis": { - "seal": { - "authorityRound": { - "step": "0x0", - "signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" - } - }, - "difficulty": "0x20000", - "gasLimit": "0x989680" - }, - "accounts": { - "0000000000000000000000000000000000000005": { - "builtin": { - "name": "modexp", - "activate_at": "0x0", - "pricing": { - "modexp": { - "divisor": 20 - } - } - } - }, - "0000000000000000000000000000000000000006": { - "builtin": { - "name": "alt_bn128_add", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", - "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 - } - } - } - }, - "0000000000000000000000000000000000000007": { - "builtin": { - "name": "alt_bn128_mul", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", - "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 - } - } - } - }, - "0000000000000000000000000000000000000008": { - "builtin": { - "name": "alt_bn128_pairing", - "activate_at": "0x0", - "eip1108_transition": "0x7fffffffffffff", - "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 - } - } - } - }, - "0x0000000000000000000000000000000000000001": { - "balance": "1", - "builtin": { - "name": "ecrecover", - "pricing": { - "linear": { - "base": 3000, - "word": 0 - } - } - } - }, - "0x0000000000000000000000000000000000000002": { - "balance": "1", - "builtin": { - "name": "sha256", - "pricing": { - "linear": { - "base": 60, - "word": 12 - } - } - } - }, - "0x0000000000000000000000000000000000000003": { - "balance": "1", - "builtin": { - "name": "ripemd160", - "pricing": { - "linear": { - "base": 600, - "word": 120 - } - } - } - }, - "0x0000000000000000000000000000000000000004": { - "balance": "1", - "builtin": { - "name": "identity", - "pricing": { - "linear": { - "base": 15, - "word": 3 - } - } - } - } - }, - "nodes": [ - "enode://66786c15390cb4fef3743571e12ec54ca343e7f119018136d68b670edd93604eedf74e5013dc5c2439f89e0e05593e29c409a97e155ea4165c6b832de131ef1e@3.214.113.185:30303" - ] + "name": "xDai Chain", + "dataDir": "xdai", + "engine": { + "authorityRound": { + "params": { + "stepDuration": 5, + "blockReward": "0x0", + "maximumUncleCountTransition": 0, + "maximumUncleCount": 0, + "validators": { + "multi": { + "0": { + "list": ["0xcace5b3c29211740e595850e80478416ee77ca21"] + }, + "1300": { + "safeContract": "0x22e1229a2c5b95a60983b5577f745a603284f535" + } + } + }, + "blockRewardContractAddress": "0x867305d19606aadba405ce534e303d0e225f9556", + "blockRewardContractTransition": 1310 + } + } + }, + "params": { + "gasLimitBoundDivisor": "0x400", + "maximumExtraDataSize": "0x20", + "minGasLimit": "0x1388", + "networkID": "100", + "eip140Transition": "0x0", + "eip211Transition": "0x0", + "eip214Transition": "0x0", + "eip658Transition": "0x0", + "eip145Transition": 1604400, + "eip1014Transition": 1604400, + "eip1052Transition": 1604400, + "eip1283Transition": 1604400, + "eip1283DisableTransition": 2508800, + "registrar": "0x1ec97dc137f5168af053c24460a1200502e1a9d2" + }, + "genesis": { + "seal": { + "authorityRound": { + "step": "0x0", + "signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + }, + "difficulty": "0x20000", + "gasLimit": "0x989680" + }, + "hardcodedSync": { + "header": "f90244a0379c072e9f737484d7f6beeb8d6d0c3dc9173efa70e10b3f5ad6d74868d9730da01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794a84713b6241260b3caa2c4be00ff62b89c4315c2a0cc0a4827e9d8a1e4e7a30863bfa8cedcac880ddb1e678bab73343e6197c2ad31a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090fffffffffffffffffffffffffffffffe8357b0018398968080845d7b7e769fde830204068f5061726974792d457468657265756d86312e33342e31826c698412b24c7eb841a790425e1bf0ee1ec37c3f3ceceeecd139b0c3155f5cbd08828e17d434a0387d0201240692727d8b49ddbf413eea8dcf973178b706a239ddd49cd453bbe57af301", + "totalDifficulty": "1955496934878520937661876759407460631004578689", + "CHTs": [ + "0x9f5532cbea89ff89b7502cd5926e9d7b41afef2cb2f15f8452cc74cd91148920", + "0x079e67e8a3d9975682aed0ac1602299cc179938168fa2f18662d31bcd6a41956", + "0xd702a18aba2b86b4e1859138605953352c39b8c7dc5eae330a5b638188595867", + "0x105350b6a937d23e3bde813ed0d0e606fe43e6272bb89db5dd12fafa5efbbbce", + "0x44a13a5876f64261f1a3bc8a6b2698af4a8e3dbf5fc4812e5d7398210f9f8dfd", + "0xc2778ac7c7e4bc2e92b08cfe4c9138ea7f5b52c1fa41ac4dcec31b9f0de3e898", + "0x0ed9bbbfb97a07cb8f512d070fefbbd814339bf4302e2721815ccc2c71313ba3", + "0xcbc2b407f3ff2a0c2e866231e003f90742c378e56585fe337b1380538f66f652", + "0x84aba4a2f9f0f61f614ceba55df7eeba5295120fa095b2e848fa329ffd8c7484", + "0x743ebdee96f5717ec0ad355aa7bcb0f3351fe865388b425f84e80fa946419628", + "0x9abedccb839fdc8314f4d32d1380e7ce4ebd7e1011b25d8fc8424b52a183b440", + "0xb56fb42bc7bae4230baa08de9777a5dcf919982f0429afe437397565810507bd", + "0xbbea70ea25005c971fdabe7d8b80142167c848e1bd38f11050866fa3d620fb0f", + "0x8b229101b5377d8d89a3386c5ebbad6f56a701ae592a8ebfad76061d52c7134e", + "0xcae9895e247f9db2df4138d768dffa96cc533574924c57f69bab229b6b19880a", + "0xb925a8e54d1ff91e3c72b5615486e5bf0f815103f175e15275a8be421271d9fe", + "0xe85da4ddda46ee3306510af31a10bf22c2c4fde3aac92f30cb8c61a9cee93ba4", + "0x071a562ebf53caaa8e40747be0fe9270621dcf40a2c972d4d8ea2a70091e6bf1", + "0x4cafada660baa29ad4442c2df6249450b7e5427d5454307496d6bc6803b08ab7", + "0xf14ab138b42cb843fed2f6bdc4a4a0471a9b4c3a2a3f8b5138a5555cb95c2644", + "0x435afb524ce317c552e49c1b3a40be151e1e70320e9886f585c494651c8bb4e0", + "0x2f1d8b8a4f84c1eea89c45643e379ec177d3787fcd4bc19eb56912607af9c88b", + "0x9a85b61e9005de6fd6ae555139b56a2441add46e57a17377bd9c21ea936adf27", + "0x6d82273a52f0aebb3f7b932a1789e662573c0f7e594de7b0fd755a879b592944", + "0xd24cafdadd0cec15588a5be7d9f085ba8b151466132ccbf9aecb7d906c1694d5", + "0xddeeceb800c6ea9b6803431262e7ea366b5f454d760238c9b7ff9bf6f4682c92", + "0xdb1e6399aa711ce8969a66dcdf1f0b0df353fd4496361ebcc041414b0af81372", + "0xd90a1d2b833ca4109c01313c025ddf803aa4b8db8ad12c35d80c62b1f094f9c9", + "0xe8704dcc919987933d20cfd071b3bcd688e7bacb4dc94b11c058d33cd0d016fd", + "0x97857c5777db317dce2a70e56b017483a6aa369258153cf3763db94dd06bb628", + "0xc58ce7e7b7d4706398000fbb19834ec8e1a5cf0d633158cbcc066e8bf1278538", + "0x973d5aaed57633afab5df437abfd430a6fb7977ed81bc467048bc8e4c4151abf", + "0x265e84795e0e6ce34c609cee66b2a7125c0741269d4bcae1b89747d5e60d70ad", + "0x6916f22848a333e063c2f3f1ccc8255043512b2fb5b606055225e4ec7454ad20", + "0x43e9a4bcc1abe938a76332fb3a3b5b18a9503d106943274ba1edfeb24e0493c4", + "0xd7d4a70a3aa8feb66a1b510f8f75b1d39d8154abfed1c38bc3e3a5cf1cfd22b0", + "0x260e50eb3bc55d2535d63c5aac45fed0cb113f96abf282fe59c3b31dd2ebeac5", + "0x4fa8a27a129d2429977e0c221d2e1290f93e5f4135cc7016872aa3dd12a24417", + "0x63f7df6a71586a2f399e336529c16282cd98ef217177d7f44a84182f00781f73", + "0x8167c85f6265b3264af8a4c48ca6ac5f69cd27364fbfab9c5db9096e8a5a3f93", + "0x66e103b3d099455188b760e63905aeaf771a9fdd8a3030f1cdde81d088e77ed4", + "0xae27b09e3aecd49e196911963191c968ba84e86bb0a93f1ba0a261289e17bdf5", + "0xba5c0ebc2d917df1259e1c82b9f2a9976c7c3c565be4b5111f480c5ab61b5311", + "0x320160e3072de7cef1b274bf3a7c0e6e449aea56a8fe1a44ffaa71913739887d", + "0x249759194264458ba63514e0c5df1b68f3fc10c1c060dabd223a5650a78fcc1e", + "0x7a2c8852128c2c465be6c902bc47c9c6ecaea3521277b423bdfb22a48e8f4823", + "0xb88d2649af6bede366ef228d4c562b2848b3c3fe9bae7ec337e743889f88b5ce", + "0x5457256cbb36ad7ec18955cbb5ec85a7cb7912be05e21787f2b29693fc0aed61", + "0x495b2942a2cdd8787bdb3a830dbf599f8081e0803117ee0ba7506c89e4797977", + "0x0146ac012e7be53d0781d30c664eeb14c24fa89004e5d5fa380d228c28748a40", + "0x7f3f3152a93da9dc7623713c440083652d44b5bc92120967a55ce6dd95264aea", + "0xcd2ae49bd9a0714132cd58a1e2ba0a91442a6a70e56f5badf957e7a1a94386e6", + "0xc8b72e7467d17315e56e0465303eaa9f9e715ca9b85679e718b6d72fc7236a6a", + "0xc0037865f5caf21e45c68f1c86b9533946d863a7d7457286d24a73c27c4ae850", + "0xd0d264da96d2c059eaa3c9123e6f474420d34e8191b10cb4d23735be71edf4e8", + "0xcf23eb8d88e0c26837baf773d6395fe97edbdddd03f072acf6248685b23c9204", + "0xc7c4b360734220f7675713c72536f68c7d9d668ed730ce79040a4ac6425596b2", + "0x9edb394dad40d5be15d2eb885cd5b735a0549094aba68ea5788edb81e5291bc2", + "0x3d030fa248f48b139f34a5247ff306f647bd89e754716dfd173f7bdd57ba1c82", + "0xace2c7b5c0b19c4c592bb94b2504b57e314de40c7f88f2885a23e8dbec212e68", + "0x00313f3e654872bbdee14b9ad7fd1c050eff5e8a54d4e56f91aef331466c2545", + "0x6a0dd26a78b8ce14a0971e573757200cc891051e80ad67dce726432d23044741", + "0xb6e0e9df1d9d95e5e0f99f604762b5d782b19221c5b5beb9a932025254eba304", + "0x159d4e9f8cf95b45c9942b5de09ac3acd2627bcea74c6b4a355f95c073f29216", + "0x88a6c06b1d6ad9f27e06b347a4dd493757cdf5124fcb2cc49dc0edd8b8ffca00", + "0x0cf6bc645153fe58e981ad3ed2f1d94d2000a24165c8b07db3c659325ecf2a30", + "0x285f36fd75ee27236ce24dba0abaef4eeb66156a9a802b58a2600e98fe23b3d2", + "0x925efb6bc3bc9b64488bd51a14266dd0303b2617fda2c01c21ebdeb9f46aaf1b", + "0x1d66104f22d10c40917d86b5f305d098aa83c3704f8c9e3e37bff6608ab3dd77", + "0x8ca9dd79b65b1746ec1f938ca011423a63fb97a3168fc761de1ce236263aa912", + "0x8d58d7f3c662fcc1e9a4919e10c60c56fb2db174b0f058c9e1bacaa677d5eda9", + "0x0f24911f26479b703f15bf70e00b59acbdace28327d65f911748e63101dbcc4f", + "0x75addebb5eeb426fdbb10dcb0d4ef7830ab3f9d44fb93c3828bf627e62415507", + "0x5be0bb9bb95b35f71c64434f6ccf72ba964dc2b97b995da693268af8b299e1da", + "0xb54b08f0ddea20500588d5897234f942be955ca0451da713eb3cb848630e2863", + "0xcf371d4cd35427f351b9571f5a537a1058b0611f4f774acb42b0f762e2ac2369", + "0xc55f5dacd819a4f40a51c191a6398e719caca78a51a5e452f00341f441480e21", + "0x101544ccd9e52cd1c81a77116ea02169906f841f0e1792fc0a7f757c007af5cb", + "0xfbca065dd9b1cab9ca0465eaf4ed6a3ffe572d5e9cf6af76a60aecac6e580fb0", + "0x1d2b57d550b3b782ce122ebf3c36acb77ec0733b9a21b3b75cdc8281f9aa0044", + "0x43706c6d8da6dc99882df8c6f9885415f2467d2e49513047a27f9a98cc433634", + "0xeaab6f72398e0922c81e2b0d77f46296f003445dca76e886dc5775a6ca660301", + "0x54c1d372c55b455aa328bcced6a164aaa764e8513d03f470e50cc87ff11bd67a", + "0x76d68f60752776748e3880c2cabe1ca89312779a6899d50e8632245a7d48ccad", + "0x4d8a44c0d055ba4e1405001364530e509b844a9b27caa23045d4e4a2b5c2009e", + "0xbb1c2a8021126fc0de51e97d1f3ef2e83a1de4d5bab2a5a67a1e50a7eae19e53", + "0xa02187aaa7a9c251dc4b01572dafc7d4b02a18aa1d751ed02e76da70c00cd9ad", + "0x0dc48834edc79acc5c233c470016ecb49d8b2f81b48126a662c7f5d2405e9f6a", + "0xd258075c1606fcbb1c16842e416077c23b75875232a0ae87248296630007474a", + "0xff670fcdc5fdd594ee92e5f963e51d301e6b71aa184ec76a5686333a76a7995b", + "0x5db06222c3dcced5e9f3a2191c0e384043a18a343ccec6a3a504dd21162e0f22", + "0x0a6121bceff843d28734de942cf33719d9d0815b08d72136bbd79cf752a39822", + "0x6be75f5f4f0e849fb8a0632cccb8ec3188742e893b9309f6a409fe912e5342ea", + "0x6a6f2a818816a923e7e8f02ada642e2ea5c7adc372915225f15c6a354c9b0107", + "0xd37cc228e24525ad7b5308ea454e9e756a4c1cf960c51529c83d6af87806c18a", + "0xc8443e22b4d37b0f80bc5174dba9de0109dda5d56a1d07c18ab354c255afb2f6", + "0xe8d8b4b0c06ac40ca04fb0ad15428048350836cea3ec20ab77ab5cca7016d902", + "0xee7d19d4cac7e11cbde337f1510643d305e26622150373e2377317cb7de102e1", + "0x6936bfd69288325554c5ac73a27ee8a71265397089315fbb3df101592c0007c3", + "0x8858f87c52c8fa518d16137bef6ad4c14b0cae7616b1a8dd043ebddc662e56b4", + "0xbeb0fa3a2e651186d0ee7a7ac552c94f1ec86e5df565adb15daa83a2a3acd344", + "0x26e871651f7a21b69a4b5c4392586cefc92ff02d07e7d95270d24fe602f15fc1", + "0xa4424abe96d7255a231abd334ef448bdfefe751117908682acf81651ef740ecc", + "0xd7709e7304cdcdc505e4072491affbd2cc8bab19dbc41b7d5784ce4deeecce27", + "0x336e22f78ae0343127a825d1558e5d6708faafc0c95eafe3afa089f0e23e15ca", + "0xd7e9532397d94c0987b5abea69589b2711ae1d8131d50373e6e2797b17a0d483", + "0x081a420bc0915a70c420053dcf44f74ca0fa1f15aabe89cab874aa4f59ea6fee", + "0xa8768e97cdd0c45422cb366ad98d888420fac6943bdf591e7386567cd5a7dda0", + "0x394e116ee5f05dd3ef26c804c1fce1b5196787e9eab129be9328668fc949aeb5", + "0x3a631a21658a24ec3a5621801ca2e88a97ec6f0d26898047f9ecaa8578e2f14d", + "0x60c9080ce0ead399df360dff7e2bb6298f40e1c8153bb7a4c03841e5c6f5d0b1", + "0xfe41205036e4f0d4eddbc5ed305bfc741887ee21b0886047b0d00f5e5c1b469a", + "0x9c17887b0e837eb079c37415630a9f72c660e405f904681824288d385f150351", + "0xb28f080d947a1f634c19411920244861b90e80c81ff6b146ddb089b17de8bd3a", + "0x8de90c188c680e4de284ad969eb396b9d9eaff33b6d0741673998b36ece076ad", + "0x44d5a8a711b5de56b17348b1b62bd61e4a412f019f79cdde59b6eb74b8e4e2cd", + "0xc49a22f02216f0622df612cd2dfac60f5751d07fb2029e92f9eb01185880b899", + "0x1c42ce2de88061cecad18a0327919eaccb4c2e2bde2e858c42640483be2b4c09", + "0x54eba700821ff8e8d6093c9fc56e36704a1be9c7e8f4c2e2a8a4b900e3b2c0aa", + "0x5aae3b1437c66426590240b4ed86ca2c7940672e856629974aec11eed3041013", + "0x69fc335398b577d2fd7c29d7c25c58a642e755ff95fd35cb0c16e9f1012333eb", + "0xf530df719a7b0cee11b0820ca4081af5b9fc7bd29c203ba79808017210f25484", + "0x70efc0518a44421cb5952cb0a7cf955d116e32c003899f99ce436beb3e10914d", + "0xd69f93c90a46f0943c2f322eec1a2e9afa3464234f11b7c3114bf90aaaa578ce", + "0x3a0758a2edbe42021b233205c1dc4d1c5e0a435cf9701272243f66aad247cd09", + "0xf01282dd7bd929ad13e104cbb30f29a63106e0848dfc46de38212f4ff8a14057", + "0x7692ee6ef61f859c0fb106e3289af5b67a428cb939a1752de0bb82a6b5d13bf3", + "0x3a12e2bd8fa6dc8f6fde5e75d186734fafa41cd706574dac597272d253f7f40a", + "0x943adea999c06b17ab8b419ccce01d734b8e6ceada64f5a028d5576dad6621ae", + "0x5c767e80f09c81f5aac900a6d3390276d9be0b7686de846df2fe2b51b2426131", + "0xc4f8eab3a067eb0d71fbb084e5f2719d15fa5a642ee79b6725da3f173bf98014", + "0x8665fbc91017313334a7b250ce933a503165ec2faab01f133be029ee48003206", + "0xd4033112b5710a23cf40035d7c9fc34d90cc1abcd6c6b071c596e40301400020", + "0xa31f280ef35194facd71d939a8756e5bc8ea8681020a27b1fbb889bdd0690252", + "0x49dad7e3a7e626909c643d7d9fa79843f850430a92359375f033c93ccf1a2a58", + "0x3f49df8e77ba964beda6d6579fc13b914826c6fa3aea29936c015c8678493a57", + "0x57d0aee9530e2db650893e1c939d9292ec5a97242c2b33c2237efa727420dee5", + "0x57ef9cffc1188eb504990bb6b1f3ac67bffb77e13946a45bfc96afba4cb94256", + "0x5f22a9eb90f97a117b140b2290bdd205726311ee088bc922d8955bfdb31c09f3", + "0x1fef01c75406b8c2324c9b128d4366c33edfa7278e767052ee8a7db512cea7db", + "0xf93005bf290a92371cca8fda62b7da3029cf997d4af619a09caac4ac9f998c64", + "0xc0926db6446779844eab41b7b5011f7385d557521278359ecc2bf421d938ab1b", + "0x2264a659e024816013d701a9ebe86addbe4d43a53cfbb639b13d15db21eecb14", + "0xcf1c7d4465a56bf4ba0748322c1aa811384856492989cb5ce331c9e2210282b1", + "0xdd026601a0a96534e5291a7e3e8b4e8086aca7a0980df707dd1fd5f0921ca0a9", + "0x076069c875a0058f38e8562dcce3dcfedcf024bb4d2660797421afabf6593d5b", + "0x0b17256d2f92a70389cdb974dc788fd610b98d50e83e1a5bd503618dd70bdc5b", + "0x8590b8d7218acb68276c12e328e7d60a2232f2e1842f832a7b4c15bb007988bb", + "0x127edf2056747629d1811efc0799ed6f6b9cc27082af0e6939191a0044dc7413", + "0x4a08bdcfb922f449707da67fdabf620dd7a599ea10885480eaf26bafef0eecac", + "0x8b60c5fe4eb4614c917df3a96a2546069ea526d5bbff4737d34b6a2d599281d0", + "0xbdc0955e2d39ec6451d78e5fe476532a43d2a1a3ec52a634a1649241b2cdacbd", + "0x524c97982f9f61d603a8b09c6ad3d157d6d38e4507184635766dadd5ca34bca5", + "0x56b2a099d6ec94aa3ba3cc18a3314f4b99ae06c50fcde42e609f2cf486d89a1c", + "0x309074fae9c2f21b90d1ca2c24cc7cee0caa8707895fdf5cdc614d8b0f7481ca", + "0x1550651eaf769e53fa9e47e7ec7ea0649391d59474da324fd96402dfbd7332fd", + "0xf079e430f9d28d7a6eedaa7b10c316315e39581ddb9cb65e53bdf8a2aada731c", + "0x08c90db385f227a78d8b36696421b6fffdd332197138ed2723f75b6f6f854ae4", + "0x081529907fb9f25c36cf26722a68d6c4d9bad5b628833e72d3f491692a4fef9a", + "0x6dac932ee286c8f45ca209623dbc5f1175bb26d4c06da1cbceadccf90e3bb141", + "0xc1096a9750daef3ebe9968be27cfe9cb4afc9fa80bc9e35b394bc9ac011d30a9", + "0x0b2ca78dc4493527c033f2ee249ede27290d7235b2e2e5844bc95278d6a96b72", + "0xe7721c351159d7cc04a60c8d0d3bd516fd18db7a9b2326cd144dad931f12f279", + "0x197b8106fce55f448c4656d2998ca53e7466b9cc6c3225a13213f976d807da19", + "0x6fee245b11f25a01e33eac8e6a6c215bd1988e845b2b0e6a8d5384e6b3a1c43c", + "0x276076b2c37cd344b8ebdcbb153b5e932970138623063535cc357bd65fb37515", + "0x371055113bef1429260e6d6de7ce32c815bfa62e92b70e25042a1297b33d5be6", + "0x7db624ff7603ed1d61cd3b2b0d933358be8beec6daa17afe41fc5c8c040e7110", + "0xc8107aeced27a96b1e55e0036e8238c1a5b379de8993366c2b1b088b3d32db0f", + "0x457ef09be90fde3d02ad832bd303e5265e711aa47bfd37681b7b4a80afbd4c18", + "0x64bfa986f406c22ba7f4febccebc814d43ac90b3a2fec43c43d3195d7e5b75fe", + "0xe02476115256c4f87b436889ed7a089ba62479c67ff8ec123bbf592ad8c5527d", + "0x6e2dccf5730b195da6d9ffd1d121a1c0fd563595fb083922eab24f1d82a2e25b", + "0xba660d5227c8b4d4876feaf8f089ab897e0fd0a1c3df0c8f43977e8280328f5e", + "0x8566e4095917be2e9b4ec5007738a0084855c5d5ab796a18be85e270a9ce19d0", + "0x8fa732227210961948ceebdb825a4e5f10778fa3a040ba5b8ae6ef588a798654", + "0x63fea034291c13344ec416142706f0c84c5d7acb1e3ab46e4b307b07ebea4bfb", + "0xbfeaf5112e551701ddb66f62e106e6988c04a7ccd6987db3a297c6f14ec84db8", + "0xd18cad571300d94fba3d347eb7cafaa086970cd74e3155c3d625297106aa05e9", + "0xcda6e517497299bf5330b4c7e4f686e5911272a6fee004444d132a4e3236d20e", + "0x96cdc4068c32866bc558636970e990d4ccd98a406a99d3c34941b1b23e997a44", + "0x58e168aec982ad3dcecaa7f6bc9526545dd1a97782d0164c05fa0a05eb5b8c6e", + "0x0cbe55d1b236e55246d3ff0bd8770dc11dd2be07279e7f7f9ec6dfe600bba8e1", + "0x0e7a9c4a352a470d78d2d8e4c44d9a79df40c8d12be6a5ab5143dd3a2c32d362", + "0x4ded88ccca9f6b12885bc9d61799722a32e9617c0f4f9142ac46c7d0a3dd9976", + "0x0607a82c4a6b693bd42e7387fd381d6c760ee510be8cd53e03374cfc2d726d50", + "0xee65078eb44ef0a182644f93a59b2ad86c0992fb185bf44c26c48ce25458acfa", + "0xc5da5e853f905e21926b303d5288cff4e3348de699bc8fb4a02197b8af4e23e5", + "0xd74faffffd297b2c17d220495c1f3325014dc41e6807157c726d76e1b50b76dd", + "0x2434e9648dfaaafb7114af2d8c1d42b3406a88d088aa87aa9790dd149764e6e4", + "0x8d5acd17557be52c30191ffeefda675e6d13fbbea896b48a15d919aabd42f892", + "0xf56ca0c7219244ae6114a19e6a4aa7af3b508e9df1dcc37bcd29f9f48aca2683", + "0x1f391cee2ec13abf53fdc6d1d6a0b770385fa4cdd952c7e7dca5cb871a6b3b52", + "0x0db6a12d428023b70d52b38b3310f814f24a1223aee0e5a1266b6efd007dbea5", + "0xbbff49cde16913f94ff8e25b4179e99da2cd88e3798576e40cda27b058c0344a", + "0x224f277a8557cb9b000540dac92644e516b847a1b68a99253655781518e20693", + "0x140a09036539d51f97200da3cac4ef056e7307ea1c35206a92da4d22a806b339", + "0xf3d969aa7d6106033ec78c3e5445a8a9ab6f65e4ca47fed70f9feb2675c2e90c", + "0x22d820f1ff644a096ee0f381c8f73f867f28db5fa86cc4addc88f5143b1fe6f5", + "0xf79f40425583e7dbcdb08576999a90b6a14c1963636c65d42a6d360441430b18", + "0x611705427257cb827d988dce5acdaeea9e97a1686fe36ee00b3320afe93a2978", + "0x179ddf9fbc58c274060aa192b8339aff8aef09f9db7ee5b18f6d05303be6ea89", + "0xd26f5a4c3c2831e769bd0cae932eb8c771c1020c96efab791458d28736142ad8", + "0x9103de0dbaba17f46dad472ed755b530d27ffa1ed677b9e0ffd7e7b85146571c", + "0x342abaf2965dcab6896bd845ac268016dd254c46a576c2f57a8194587d6f637c", + "0xdd4bd4167c3f059411ddf295a57073c0d72a126c6d6c24052ffb7d7e6b7638c8", + "0x508aecc260416d79efc2162cde7dec4d8c49c5a4185944d45a0a9c6a6ca43311", + "0x68c2d3a4cff07fa3b2cde4ab3b8c94ce081b58e46e4cc4e8bb538ef3a498971f", + "0x99b5e5b79dfd03706fda2f318cba28c2bce636f691cd989b899625421a26a37f", + "0x0db0d90478a568a4bfc374bb4924576c010d0da8d045306e6bdfa491945552cd", + "0xfe79d90b0e2281bb8047ebae7ceebfc51645c6ef4a2c3e9f5b817ec200ac1770", + "0x6c6fc0dbe8c8f03866c69135e614672bf2fa7a9a172c7623f59073254d3ba70a", + "0x78bb601221723eb7160db23e0141d7450185c3c97bfbc65ca34fd3058298b3d0", + "0xe29d504ed9b979266ba3470949d046e6cbcbd60ed3fd0c4bf4a16926c950dffe", + "0x927ee822122d6a1450f8b5174865a836730a285cfa8a70b629eeb5df2ff35c85", + "0x2289a0778e7463bf01ae7433470e99ec582faa277c9a3015fc83070da0de7385", + "0xa3bc950a4cf26a4ae9d2fcf145c26861ddfed6845f180294325e86fbfaf71fc9", + "0x0be96751d2d163c9eaf3d4ad325b0d6a0ad68bd1f48db57f04ac202028cb4529", + "0x83abd07e1d423527ede026e1827fb631b0b09ee186a1ba7fe6591970ad33f086", + "0x7e23230aa4ad827fb607bac301fdac202de414a967c9003ece29790d919520e7", + "0x5926aaefb00a53089a84f7e7e60f234810ec840f15de73198a85ffba4e72b21c", + "0xd3ceb1ead4ab4968d969868400d4c495f9781c02de3305a8b600b9d2013208b7", + "0x004de91377fb4ecd49450522c3f9eb1fe4cf58cd62a7ea0d6fe8e60c89fbbe30", + "0xbf4b3502ac6761b1356f6fd96195fe5bc15a0ee6d4b705b118ff3b4c4913787a", + "0x7fb6f0dae1bb69eef39bda52253ebcdcc659302175da66eee96b0fff31eb82b7", + "0xa4641a477431b008009ef9b46bd85fec4a417e1d5a4d2dcb74400c93563709f1", + "0x40e6ab730e228c5ebd7080800331f0ea102b71451ce400373c122f2e1b473d27", + "0x6fe0b5cfa9e2e2313bee55d41f67364a54a9fe9ff755462a209471501844dae4", + "0x9e56a61913becedc02505e5edb787be7fd695d4b10844a8447a538ce8d6de9de", + "0xe63a2cf3e4b41ea2b38b615805b2f28017c1b1cc48fd89200b5a720322c71a59", + "0x85a6ddae5acde613b93a945b30b41c152c1ba697d009d399072a6909ab77e7f2", + "0xdc474371d7adc1d54936973c1c655a90746fe4ed16a7d371a3dc239a7ab798cb", + "0x8bbc19f6e33f27d0e9340a52e1f52c8c2b61d3c2598a21a67adfc316fc1d3b2e", + "0xa692b01ed36027bc75da84a9f69350e3dae7026dbdc5a90f0f8ef1443e1d7c48", + "0x2fe43ccf20849c44c3e5557e69045ec6f6c280054db1027c0b55e3116a75d79d", + "0x2949e6ab78e09e0864ec65fad793a07d3242b967a24daeba9a9f2b419a14b690", + "0x3b67165020ff232d3236b23f3156638c8a5c07bdf28e016e9ed67352752e5ead", + "0x98c8701cb57044bd35f51d591eee6f064434d59a6d19b934df7c793aeff34cb6", + "0x4177c7e2d30b6e7e9c88a58242820ee26c646c2b917338c1027aa332dfb470ae", + "0x8b568f5bb71dfeef5087a26b718bb67b835ed25c1d9568b51ea139c7591580e3", + "0xd7e927ada4a1c4b391a94b0457c91595ef03761511c4a770658ae51968dbeb9e", + "0x42e3b9b1c144d2a3c93950cffd9bbff6f98861e984286f366bad10d49e080088", + "0xca93cca4bd01f99626190aa9d515255f2fb51ac925ba996ef033f377bcb17086", + "0x4ffd9e3efe7e05b99ed126b65e8daffd09fba8248d64a40fdc1b3573de841014", + "0x8ff69eeaf1a70c4f7f146776cc9a84068c8e6f4f9c93733ff26c37ab976fde52", + "0xcec9210cc68e88cb2e0b86ae7003db485222c1be97a5789f60a69712ba5bcc1c", + "0x9576746ca313e1fd832fb2eb4f96e3a193d5dfed7902350bbe07bdfae3a69931", + "0x0932aa2ebc96fd4bbca141f22f30021e41820fcc41212d21845b3cd5479ebd27", + "0x38aba794f2bbcba63399f54e40fe512db1800b76276254731d4ae03df51ef9bf", + "0xdd1fc6abfdb5eff3caf949aec9809388bc0f5a2a6fe73fa19a2fac83c4c904ab", + "0xa9a5b6249e77e4938f691b82e8d8709ad8d9d69edffa3d4c87bb9a56d38a0690", + "0x5c2f7d9184c130eaf66ed64c6721e33ea5d89661d67a31fe98d14b0a306475dc", + "0xfdf7af81856612f6bbe8de6ae41a03ac4befb726402d3dee43ebcfae262beac2", + "0x94924a83f23d4b3b001b6c0c90126591d81c6414b8dc3f6278e25515ef940ebd", + "0x815fddcce6c648ada9c8b90ad6b6aa2a6c372f7b73fdabd0cf0f4e39225bfe2a", + "0x6f78ff6b7ca095ab22b46cf3e4bb7f6479a7883fd7aaddf2aadb4dee08d8c228", + "0xcd222c0cac2ac85234794aecc8ffea050657f082d29fd9f16f307cba3b929a83", + "0x1ff51b0abff500bc6f45cbd028c68d6dfcb4b10537ae75acca862c1618a7003a", + "0x7775833ddd60f60b3d3cab47ed151a726b26571ace981ecb4bff27d5a304f267", + "0xf8d86ab9e6c6c048eb11f31275038ea1834f6c114a3fe5e6edcec31c6c948f4d", + "0x63823ac8744502e9b1cb4f18d04b5c9e36e91a9f2c412f83967200c05287d5b6", + "0x12ffeeadc86f00b8cef710e51d202e4237e700ff9874d2d3c350ff9270ca321e", + "0x1ad55723da5c76bbb7e5ac0bf28414727b3f1fec48335f719d32763c4c1df49a", + "0xe70e3fbfc83eca935a6eb790ce1f4d3ae7700be3190cd548d6f3a405e9df189d", + "0xc5f8e73983b88b490a53f4d06c638d01e790679eeed597b0e5d62095d797a6a8", + "0x53757034dbb38e7aab1dd8e36b710df08835f977d60d701c6dcb6f95b1167a40", + "0xd64dea8fd270734a1e2aff6cb2833b4c855de748c2236c0fed763063ff9e208d", + "0x72cefae756232b979f7a8a00b0c78c7fc3d0a1b50670b847e384034ed7df1e56", + "0xda9aeafc74c4acfda32c03d864d8045e2bd459908fdd0914bd19aaa15cb1d162", + "0x9d7c548f2e0b07be5eb0a1e34f5be4e571edaa4555015845c051707c68e416a7", + "0xa414bc812f2e4de0dc068121e1c8207af8bfdf1bf3f8699bf2406a69d7e1ae05", + "0x40f89a42362679b80596ae8c602a801c100248d666523c61205df86e0a8db141", + "0x3eafa53d2d0aa32098ef86413a7e8453b3f1adf2b6c1a182332a79728becd1c8", + "0x94fa69bf628222d6cc4eae8886b01c5b9fb4db1f121b627d77bb9e559e0f20bc", + "0xdf3008e9b62cec4e265559338610aa7b44f35288ab481b3afa06f16aec6915af", + "0x99ecf69294bd383bba604dd05a902ddd1d2f16cfac3d5725d71e547c7e481ec2", + "0x8afbda39be4dd775f5846f686fa79c21fa8d80212b0558e5b2ae6f77bdad0437", + "0x5f24ca6d67e1f60e29c7686f64909c5228b19ae8fde8e0ab936ddf560eb45052", + "0x665961c221c82d0a05b379e631c1923909e782872b6a552ad32a8af65cc3fa2b", + "0x58b7bde61ef233a9eb84db4561cd7abb312ae6819afbeeaa5108665ef033f8bb", + "0x8f1e2a4f3c8f508c4dc8d1096e61b3daf756f1e4b89694b1fd69aa10bc1ab3e0", + "0xd1022c07a86af3dab26acd68461bbcde506495550048ce4b655d3d3405dfdd88", + "0x8fe1f97e50ae48d7a1d2990b1aac64baaf761172007847f96c44030392909a1d", + "0x772bb09e299cadc10427638b1033df98d16674c95cc37f6ae6571bb7c4775e3d", + "0xdd45ac2772809f1e9edbcbe6c34e2ccf970fe449f14f8f1bbf47fe77dac1a79a", + "0xe229f918df6143bfd72e6bdf11b9b8c8abb784d4328e515fdfebccac1245ad7c", + "0xefbfcc725908ef7c756d6af3d53b54309cb527f4aa464637361ed3a7df0ea2dc", + "0x984012fdb88b912f4896e7a0f70787acd9493dcef06e65d865a1cffdcdc49721", + "0x6cf47c1d496839f9fcdf8aa5ed4422e33848b4863a52637d5ff4f32e5a40a6aa", + "0xd39c13a4b711239b7c0af25a54bf96609e6f192b7506d626a810fba5ec62a830", + "0xbc53d32081ed044799a4f879a51ba3e6b280d8c0a47d6bdcef536e0290138880", + "0x6ebdb40ca7c8500004983c98b23654315eb4f7c4854d5154e04ac4c58fde0162", + "0x366879da9ce35308ccea72f2d2f9cb7b12600eca20fcb382f5fcf8867d8f8aba", + "0xd5075495e02c501b681d99478c8629c1711b5d772dbf142c903ace4ce38f042b", + "0x7f3bdd9a517179afab5c4640287bcb4c100855b988af8c1dcf1a5af83a9fb67b", + "0xdac216000ac5eba7a53bdf6d1e4ef9dc7f1e671832a5ab8cd06746b447075274", + "0xfa0de6a05f67164be0a70bbab199f2429d422b224dc21028414a580664bbf2ca", + "0x6b178cd6235c85d4e5d0cba743ea851ab5c3fdf6174597ec12059fb1fa16d3e4", + "0xf0e7d606d72bdbc548840c13a3bbf399af5287afd0cfc5873afad4c6e0874c6b", + "0x7e64769df7b8a0be2a5bb61150aa956eeac34e2bbc8e3716169f3b5b3a069d03", + "0x45ce31ff3f2b17297d55b1b41c4bd0c52a1073d44c350c42db388333d23a75c3", + "0x8d1c55efb8e97a643673e4db894bcd452dcf2933c8d7ac33261929ae720e0999", + "0x20ae4e7fa6da38d81ad7b6f19bfd3d37f603884ab755bdbde5eb472c05906699", + "0xde4d0cbdaff4dfe4db9884470a83201141382b6c4b62db363e04d1c06c436e9d", + "0x11ac23bb4efb99b5a9f1ed89bc4a66330a3e30ee6df18135b04795e0de5e7d4a", + "0x4b475c6ff5bff9cb7b75573a36cd550a3c298d4a9ea55f2431ce8ee71d56b585", + "0xc0c8e75f3d9c178e40c66411052bda96a6f99ce8c5eaebeca018ed0337830f56", + "0x2e9e518e7a13e9e01eeaa29fe9b9fd7e7a0c6e404f9c61b2f7de0fb956a87367", + "0x6003639d76ed27e8e6bc87bd154767cdde535800b717aabbc08480f440c346d6", + "0x5ead2987a3b516b664abb287399c80b34c81eae773ca432b8e9df040500092e1", + "0xf8bf040f8f0d3e8f4eae5b24fbf19ee05947f1d6a880db58ba7055746f5cab77", + "0x6f95939c3ea146854142031f66ecf1495c7d4778def0872df279fec21661cbb8", + "0xf2b37a980a33ee4f74cf7eb9b1f3a00c7e391d173df59b73363d37f5159ceb6b", + "0x6757467b63bf5228bed5481f1b2db9c45dd77e980b92cca1e50bc963e1a2fde9", + "0xc971e1f7a8ffcb892df5900f18610591c3c09f6ad0f4e0b090b2522f0b3e8dcb", + "0x29f4d83d95cec6b98236c90a67208cc4284db028591134b60078a1f04276ee30", + "0xf3fd53503cbdaad44dd29fc413261c77133556949b38c970e8805c473ef618db", + "0xceed75fe5664104ad7cead96c90314b03644d121a3a8a798a0e15a20e2692bb3", + "0x4ae70eebb7dd9caf651024f35e9a0543717e12d71866b18e76f98fafee2ed594", + "0xcba02fe226df047bdb88249dc6c51c07700ebb3a1fb58c4fa467bcb8db70ad0f", + "0x44f822fef3fe311ef46c6c3e19c36836db39ace888f8c2dc217e999dc5f14184", + "0x6592ef510a17e1147fa9e3fa5a53352da7f383401e7ccf0fa21d34cf043e1a7a", + "0x095ee326f8f313e013eba249b6ecd59a6bb5a02f7abf0f9074a22f91c5b4c326", + "0x35ed27fe813297d49d1a43e0e2d6e417f68da27f1c51c7d3f821c4f1cea85619", + "0xce0db04d6a739da734ec216766dbb28765f31d0da507f12aacca3ed904f0a7a6", + "0x591490b8555953ca8508dedfa79911da30469f9d40cc13bf56688f7e02e96b54", + "0x4214ec6063b0b67e9a0d53fae047b83836e05d12f5307e72599ff4f0cfb1bd28", + "0xf2709c955789abe06e191f983f60bb4441097a84dbc8d972dbd014bdeba5b2ce", + "0xd24704685984daccc449b038232927dbd22276584199206ac7ac8a0598370bf5", + "0xf9168bd18b45bc696db7045531a43d4bfccee92d2da04f0d34a1999ad2e8b95b", + "0x480aba3f4cab0c902d3f31bbf2b2966597ddf7220677a9f602eace03519b823a", + "0xddabf469bad1465284be270f525d3e19b0635bfeab6d2d3bb0e837f524efcf65", + "0x9ebb6ca234853ac42f0da3473aa3fe868b8c5d061bf94a1bd0a6e5cb4832c2a2", + "0xa22bfbe2a344ed4aff05a5293983b0cf2b6abcd4d7bf5b1fd0e2f7410c59bbd5", + "0xba337fa9e7583e46276c30a17344388570fdd2c5200756a7720ada9d38c37ddf", + "0x690e0f2b1e472e59655c94f61b4e5e2e545b5e8bb6e0c0aaa2597c6a3d57eb41", + "0x188f863f7f5f330987a29c0393f90df7f1241a46fa6c3705922010a74c0d867f", + "0xe1f6e287f6c95a687f67c07885393d312fc8f8fa499099819dfc4de98ce180c9", + "0x1825d68d3768f18983f198444dc808650f5ad40e236a6c1b9f1d78f088dfd775", + "0xefa2abe38b1fc3d9890c0443f281109480d430f389079ba2cb60b1163dfc2e6f", + "0x14eeb83517b27fade68cf6ac0bdc197920212f0cfd6746104da69b34611a35cf", + "0x034e7caa41236be340e16683231da92153053c1cda75e0c0ea942ff1f9f1621d", + "0x875a3015a1738d7982209340952efacfcdc8b01ecb1f1b868060c7d7a04bd602", + "0x978678a85a576dc7fefde439c3d67d8fcc4d8df775f93f7b95a639e036662dbc", + "0xe1e8d961797cd6e3a2b3935520ebc820fdf5892c7aa56f7941e0c668b981a54f", + "0xebfa7f827c718f463b703c6a67d801e1727d40493614af69c700e342c9d009b3", + "0xc6c916f39809a5ecda43cf0c633cb8647dee46cbb7caab0e0f7f615f27d7bab1", + "0xe9981143e9108df0954850ac860d287655efe36a23a61c5c39c32cbb015a1892", + "0xc7c993a2c2e48981711dcec221064b3f79c495504758d3e56ec42f9bb4d90039", + "0x63207ca200d554bb8386cbae7b84a64235190fd3cb0b81bc084141f55ca78435", + "0x57880c812816c98df7dd03a5cf7966d3d820a844c2d7bd754e253254b2158582", + "0x2847bc69192faaa2183405a5380ff8d50066dfdf32dc11363d8e2c927295a37a", + "0x2b5e30266fe3b522b7c365c48a5ffbb64f711f0cddca64fe284d2953175341d8", + "0xfa0365aef1544b3e3227ef5106c8bb22175e7a3d607421fb6624c7a4de793e72", + "0x1d1bc1257274a934f92c8f85d18a925f273c09d14189985d8e5efc48f38a05be", + "0x753409cc790f6d89d5e56a461d9f21b900772e34a047b58216be6c3182917595", + "0x5fa3f12c62dc6e92fa3b664df18ea0c488f4006b76d6b6bc49c9475b2b7c97eb", + "0x22f194892457c3dae1677d0f2b3d3b1d4ce1c5aa112456e6ed453ef111468c2a", + "0x131f9dc9d26dcf71485c24181bddeac118e557cde75fa92a7c3b1f9e5b767d54", + "0x3cecab11b1e488c120f753bef7f6e27fe9d1c9d1789eb713b8f9a267176022c8", + "0x7c940ec04494cdd8259d19a60d9f8bab6fc398adab5c6e370a3ef24c31bdd97d", + "0xd8eb0f69f9885e7e5f487e8c5805d15cbea7e46096dc3bd4b99bcb2b3b78a769", + "0xa8c802790c5176280e4197b51bb7fc30656ce99e35e2ae2cc782ce302d589f8f", + "0xe0200768f25e549d9b794d9dbade0325c0854283da2b2d5fa4efccb978bb6d0b", + "0x9499199a278e94f0d30764a841e5808e515271f88631f55bd3c01ba7db097b07", + "0x967bb7ae8b553e58c9cff454dc3701d731fb452360bbbdeae0aa4bcabdfc0413", + "0xdf40a62950353baaccf7b22cad3a4f93948faf93a03f30ff1752c34aae48c419", + "0xd47b6ec238fbebab05f0056114e3669d6d0d53bae5160edd52df4db55d0b33ac", + "0xeebd289e5d50b8840cede6680b673db866df3ea6f570d024cecd22d5aef3c688", + "0x5d885538622f2435911da14749d84a227a728a157f45f71c5622fe877c56918c", + "0xc3f55fcebcbb81fe32405a056e252d71c3b443db77012568df7a27f2ec3a63cd", + "0xd98c11b6c44f927b28ed97bde59dd5f68f20f586a61e3ee7ea5fa26184bec280", + "0x9373338f42bb8c625874090cc677c8c98b807131099a416df564a56c4dc4eb7a", + "0x066ba3fbd12ab1503a23796c414cc26dcc137da86a2ed7ccf487590e12262076", + "0xd786ba4bbd60de0e8e9be3c480e78a1aac393132595880a710f517c8bc62a468", + "0xfc2bfe54cf428c0cfd76d01d65b041fac7bfc2b636bccb20317e6b9678030dd0", + "0xbf5f0ff9b3139ea0a8c9c35e5e50cc630f4185aa54315a0efe4ac0a87c1cfa6e", + "0x59e57da6812925a7d37f59170d31bba45cb499871ae3e3c18a2308e8c8814e55", + "0xadc01054bfdf0ace9399917ac025e40665c7c64a6743fa96501c29a205d1b123", + "0xad03c042462a6c5be2fcf6d5381d6bd79e44f6c55edb68035b1348fa60ea2b1c", + "0xb95a0159131fa8996695ac8e070ffabbf33cec250ceecbaf896dbea6b18c042c", + "0x7eeed484a6b8280cd06949b9a5e6b707b4cfb693abfe3935a4280c81d85b0fc2", + "0x9dc9c356db9562ba86ffa34e044ea3b7128e7c7a1c6ee8437e753be597c5a153", + "0x7aa27d4a640ebdb99aea80f1d5f4e77a1816e790243e6c29a888c6d5b56c8ca7", + "0x59115cffca5051ad532e3cc22e9f1b2b05d6fcf727c19731b532efbf3f47843a", + "0xe706959ef4f86ef7fcd11d64ba0fe61dd8b0cb14e268dd45cc7f073e43a75e2b", + "0x8e716150f38d6c54e9d2e51d782339f133b3f973f107523320cd73f3e5260021", + "0x0a9dee0ca51cd937cccabb971cd9ca251af6b780a85b530ef399f14d93b5a09c", + "0x46db6853a005c25ed07b6f153d1cf763b23bd434af9b7d7f33ae360796c13871", + "0x2cfd254cc33404c9267ddec93e9870f157817901c134e0b35ba63676c15ed6bd", + "0xc5bd84b5dba39f360eb8cb969dca4f44729ba370012454034238671773ccb55a", + "0x551bf639b332a563402aa57732743cf4c058f21d8e34a65316ed389e6eb9780c", + "0xcda748f78fa0d620254c0a296c2a607ace71225f9c4d0190a468df20e84d0d00", + "0x685ca09d12fa542f8adcd93af918ee4b7c8255874d894dd87461e9e9946cb89e", + "0xf66053674e44cb1980fbd869ed84348fda0136ca48cc9810bd0042d570f3cfaa", + "0x6e7bc79bdb60b8997d332d68926b017f41f1507b0bf307b7a096e667e8941e27", + "0x2bfb83c4fdc6adbe453a71ca65222bd4b071ed163557ebf6733e24741551dc94", + "0xfcd2572dc4470f3fc284bb9a49d5429aff837b4077baec00c60fe2686220ab54", + "0x6849dd3c649cda89b472375747f4233fcf1e44f13af67fc555781578dc8a510d", + "0xfc05f2fd55d372a16d9ecc492af594a0094babf184c8755b6d78c11a7b4e4cd0", + "0x5199b55bb3effb0d788b25fec437f3909ee360f4f1082be2127c9ff4108e1e07", + "0x3b54297687a42931634eb3e17ad0cc50a244d201e9b2af3c13b30794f9793156", + "0x1cdd497ec3c077711f8d03aed6d08ae61703d6944e32b075acb62df7bc927501", + "0xaf180c72fa4bf703f96f32c3f738cc1269886e27da26aa040812afde48909d55", + "0x8f8516a368d5bb0c1d4c69608cf505e2d1e591d8014396b25251791a8422dcea", + "0xa4407df4abc8532eee3890c87fb88306fde2cd5f2338d44ec79810f94e60aa6b", + "0xf7d8c333e4e0362f6942b1071150a09f57457b5b214e586cf0c205a1ddead9e6", + "0x016599b6c105e71c22dcc3768d02ab23bde5f5895f5cec7ff241b58bd666e093", + "0xf421da412a74122a4c2f0542adf364c0dbc74557571eee5f3b9d63f0ee2baee0", + "0x9ea93f31e2830c5da8a5005774a33b8a0a50c475387323d3c0ec17869e074e3c", + "0xb9dba998019f2361ae3c1278a007659a918b062bffd048d2b40b0d51a6f87366", + "0x5d8dfd1ba9b43491167776a26f5068393942523886e1a6558c04959aa016a9e2", + "0x8900a7cf473e7a50c5a1998c0fd8a34c85f249486b0c9a9e96b27ad107aadaef", + "0x2132bf9c828dd11a3bcf3d7a25ff5cc77c71e248a8cb35e76866544c673ea803", + "0x3cade26cd3a46e392b12964ca8df2a93c4176d9be35b0019c3fdc703e50e3c00", + "0x728a1247d4144114e5f4581a02783704e619f087b9a362cd0cff8583797ea474", + "0x3fad02e483bf33e516410b0eeb4aac72cdabac43c9d075b66f4893676e56dab3", + "0x42f71132c8d0849df1118264795de747420ec5c8deda7935b12073ffb3e96653", + "0xb4aea097f72b17910846807c4810473c2a9fdf30528283f289f13ecbd4567aac", + "0x0bbd2e1e0aaed729ae2a1148cd2f0020a2ed4beada17639d7cb601b88d9f64dd", + "0x127ea3571870167bb31070bf0fba7a3edaee1d0ec0158bcb2ea8249e5d516825", + "0x7eddb9a5265011bbb717873dbb0114aee0698188b26a3eabc6f82834816c19c3", + "0x6e84fd9a8c6b52249803f4abbea6233d9ceef93068682572b567785a9c860608", + "0x99953c5e359082e47a29e017cd244047f73f44c7945e6d260642abddeb10980d", + "0xf71da4f10d95b5735e41b39109ba47a1369b8263305cfbe8dcde5532ae26a90e", + "0xbb4f40cd480dad3a830510cd14aba5fafa94ef82543aec4bcd3e307520db1ce8", + "0xadcd64c950c24352650bc5397d4652043faadad6ce816970d4f6364e97da7787", + "0xe5bc749df8126a54c4a6473173bce8647a9131e38ff92d6b3ba91590b84fde9a", + "0x53975a3c9d5c7454ca2d91509e2425fe3f8bbe42d5cb6a1ed7f743f3630ba805", + "0xacf95108649c624333aab84ef16d0726a2737b0bb084b33df075ddb8ac1bb53f", + "0x0f59a1f2f12aaeda13df4632b025aac74acd02287fd47a08c7838301fcece25e", + "0xc2f0d652fad1684132423f89948cedf99e039abb2cba097a8219f81aeeeaf623", + "0x995a9139f09e9cf082ba575ac6ffb35f429d8ac93565836b854312267f951f91", + "0x0b0c13322541723421660e43923602f2e1f34529910c6aa15cb7339bc34a6d96", + "0x2a225092d3b1eec5685c220bd9194597fae1781a4e295cfb3c4e06decf4a44d0", + "0x963452ace51e69fc27854880179e8070c81287271b831e4582645d4333feedfb", + "0xcf57009988b9db838dd5ac44903605ca70ac45317112b57bb8c91ca0171b2820", + "0xf685e94da234b839830823dfb0d607c1a4ca942ed68299e264ce9c457bc9aae3", + "0x6bcf336556428a8518034efb811ae793d84c80071cebd9eddbbfbfd00f5088b5", + "0x0a327aed827a909bf771eb516139c8ae8c721417e8536086335c8670a1b52991", + "0x7ea2a67d8b7befc6784f48272c9e3ba6d206dd5ce747a0f3b22b2badc95b93b3", + "0x4d031eb0c78da600bda9d7fc8d07d4319b824aa7ea9e1d9af861e4c2755e13e3", + "0xe8887286e33bccaf28932af775d1503175ff0304605e689f47e850a2b6909582", + "0xbb714380da8d6c48feaf39f1a3c98c6356194a8beb93413a35c68ca5c101e3f0", + "0xecb00ebc31d49e73931328b1a7f1be201e260bfe42197559515f420eab1913fa", + "0x756d6c99947e0e66d31c078a418a0fb1fd09e5280974faf47317b3d341e0d2b1", + "0xf3b2656ebc4803f55b9d80ab98775b9a70d017b94949b04793082fb8d713f716", + "0x7c0f9e4522a045502a9510426f8a06bb3f4170a8fca13731d3befbc7655d29d3", + "0xf63e4fb74386f42c6df92da399eb4137b34f2cfb5ec7146a81b716da6f1e138b", + "0x836142336bc807181f35f45388cb2c097c9e7b9b7605d9d079547957aaac7cb8", + "0xd6dcd8542a975d2129dd0aac86413b47a8838f15fe5aa91ab01165230f58f61b", + "0x7fdc61debead0a01d0dd2984cadfd4b2a22442ffb72e54c0d25ff9d940af19b4", + "0x9fd111c14fe3bfbd62e6ec8386f89b99c7755a422970263580d82c9d70a339ee", + "0x927a0a3093df49c90b5a41bd2f7f63a9b4ebc937b347431e052c945bc8beb252", + "0xc29a4d66e9ae8ff0b70afafd743154f726adc4228ac276fa7a99d29b454c25b0", + "0xea30f99e82d66c231ce97d90681d11573506841a39ea5dfed7eaff0c92979ab4", + "0x415036b80cc20e0ede161f23ebdd82091d1ec0b26d1c6c89a00aef37e0840416", + "0x93a973cfce3f9c466f3fcc840ac449967087732ff89bdceaf7b59c42a72c789e", + "0xd2f8e40dd6f221b4f2fa20ac96a282f5c7c2c384b30daf5415c9c7600f568312", + "0x11c4781ac066d639d307a2517e1ba41078f2b82c96e1fa0b6d1da4a5cf1b726d", + "0xc90ce8ec757e96a323d2a426e64ab4cd84bb435e8539e037f51dae6369e84f11", + "0xd5610ea911ced5bebd9706402c46b121f60971db85c8cd369565e61bbad5bd67", + "0xffc8db355b911abe05da97ef41f016f14a4010fb81066848bee6a48608a9b192", + "0x2e5ce95848feaf7c3a183ad147f39994a4aeec9c30a35b1c46d4cf41952503d6", + "0x952f4891957b8f535e9c5053a57fbe35e533a5575dd5e3bda29c38da8a728720", + "0x909ef935a67b90af72c4eb5b1f4ada920711b4e81f88716dff64a13cfaf68952", + "0x4767e894e2954ca0a3dd8212be921dea3aa3cb5a4dd6c0490a6db122e1e29d19", + "0xa574e4bca14bb011f3184718ce0ad71fa54c79db9bed23bbf3775561cbf83b0b", + "0x35dcc8c1f20c0183d541e346ad4d9d6f1cfc11b349a2e4efeacf7350fb363f7a", + "0xf1d9954f936da8c9a33bd54b055364e47a1a5db52929883ca1f7ccc57f6e9786", + "0x81319c2f5f864a63a862e457a38e1282213235f50fe6c6b489594886a8d5d7e3", + "0xf1a00901944dcff4cf27a8477ec0a00d98ee1898b753fed432bf30090e75cdda", + "0x0130300c68b62f4f8c57f11a5968f9c29061af73cc76735b9106a37c756e002d", + "0x54a71765825a1dba95dd1dc8fb439307d808f3a4670620e2aebcf312b4b3a833", + "0x80bc5996a7796e150c7fc3232e9e401653d01e88eeda0430d4580056709003b4", + "0x49df8b27fd8ccb3106d3e7fa4f14f10c73f2477b56e22d20771e748abab0292b", + "0x409528f921fa74946eda4f512a7a0ebd24b7ebf8fba65aaba2f67810bb236f75", + "0x216816a30268888595d34bebbef045b24cbfeb2d42b4a994c379fc305124791b", + "0xdb4d39e063444b9946baabbc586d3cf8edb3eb0b6de94cb68afb514a26f862dd", + "0x8c7c8bdb7360acdc2acd7e8c397bf896cbc0c32751f6bab7a0abf43eb69c8cfa", + "0x7ca406fa4c91b53fb459d9aa9b40e879550e9ffe750c4b714b8789677eae1beb", + "0x556daeab1392a5937ac1deae4829032e6823339fbda20c9c5fb7cfd163807f05", + "0x52e982fc76239c968e31bb072159945a8a6a202dbf25d74777444e544850dd19", + "0x57ec7b83b26ee2dff1cd3e80e2c4a744d66cdc0e24b7c382acf58c4e55f3fc21", + "0x033efcb7a83b56ce0506d40524bc5e50500f072f983ee913a9f6f4bf6a71c247", + "0x49d92ca8dcc6a02999aabe9950bc3ca2eb86168deca49e90ff02d51bcea06002", + "0xebd8472dd0a966044b8c355f0b6161f49d8d81a196dadf071e7e562e52665287", + "0xba7465220d44c2a5b91489fc89d263054d7094a3db6c6ca8666f6a90f01e2274", + "0x04861be8578c10c1e588d3f29207ccd0216590b00c03789d3227182dcaaa102e", + "0x0656d41e8f11eda38a699b0336d532cb0cc39911515645fd729c0e2440b5570e", + "0xc2f10ce07711e25ccaaf129553530720bfa5fb1132693fdb2d8b93488d00b54f", + "0x31df617ba951999fc7022a2e720836117c66976ce70da16ef3bb34a793082a09", + "0xe76316801f6d250a13c183fed3a6621186f5bce23e3d1077ff3e2848b40e90de", + "0xacd7c04a1f8a18ddd282ab7b9b619649c9d861182c89603714a972fe30953f1c", + "0xe9f8c263e2fa39013deacb061eb00bf1d39ac93553c100bcad7abba2102975ab", + "0x9c0ebbc2904d58ad3ccd619b9ca4e8db2197aefc3142d799f9542c29c6aa0b9d", + "0x71b4f97fbc061063d36edf23465a6f59f62f7271aa912b71f6a8232d5e8642ba", + "0x0d7e4b07e8bf770da9ef0cae2ffe62048a79adfae3a4fb3740e985112cd86f00", + "0xfa71c3644cd985a15998a15399f85d2348bc513e9f641cd0a3cd4dd05746c4db", + "0xc0e5525fc15380092413659f904689b5f6d7bf0eebcba4783a2fa1633ef9b07e", + "0x1006fb0614a85c4110e9471cae67d1f52074847d31d300cfea019ba8fa508824", + "0xb434505517f7dea5b8cb7f3ab54483d638269630b766d95f3f46889ee06451f4", + "0xc480fb6381fb1d54d4cb9631ab7c07600b5a229c4685296b06707dd8781c997d", + "0x3ac903cf49b89306f0e2d17ac47ddb0a4cadbb0a7772ad8722d11a343c649742", + "0x14f65746f3eccd4985cc87165695a378f62550614d08f6125b23389e4cace043", + "0x6b83fe069046dc8720ab0325f5888a4afe2f2f128e686b901b849bfe25d42f35", + "0x2b35e06506c624d16fce41025fef1b4633c364b7ae7d3a36f253a8037d801b5a", + "0x9c4937b915656c509b39d4432c0e75d43566c477287fab2438e9dbe4b3ab7755", + "0x6ddd34db4f7bdc1c30a1551d79ec95eb56c7877886c35b6e36b4a50bbf595e8f", + "0x08ea952dff0a028b2062e9dbebfa4c53ceec13b2b277acb8674a4c33babe9454", + "0x0e221cc701a9f3e98de43ef9769068672f0c7677e56fb1a5519c8404746b7d56", + "0xf5601bd9f85de53feba2c56a909ca46dd3257ec0be8da5fe7d1a5806c8b77329", + "0x5c523a3dd1c76decc83879187ab5927bb4e1ff85b780e28faf484b0395caddd8", + "0xdd4fd3fecd641820c104f8d7e17df1f2ea58b53e3c35fd3822613a25f9228151", + "0xaee15cfa97b8b615a5bccabe8947985400d430e05420feee75887229bb297c6c", + "0x4870772c9a0b3b46068d3a2607348022828cdbc82dd993a4754e14c1f3c89d90", + "0x3d3a52bd47fbac7b6cc70e83eecbe4ef999cc53a6853d173d2f0364f166e4377", + "0x17958ce4d795e73b652ac2280c558fa7f0eb3ef00ea40600dff0f39d3fe445fe", + "0x1bb3a53a926a6f8161d8d531ccaf24d5d680035681467043afa4c78f33c72575", + "0xa9a1022e090868b26331ea022e40f3b724952df83e0f73ed16dbbbf0d5fb2f83", + "0xbe7d1058f062b8c32c3a9f19afdd066497797b54ac02206bbbc7fccece6fd274", + "0x99ae823b78833c5becd38a84600d7baab21caeee5893e26c3b30004462b58082", + "0x5a3e697bacb3e7800b7fbec843cc362c77c43a57a285228c77434d0d6c45c15f", + "0x727c71f2a307a65bdf5e689964f8c2037d2f14e088618223180b1b57b64ad226", + "0x38305b295ffa65f8551b83101b876dfa7646f56ce661b678aaeaa7c4d11cb6b0", + "0x128189add88cee670a10d30f6c5d9d169323ff91054a4f2e340bdc41844661d7", + "0xb9c6edeeeb6b1d3f7cc01ae353ebd1a7b7200ce374ef0822f94b03c1c1628241", + "0x64afd9951f941c2361e4a839983a2e5e1ec40f775e65a80d7c19337a178b89e4", + "0x82d97027ceac657eb0773d370e27ffc8bedd67cc5a247c2b6f50c4c220a6ab60", + "0xe051b114877b74bba56ad9b6778b59ffa2bed253fc10aac742f4c40a0547789f", + "0xfcb0e198b7e4df8d4311d5d4a8b560d0528e848c16af6a1cc76a78e13bded13c", + "0x71b16fd30b87747e71219afbf370510b137534fc0ce2fef1099f7d42471108ea", + "0x5e0abf9923344845ccc744df1fb50743988096cbd9df28c2e06c3769f3487dd2", + "0x3245ed452644ee73349cc25a75d0a2089d3afcf625e1f808c2de0850cc138814", + "0x4fa90f092e36f5b9cf24371825c3d42503cd26bfad2d3eb613d8adaa307b6474", + "0xcddbd5c1f7d791318cf47f8d087c606c897f42d0e56caab505ef1d0c8a9a6fd3", + "0xf486df149d699de7f0a89f1d3d378f899a0b575a9b8c146ee041b250c7452104", + "0xf3821ac434df446cc0adfc2b097103fff88d2952d2ce784442ecc4b8d37898e8", + "0x1268b0cda90fac9eb737b803115a0e86b1dede6345c4c7c0f625e10c9a76f1ca", + "0x25e107a2447adcd981bc76134be36fa92651e076bf9f30ccebed23183454d583", + "0x96dc1981939520ce2cd00028ce05a25b71721efaf16a3de839a7717487bd78cd", + "0x63be069f1f35f8cbdfd66c3a553c42b9da2f2f8bbceb5448c90fee8bedf81f9e", + "0xfb265855a4ad8b13fe69ec2fa25e9518dcead200be9d2db7c34680a9c3410ce1", + "0x796fef3b4352cd114baba1db0401114895cad818b863882ebb8eef03a78f1a17", + "0x36447ecb2582942c0ac71bbcd0f222fdf7768c8b6fadfa3679cc90dd619b7bf3", + "0x801387c1b0f3c1890ebd3df151afac696973d83cba4dce01c4e91f72d23aa543", + "0x914d0c0fc5128b5b4fd61b1110638a80eb6f5c97c791f56a76cd9861e0ec57db", + "0x7c05eabd2c6e6045cd591d39330aaef0a93e77bb709f01a65ca094574d038fad", + "0x384ae578ec9349687484bf7095bf11f72590a8de9a6888e2d33f009ac1f573e9", + "0x7ffa1aeb2eddfbbe5a659f9369f71b061b727e360424dd8956c6ecaa77076909", + "0x750ebae9b761f63de56566a193b1eac55edf7c1d964ff59e7229fc41d64a3c27", + "0xc9ad855e079e3ad5e5fedadc79667440aa4c1eea485643a09d076ed2bec7db9b", + "0x12cc806a00dc28e85ac2c56c375b9b9c8274657f6909eb99343793d584048382", + "0x81cca44e48a1af23a9f127c0fc89e760d18cd7791b0ea16348687f470d7d97e1", + "0x2c200efb120794c77aadb7a0b8443652279366a44c1d0cb4b286d5d5a566d366", + "0xef04f7061dbb0d6525fe383bdf1a9bab6438b76e01e186031ac621c0190eaf35", + "0x04c7b515524b72d4c2b375114669cfe1ee0fc76debcaf75835180b83b96bc0aa", + "0xdebed0c2c026b1e2b949470ce77fe43833af7bb5acdf4a85712a5e13dbd37d59", + "0xa9f933f23474a0c416eb01a1281179e6c0ef1f1b952a98d03a3ba63660529cc9", + "0xe0dba677aaf93e4919f440b788ec29f59282978550adaa8a2bd76ead03867d70", + "0x10536ef3e8c6d7631af5cace70da025d99e2fa39fe2bcfefee1ff219bce5e6cf", + "0x4b0325a93eb70ed2e3cc3b08f40cd44ba97bdfd03bd53c81c470b9cecedbc856", + "0x6b4b4a76d54d15920dfc53f6d8c705faae355fe970109a69ff055d66d3ebc453", + "0x8a23de9be0f51ec60df5d1f51b4188f2d9bf3abf6a98f7fa270ce14b3831ea11", + "0x2fa4dfca9b8d1a7069280252c93f95e415f75cbe5d84f86105bc9849b98d634d", + "0xfdf57b3c3d903cafb12c1a3676e7735b45485230e063895c793458d0ced2d68a", + "0x27d69477626eb7c4847370d01f59005856f0c466c92fd482b069ad38433ecc79", + "0x625de57821627ad45fa358de321248da5207bfb4d9d14e60ba2658925e83c9bd", + "0x4c622f418252e2c012f37cd822f7674253a399f3f854972181ec9bf488308ae4", + "0x70dc2f0c686c2603abef50d54eeabd0703e772a09bd794fe32bd96f95a4ba6fd", + "0x5f370cda9e36b3e50f9e2065182d8a83593857931e9f43018aa5a5a5bd38c85d", + "0xb2e97da5170cf17682f4ce3517f556dba9de96c4fbd4c7e525b02fab1988d2c9", + "0x24ecd46c0fe574dcd6ac2a6955615c53eede0cfe910678b186c20038de2f17c5", + "0x5e523ff5ce388c2049b83224318c353c22cb095776d18b956702e94a5f3e97db", + "0x5be315de6d3d52e5a70f66360a5a85e25303aa8f9c060c80e9bd170c16a25039", + "0x8bfdedc7a869bd7ce6ce9f3957543ae4b5b96842355edeb5f46afd6cc345e4c9", + "0xe7276c09f872ea02dd6114f7a4f904f85c1e7b0a112517b28e9e252db992e117", + "0xb7a53a3fad5e7406262ea20c4d887013144f3f10c02108efbcb6ffa3acfdc42d", + "0xca59b080801552b527c8bd7981e0a6a85144720272a320e48aa6d381ef64dc21", + "0x3f2e76518dd9237706161644a992b6111015cb1a26241814aa2485af7c9409bf", + "0x4890ec2a6d619bf69e7f0cc6d5b6028e2326d63354f668a4d19c4b7e4d1b29cb", + "0x5fb0315a7058ab63abceb31ff5b0212545d84a84d9b81f45f2f7965ff95c9e58", + "0xe5731818fc75df2d2026c4e89f921b50c767dd7dd50f987fea9f8f7bf7cae880", + "0x1ecaea54c6aada24c374b884992fe2b128b54b714e6e56187ffda713680911cf", + "0x92679dc9523783b5a807addd224097f198684c4a32d17769793665b651822932", + "0x9318576fa6b12adc6941f3873d97db85494dbd4c392a7bd7a18297b564469381", + "0x16b777ace95e2d2fdb83d254b3214ba9fa71c03ef8c1b1141feaab47f4e6706b", + "0x3732260d68c8fcedd0126275aad10b13a18ddd93ffcaaace9a4c190c1a4e49b5", + "0x8f6882b8a00b1fd92d86e697d1c9032717420ffa54e77dac92b4eee34056dca5", + "0x21a66d604299169ad1e497653774112ccbe17c233305588102fb9696ba00237d", + "0x56cea1078f003e5589d93bd5aea5708b12d39a433ac246335b676248f65cf0f6", + "0xc39987c272d016d0f6391a5958e3150b0b109fa01c9dcf1a6788653c8ac81a83", + "0x9d78af27163fbe55521e66358108e53943f9b88fb9967e6327cb586bd63b3a6f", + "0x39c4f370fa9442223f785cba2e401e54209c1a901a753a825138b639d0875821", + "0x647130b0b0f99d18a11f6c1ad08462f46388ec58848997ff25aaa372ebdb96bb", + "0x86524920ecfaa6fa3de3d0e39dd0c0728bd984d2094e09be467127cd479295e4", + "0x2ea419241a2d5f1efeb5edf1068c5f912c56be40f6c31d0a0b96f59b8a70618b", + "0x0335692d2484bacd550c6b63ae47a4fe18998d8598f53cfe3de5413c06aed9ff", + "0xc773f5b487d22bc3c6a35fc5cec42b63de4e1950d7c5d86c4e464ce36b8f1133", + "0x86710b387befb7af9d90579f270e1f9d0d54fcee0b4519d2540c4602ae6dc578", + "0x4f1661fe4d1bfc5abd2599841d639bbe1a6e545ae3bf6347c43e37775d66b56c", + "0xed26b01b5261cb6ea576454ff1612128ed70a678146689aaac4f4336c7269428", + "0xa61e9d432b5a03c3fe8416b5971c69653bef0e430c186fca59116fcc4a828845", + "0x590b6d297d7f0774bba39557a9dca9ea7223180e7dac6fea3523dff2be5bfe9b", + "0x630ecd54644e583c828c4c6fa9286a264dad4cd1e9ed66e730ed2e90380c732f", + "0xfaddd4878ad3f2eda3eba14f227363d8a4756f369f7fc11602745b67c2ccd76b", + "0x3737671b007567f54f265856d3a7570a0ae9fae51fd70c7b81f524d287ca24aa", + "0x0959db030c821c1c3eb3c2b71b902165eac34bc7e05e8757b6f97bdb750dd48f", + "0x0c812262e43d60764beb8824517573460de766c7aac2adcee3f1b2b419492b4c", + "0x3bc9ab7ea2ea5ff4529b22ec92af9cdb096ed216c1642c6a4c9dd143478286ba", + "0x8e7ec84dfd93f0ac7fc1accb3d69bcf8a8d0034507005ca5ff15db306b81746e", + "0x5b1e8acc361f184d76f0334f5898dc2f06d8871e1a5d672ba59da084ad30b46a", + "0xe9f8425cccf868bdf9185340862b2525aeb0e3ff3a516fd921830d2814873d99", + "0xf57d5e745fb7627409909ee5da5be6a3bd211bf8f78da7c3b3a4e30ed09fd604", + "0x30f61f4cc3cc52cf1801db1a1247a266177033128c1c9c48037be5a0b4371429", + "0x3280b438a3110e5aaef66be5778cb9871cdbea652c0a7e11fbdc18cbb1d72495", + "0x7dd9cfb4f55452a238b53f5ccd4e7cb04527826a45705c9a513f9ad4703a1c37", + "0x51021386f2deb3c374e6bfdf151feeae59e327f5d5d330c13b56809abc70c752", + "0x29059811d484677e695b3338564c84928aac722bffaed5e7f1f67dab4314ba93", + "0x619dd397e134acb573a4449b7c8e06ff61395af2865a628ba5c7f8d0b0ae9fea", + "0x4bcc431fa98ea826c2da35399d4eeaddd553a61f6e023601534cac845edaa852", + "0x00b3e6647298e8b94cba9c8c7ab6432b22e1eeb412dac764a6619c6cb81bd6fb", + "0x055db48bcc0f00943754e8148dfa518a653f6eca91315c27f249d7eef5cf77d9", + "0x7a549e90a1d68a3f3f383576ccc4b965749957b2417834636ea513412a63c760", + "0x0665bf5ad7f1af89b31fcda37389f02cb1952869e17cc283425d225e725fb91e", + "0xd11079f3f1013099d2ff6664516aec4ff7112373a32fd815fd24f42e7dbf9021", + "0x8bc49de47355f1ff93ff0656cfbf5e6217cdf9228df44b3c487d09c4d6a9fc1e", + "0xb705fd76e1d36a74c2e89e186627516106292f4c3f58fb96eeb695b9dab15b0f", + "0xce94d1de22cbe7536966d0a4dee161e9a09aa35ced516560c8a903228c68abec", + "0x666b1337390cdb9560837357d379f2614b4c09548ac08a75c9dab0f975107f22", + "0xe993a1fffb7c577acc47ba07667908676bad98522db2641b795811072350a462", + "0x905f3325076571f851df1b14872a5e5b525a018994d8ff3a3702d26cc94ed14e", + "0x6b60171a89ba4047f16ed175ade35d78cf37734da7aaadefd4407eea203a0bc6", + "0xf0e279959837a1751e5b198b7418fc0bd8514970b90f6b0f40bf5224d6654ee5", + "0x7179d2b6f5b36808f63fd04c0371a552a6d8481b19a3f3ce6992711fd11df12f", + "0x761553af4b4f923150c2bfbe600adc493f57f6aede87760f2ac8fb5563c3bc52", + "0x996423c82699b88a360bcfaf46dffbc95cdf36c8892d1df33efadf253504413b", + "0x6546c1cf4fa90881410a3b6653d06a4656731dbbf560d97cf9ac2c6bf8b931e7", + "0xb60024a4416a56a271dc588b09a5c666bc70e8138ce5a425897ee37885b2993f", + "0x9f6e30135e702674180c69f06fcfe223318695440afd15b8605bcd2c96887262", + "0xaee344ffb38d0b676db29f530577266b0657a9d06ac2eff0665819ab80ddfff9", + "0x75cd35eb1e324aa350b589059d604c3c020a0bd6d05176fdff45127687e78245", + "0x88a06a5a1aa084c359687a2f25040822ea285142a796865f2ff6469bdce4dd26", + "0x3f9a13ca68ac93d85fdb59524965107129a9a289974637f46bb1468708665959", + "0x0785ccca56e287a489b5b810b553bcf447bd75428601106eb42b793da8d77fcd", + "0xe2e263fa318e4c70b7b6880a5c9e970c033fcbb267dd9ce3e4dbb98a219f1ba8", + "0x013c5f357998b1822109cd823a6257509b4d6d0ba244eb5319ad37f6fbc2582e", + "0x4e57680c68f31f0939f138fd2c42974a1af827af572759f3904e2acb92e2a4e7", + "0x5fd59b25ad0fdc06b3bae5aa01fbf14d36ae4a524a640afac1799ea87fb69965", + "0xa55afebaed7e82bdedda99f4db44d9aef4305840825bd27821db2864f1ed30b6", + "0x23cd48f3c7f5db1ec444ba1da68e072327a5cf9a6b930bd5541c9edab46abbcb", + "0x98217a7b4cafcc5f0d7f31a06cd2d02ba2fe3971d8301029df6941382ef31ccb", + "0x909bc16ea3f89a297f7b11c1861c4575151fce8c3bb7474db764a574abbc5fd7", + "0xa69a748de1825a5e28bf6dfd4ca095d25e6811eeee03b4fbc2a6a70b055b722f", + "0x00e6f1e1a420e6fa9cdada4ee4863a3576ee65b08ca411c8cc43bbd9b9eb3b35", + "0xeb2890b4f7c1dfff13f6a915546a41877b02d4dd9110cdd4a8fbd4a1b7b1a356", + "0xf22fa98106202baee1b086f628bc94feff8b82971442884b679f2f8753ec47e3", + "0x686a720131d8e2b14072dedf4482aba7c542c396439cac487a1622e16c5a8b81", + "0x07b91bf5a901816978532014b500f96735f9807de27aa1cf1d51d457cdefb0b8", + "0x5e8c427a812c16df4c3cb7930c105d9b5331b03059bfba50cd2af6e27e0012cd", + "0xee134610cb36c9e0a3b51006b8715db178b007e35da3cd5a3f17254188376392", + "0x208f6ab18500c5bbe2015c0144a7c775935768a3091a3ce7ee0c2d8fd8797206", + "0x4b67c108ff8b28865196867af9b24530fe7a1ad98e259414c7f21cadca8d5b52", + "0x06cd330ebb6a5ac4681c58a3495b33d61e5bc10019fefbef36f8a00f45eb3c9b", + "0x1d358f1c3745f7a099ca4a4138c898f5f83224154dd59d65006087f5f49c6574", + "0x1285194c6cb5707de8f324c3fae7e51552420c30797b0d59d0d39e5d02ce402d", + "0xcda3293d8c09022354568eee8024043bda2c93c5f9ca9497771ef85ddb37fa94", + "0x10a388c1188cdb14bed20a520954ea5c1908bbabdb6405741cebdc32327eb9a1", + "0x196762f8ca98f4e78a409db28f9fb30a3bd08198fb022a77a9036dd28e0b541a", + "0x48683e3572aa647dc4a29fb0336023b82baa2c5eb2c2d727ef71ca75a66445cf", + "0xd31c4bdaad98eb24da71f4ba8901600e47928422aab194cce458ca5f59ccee63", + "0xcd0c97b7a47bd6ac092382128316dd0122dec900f021d49cfa6461fd9b11b26b", + "0x631b7bebda2b8574c5609d6bec96220797ae89f88c77c9cd2ef6c80dc0d2a37c", + "0x10e30cd9d1c7e3d044059f22b9c3b84f34f29229b263e149d54669ee3486dbe3", + "0x051b571fe2dc2b32ef8b19443fb586045206d9382dcd0a54d02c2551374db41a", + "0x8c75d5c9cac5487ae3dd7011804d5c575179fb49da66932a96473f44455c2c0d", + "0xfc665aeb5cf4068d711cd58f37455631f656b9e618adb9d1ba07ffb684298aad", + "0x305eb411335b9e6bc5d1103e8681e430ca27aa0694236acfd6ce9b81eba40744", + "0x60ea2900172bd0bf5d05766b8a972727fac673067167d77836c396804ee601ec", + "0x78f95eae9286cfef10796fe3bcebb6c0f280a9849488defd386bb443cbc2e74f", + "0x876ecdd62d09cc27b39cdac14a5a48a57153bdc9d6dfa298947d21cb71936e47", + "0x05055cba76f4d22942cd140a6b115414109168b9d899eb9fa8d3a23b6819264e", + "0x46e0baf9a1933dd541d8eefeaa51f6090b2f4890c06f47a2b53a09413d5078a0", + "0x19533b40f6c28b7b5b2f1b66163cc42d418eb43cd7b5563fc4e01d409779d1d2", + "0xc0794c7af0ae385a40a766d1b4141615101c1c65c242890f10a4260c6ff8bf1f", + "0xc66391bbccebeb06b885aa6654a3ad0348feb7dfc08bd58222abf9f8e4554f6e", + "0x306e057861877a714e6280e399fe06089c2817c3bc0a0117a77a50776fa37f52", + "0x297683b47e794d815127421981433b4495b3d8cf0afba1e4f027e90367baf634", + "0x2dfb9245a383ccbc23b367fbee0ea8a955e9ca49eea538c8ab0f129890cd2d35", + "0xe032d1107163197c76df5a9120f4d8d571790ab774780bd82dcce614c2eda9c7", + "0xff4dd1436136a461a0ace023b9a15ffe034db7165b3de2d24227994085b3a0ac", + "0x5b1b4fcd92a828b9e282aa3162153de515f345a953c4f8da31254bd1903fd8da", + "0xcd292772020966675a7c9967db28b563489ccd6d19a5319d446184c43403411a", + "0x876ec1088f57d67a22865786e10ac353a50cba6e1f468c55636e05d28b9d93bd", + "0x6cbd643a24e20992a7c1a6d6fab5f2dff17d78fd67848fe34aeb9b1a1080ed2e", + "0x171dcb39fd244d90b7a86e6d1c6d7bdcb4d79388f1363d4325c9cfa88811ed0b", + "0xd06bc2ee4aa3c75c851920b5bfc92a1f1ea8be5549e1e264295faf9b2d9ba2eb", + "0xc803e39d8441c5a0ea2b3af8a1899227d471c153016b8c895fce1c63ea431fea", + "0xee752588b555c79e43bdf7f8bb1b8f7b262d070e38b01ebfd76a219a70521cbf", + "0xaf62f62a10dfd26fa8c91cf51f5c2cf0f6427a13b80953c9a00f78e0c54dbf37", + "0xce5cd4fb28e5cc589d22bd1e1550414a2d949e54259fae32320ae8f4a0cf31f8", + "0xfa32019b8e81435c75f77d9e4c6b173f67c6cfa822ff8cf4a402ddde924f1c0c", + "0x907ea95bc8a729e6954c2235f1250def424cdbe3c198ebc1811747e079aaf14b", + "0x1691a83839904fe83435eebdd8776fdfb89cfd5e86cc23d04b0519c532634851", + "0x1f72a75de6659e04c99553ded87fb12f4ba44f29ad146abae31bf3e6cf4ef7ce", + "0xafad7340351f3b8365698a344cbb928132742e762557fb91a2aa5c521b3a9a04", + "0x3f8f46e8765d7db0a1e292906240e63962cd9745cc879e9b4e5ab6ebe425e5cd", + "0x9be909697575faa7c8d413d10f33ef95235dd95b639d796cdb892865f3a4d4da", + "0xb5e272e1b917b9809424e2d45bb558524828c2d667273d9ff86911ce20d5c4fd", + "0x062ea67c2e696e9512b65e9739540ddb44786edb6e6d79165648e226cc8108f7", + "0xaac5cf2ac5b7ca8754a80e916b206b34e378cd77cc2f20b3127f43a9dfd95dd9", + "0xe8df9c4d925f09cb6c700867f1def7157095e48e439a60f6f45980e714d4350d", + "0x985b5f10a2f49ffe6bf459f2017dcdd3eaf8c41b58965e2de945f69007dbfe33", + "0x5b0820caf4b5e529b4ae312f22017cea9c1808ae43c74a1e3b80bcc8bd150f4a", + "0x80c85c31d97ff0ab0cd57de2860e1286e0e421eb3985c8579152af4c8924b0c4", + "0xda61efac587126ad8b614f5f09fe0ca1f20a08c55fdc821a52b81967e2b42729", + "0x4628952bf9712961ba59395475ada23d998528415567204fb053d127b4477e6b", + "0xb1c9a40f92ebb179b5a26027681ea199fd9ada142203cd6e7f4127e9ab5d4cb8", + "0x0d2047590e8cfb6ec4de9dd9b45a57c68cda81e47a2825d2a0f8e247dfd9eac0", + "0x7c52211da5859dc159c55ab931edc51591b1cc40c2ed94e3a1b099ecb8461b88", + "0x0ca4d9b79d436ed26fa2b572304810eb84bbd488c00c049196b964a30d0113ec", + "0x7ac588b2a30be81a77672044e8a9edb2473b5dc7dfcedd16eb6dacdf494be0e0", + "0xc534e2721c29f1f203fdb4a52d8bf84512ea537839481c81568f49bc1225e27a", + "0xfa257d5e9411d9f1a79f94409f76dddf0acfbe632d8e23688c29cedfa130d746", + "0x67c4e10fffbcc170abdf547ebfdcba1095b462789cb80c8597e729183e1c7572", + "0xefcde5a9e338849a55d6214532fa1f658cee43b76c0fff9df02c78c785cb7b27", + "0xcd94f9dfac150d943564efe28c4b226627485ca539f3cd7f829e6e908db35979", + "0xb6085e2362920cd7a9d71175c534b2e4d39b67933af0ee813d15319d8f8250d4", + "0x496061782e869574cf8548673121d176fba013d13794d0285598faec125f929f", + "0xb14dc754b24d5ec2bb58cf81c0a46a0247fa39338aab967384ada4dfc4364f8d", + "0x462288b2c173b04fb2296d5adf61e7e494bace7957a42e799e9cabc0dfe3ac83", + "0xebb65c35807154934b78c8d74135206d6644a775f675dbfab95c8371a46673cc", + "0xd55f0c17407e403125a88d451ae7959c49f681f1829a4d6daa824a0f4124608e", + "0x9dde6ba8977b4e08667ba3c50b885f13d3d060cb6148b0abd32c3b661d0376c7", + "0x55fe0a4da8597b69e6795c4382b634950912b30bd8257832e9f7aa01e625e75e", + "0x53caa4154558b658e39d63ff7dd0854e281b9c8e33c82fd8274376ae68ce4179", + "0xa9bc3f833e77e6118750b63e1d2e3ab2d17a79471e9d7dade2a284e17b6cdf20", + "0x3113450c1991c2365e1dedc30c004ae21f90962e0f543b7c33ca959d49503406", + "0x4406c045a865c0a652ceec96e7c7af18c3b95450b15d5e78d41afde733a684c9", + "0xd66d2590826f096c566df26616a31d9678e61fcaaedacad51ea1208cbd5bf795", + "0xd44bd8801a56af06b25e5e875e67c163fa30740f3d216229c679a2954d82c5cd", + "0x60c37fccea28aa15bbc9a95dfbabfd78d04ac7a35a0b4c14f15ad96945b69fbc", + "0x2698ef0bdff39234d0867513be3b66da698dd750739efa9aa9f84091aa186a6e", + "0xee97c2d476dc0eb0e62ac4863c74cc7bb59ae19a8c0bdb4945e25bdc02c2cdcb", + "0xa106b29e29ed9157a864d16d45b8a6eca9ed778a61361ec15ef28243993351ed", + "0x9cdd0133c8a7b3f2b8d287b05512a905a0a7805dab2fc43d8caa83e5026c1307", + "0xaf8f9a8528181e2142cb97fc6fa8100c7c1568fb043dbd92c93f4f093a409638", + "0x4147e1021762d235d783b56997ed121dc82b048e7ca121680eaccbe97a237032", + "0x9c1a31afd83fe89ede631c7020dab7b80f6540c3475edef03a5f40a7d7ad88a7", + "0x9efc4504e17cda213f3a3b1ae349d438fdf3ac791d542e2436bca0ab94ca5304", + "0x3ad62e145d8184d971590be776c77f38eecec31b0dc83bf42ce047894c8c4a07", + "0x2029d50236e61149a938ad2726c6e6aa0e6728a0fa162c48cc3dd570681e5497", + "0x0a6df8e7bcc8c5c9a7e13a126fc3eb77af3f6bfecd110cb8bf8eca7fecac4574", + "0xcab90dcbc750713ab7d038a1e79368e3d4f969604582c52e15334a00ba97ef48", + "0xbc1833fa897d604335c22c10fe45daa27ccd1d0acb9783f738837f0ad115a9d3", + "0xb5a4226444f4013abce38de1572d7a95933a49715cfba7c6c16a9688db55ff86", + "0x8317d0ff9a057bb2c62a1634167991e71de3f1ff836ad788f2e9da2eaf371fe6", + "0x8d6e920380dc7b1ce15fd44cdcb379afb393d7a3744a1e32d9a67010957092e4", + "0x80638e86c6d5a5e5bcff36f05ef0936cafa699a2cb88583f6b0cbeed5602d969", + "0x21e33347e0f53bd1ccb6b22c6593306f0f96d0cf897447796c61c002b1c462a0", + "0xc2b49e94700d3f9bef61d1132d30d297cdf8c27c348ac0dd37818c9e8057c38b", + "0xd8c8ae125ac0939fa973e836eb3209d96dacfefe26cca2d36526fa7a2a5820e3", + "0x5a05278504c5c6aee0aa945e70d175dc1afa17395f8af61d358ae55356a17d50", + "0x1d1fe7bc259b77a1bc6b826c3369b98ae301d47e35a300b7fcd63cbf88ecbc28", + "0x60c4cd5a7c7d22577c0625a2ae717bd29555fe0e6010821c6c801d7dd7aef473", + "0x2494f17945c735563e1627506324d479fb9ab2a01c32374110d441d57bf87b14", + "0x2ba5ee1ecbcba851945ca5531df25ccf4783b084a8c0231e9caa234e9b9ab25f", + "0xa483fa8bebdfb14238f470ba1282c587ad1fcc54fcb34e2c13aff9311fb6ddde", + "0x1109db705d56937250892c347441d64c461a3fa28a5513264a1a82dd5cf497d2", + "0xfa28de144af8d7d0593bd3ad09863ee4f01d960896eac5e01692389bc971ed92", + "0x726d5eb5dd2be92a565f4bcb0d82727c02349c36f796b70d888da153142ee122", + "0x745280b75dbf9e2f7b0339b13e95b86403d48bc54e57d694238a4199046d3e4c", + "0xc01dd3a56f7147fc4f4655ee6f41c5bc987dc861077c01a517e71b1aac5ca600", + "0xb18789f13884ff8e207e0af8d1b2ae90a96efb38ec083c85c92359b1a523ad3f", + "0xc0cbb9e3eb8fecaba920c63eca3c8b6344d4d608ea6a690f59bf95810c3ea424", + "0x7a44454fe998bf337faeccce4ea91b13e17448969fd8f54a88861a863fa084ac", + "0xf8f332bcfd6d19349eb4b1df22e4e64f6f15b6d6e228dce8487638101c7bc266", + "0x6a26b1aafad0d84dcb46e7171b96de89d8fb2c91895e17c95e30fc53135d7a9e", + "0x1ee1fbc382e0ef22f6b469b4ca5fb8fb5cb1b4f724da670aa0b34f41ca680f9a", + "0x868daa362eefc36bb68801085bc34714111c79564be0f414aeba483b20212b44", + "0x72fde6335e163a7391b262cdd557cbeb68d12b145aad078855ad19c7fadb6759", + "0x1805834e8541e70f1b997268569d0a61036c85eda7ccf203d8067c16544c38ec", + "0x0482f1d3560e173831d54d3bc0756400348b7d83b300719ec98d1ef44a307890", + "0x62d86e9a169790fdc4cc0d42c31b2acb29197f2412a900251811a81275ee13d6", + "0x6a94212639e4091348d31ce0e936a910df7edb8068af9a189bad04eeb1f70430", + "0x7cf4e065cc3836adc28cd4ff92f75b77b77c8dc3a048b571a1d0c6cdb896671f", + "0x2d4e012e497b8a7f944d1eed62763a62bc34e8ce5bdc6e0a94a92f4b2271445c", + "0xbb0a682b0b861f24f3dfa07633ac93db6c8030abdbf10383047518f0e33c5c87", + "0xef2a1dec41ec136bb22c97f45b7d27c47ea001b32a6c522cea740d2fbbf9f68c", + "0x19f6747a4dc55fc04c2dfbd312d24482195f2fc7051d631cb6b035f811b9cbfc", + "0x75a61bd26fbd84db128ea208403413aed4c1a191bc85add1fa5b202b3934119f", + "0xce363dd64f88c94fe0e0f1b0a986397a9451a00215b19f47ae2f89ea73e009d3", + "0xc61501ccc6e266bac8014200d7a9e67b90d7391e6ac17aee353d7001e6e6c295", + "0xbb60812a243a8e533801fa84680d1d853e9fee9314d23fa1f6588c2ac6e28d5d", + "0x7dd9a83d4c625adb59d176cd51b850794b418d943266f74494b4c3cceab16152", + "0x15e847cf4c34ae586a877f4ff2d158bcddf0e61df93dd1bd866f21af66c7b0c8", + "0x0bc297a726aae1d4e3cf2adb779ad9995cb32671ce18604e159b606ef964bc48", + "0x5131b60105166a5e91d7f506b9de61143c70c450203995c26546a715bdc711fe", + "0xaed66fdb230b7c2cf156dfd3564a7c5a354b79df9bab6958a8ab55a56a4e4ba1", + "0x2a7285d880cd19a7eddd8ac7530a0bccf3ac497f561cba558561008098b0b6be", + "0xb288b3238fb310fd8e4a8b68421987cbff4158b7ae2f9aa60fc260ca25789d07", + "0x083e307bd6a391319dfe090af1dbe3414f687651531dc8b4befe794aba1a28d9", + "0x1a5fecbf093a54ee0db2789692a0269635dddb611cf265d17bdc00f50669b5fa", + "0x0a3191b2f54ae67f137e63351ac5d62913eee539cdabbaf5a471d2698b9b999c", + "0xcced7db129d21f26e9ee287bb3ddbcf8e64dc4083d52eb2a4e2a70bc0f8ee60a", + "0xf995d09f0a92aea851fda99a1bc8cb60ee58fbad2611e9c7ccde6baff8957b8e", + "0x21dbe9310292c5ff01406b8b1c00ed29746025e42999621cc4587a90dcba3c4d", + "0x9368ffc4ce7a6ca72ce797ca628a6a624e0891bec0c1a290311d2712dc021156", + "0x45728c375d426802b60d327657dd95783bf96cd9f38cea8bde12213fb494231f", + "0xb64d24d242890e9bd0dcd7477dc56358a18a1b21e590b5c796b61061ae3b70e2", + "0x7d52347884ed55507d468cb77f9a16047f304ec3a17f6623c10fd9c9a91a39fa", + "0x5c35a5ddbb5a2ced51e659711fc03e6494a522bf7e3a37f5499830a74dc2b68c", + "0x01d4420ee02d32c15aee1692cddd25a2073980a0fda793daf62d78a47b29e97f", + "0x28b028f51a5d53895bae862a12c963f0f41a09343c5c6c8cdfc16a34020f0442", + "0x46cc4db90a7dd827245ced71c56e49d113cb0c72ae33ba8d54190cdb259d9e65", + "0xeb95c71e0aa281c2206696cad5f9f15655decc77199a344c7e0d274619819228", + "0xb18d594602c0b8e19b66d6d51d165846c11583e235c8ae62a02a7596b26ce581", + "0x993beea57115e7a9a276b041dbcf6142d5cd1e3cbbccc14654834e73bc15e2bf", + "0x9a181c8207e33dfd4e5ea326b8b443c68b4513a983e5f4a0518b067d7692859b", + "0x43932438435f88c8b09b35f4a8b66039ec998be5a87070244c37e15ffdfd5dff", + "0x15f5645542ddbfb4c04f347cdf0c980905b5eb67d6277327f49628b9ab358696", + "0x2522be1ca6cc71879cf4f2f3df2dfe90e196e5f4df7755b380c86f4944ca5e08", + "0x3af6e27765b3188e024cb05b563bd9f56e8e693ac6c74d26a74882fe0cc550d4", + "0x19a702215f0bdcbc46c4efcb92da64b6e3d9a86c2b400d12f963629deef9e4b4", + "0x1dcbca6b91a61330777be1182d68fcaf9ff0d9c43eeebe9ca9c4ab8abdc41bda", + "0x02eaf7a3396487c7502463311a6277e5f69380ba24caa81331298baa9c63b08f", + "0xbadff92a236658ec338889b33eed9715df1905d924ac54d611f3793b9b3ff176", + "0x79bddded76b993af9d5bf07e210f3fc6d4327a98dc54ba13c844ced73a835948", + "0x0bab4da8bf5c6b9bbde53b0c83f7d940b3acb5f5743ce75f62a2c15a1aecb729", + "0xd2b01a6d2a3c0d88bd41c17e60a95f47cd119927a7e42413e56ce5dc8787de12", + "0x4f1ba6859422fec2dfe05ba75d7871b2690d5b0176532ed3a399ebb814091a92", + "0xf0300c27f2f81f794c2869fb7a4ed3f409e642f420169e60386b2d1105d0f8b3", + "0x87b35d08f7dfbcf77aba650898e5143f9f93957250c2c1ff443f0ae875d2b54e", + "0xfc665f0179e97e16f678fda2a0c1b31da66e891844b970c10577d390fe0bd8c1", + "0xeff88423b02371916dade6eb5a86f01268815678eb91171c0797d1f0aa194e41", + "0x2904cce349847eed30a417e9d9797a105d6133b26d3f4d913494d7ac383e173c", + "0xe1ecfe848a3a5e6d6c919b10321e6e762715464c155ee5be6ad5c9a588f158ee", + "0x7659c856f0153fb50558c9df7900e70ae1d07cf48229234f254cc56a3ccea5af", + "0xe1c96d2c8753532435331980144223d6420bf07daa59e82ce45ba0c11e2ea051", + "0xb132f3be09c4dcdeee13ed8a2009bc0c578612de34014a743eefdac08f69cb7d", + "0x28173067327fb946538eefd129ac9f822d392b5ec76c8fe1f10f2ce2af83068e", + "0xad27f2e92484df9d619f407ec2b4e38c18513a7af01e6de1bf20731bb52c9eaa", + "0x664477d7163c2797ab51ff749de0b6ea22bc9cab783604f3bc1f81772eb554f6", + "0xaf31d519224c5891358b4ffac9f87f8cd35827f645a96ad9b0a9befcbb8ab870", + "0xf68913515db527a7397d322d9aa517aeb83878da9788a9a643ac713cb22abcd1", + "0xc27cc43a1eadbcc82f1fe7025006590322dd9fc287e054c0902b9e49d0ec7433", + "0xaba628c7fc30d83b1ad1db8fb1f5751ecc44b420a3c3287e3e3f6257bd896b3e", + "0x04a3af92b1e3e7aeaaa9571ae392312696925875d5b2fc738000a09c5e59ff1e", + "0x5df46ba1de0dad0b92ac06736516073185d816c4391f46b6ef6ce2029a21b6a1", + "0x6ace0379f6c60e7926ff23e304db11f2a0f157f4c98dddbbdc23bf88268332ac", + "0xe40ffa54ae497095575c9783f0ed03c28a0c12dfe68c16bb9d8671e5d30e4e29", + "0x2c72b6f49ac763f6d96824c58d7d5da8a02c9f281acceb4dacd423fc7bd0a8cf", + "0xdbb5c5f0407f7964743370c5e9ac58ef217ab1e5a1366fb92b428859440fadb2", + "0xbedc55f65b76a6ad3dc13d5d7c9509b2c0099b69a940556ed6a5727aa2cc095d", + "0x4b31681a06db2856098aa0710a2747e725d1067caef42d6dd9a11c0cedf8304f", + "0x42bc9650a26d47e3e3a8ef96a7323a619cf67c6f6b50f52225ebdb8bb998745e", + "0x46b230c2f457cfb878ef0a37e94e7899e87de00eac9bbd622491c7a66b543cc0", + "0xa1b61da03511a16a78b088d31ff8f1f029b812e22015f329950d52b72a145e4e", + "0x8f66b59429ac66c05ff2421d78faf64d9dff6784666aeb24764ad20dfd9bb6b3", + "0x6023e25c4636da9efb0808604b628de4a3396171504dd92f6a0b15af4dda71d8", + "0x5f588624cf59a57345df1bc7b4102c71b40192c5ada3d752be4da8f11cac7f3b", + "0x0e926bfd2d2646dff25ee0ea7276b22e54f8e999631997ea1c47ab00dce1a0f8", + "0x4ca751e3eda2e457311a642e0cd758a30178525ccb2dd0541a9a9d9493309b11", + "0x85e9e617c10999ba7363e839d5552c55c0d0f9addc63f6dbedc4ac66989a2634", + "0x81643302113f1656b0399a79918100f8a8782d84b97e77ab8cfe50fd0c6bafe0", + "0xd8c529ad44a0807f1e158626cf3efaa55fde606a6df79df80ccd2625812c536c", + "0x7e97688b4c5a2f7138cf9436aa1f71d7724197565f9dbcd2415c1fdf97a9b70e", + "0xdc9b6af3ca940343bb79cac69d70318cd9162d17cf32ff77e4f7a372a5f8373a", + "0x3bbee82242426e5ea6d0b7d33fa1e8ff6132a0621612e7eaaa12ecd91e0ec009", + "0x45b81447d9ae01a109be4a2c7e3f9ee425b76de2a7d8435a916c3962e37e5c50", + "0x05056498b2e8fed9dc5001f9ab24cbcaab9de8f29a9311c307075577acaf0b25", + "0x59a845afc513cd2e38ef638fc36c0e1bffd7636866457ed30d915bb1f345d3ae", + "0x0551039e2580b62a1e09b371c42289e37e2b0ce110cc2494132d555cf567b969", + "0xc8a7f5125d61870f632d10dddfba40badbde558c2790371a65012cab3fb4c148", + "0x2be25f9dd47ec1e1ba42bc3dcf2aac69750b124b36948396babf4d3ca7e5dd35", + "0x090bacdd16b7f0ea693e2a2c41e9f111dee8a5de5309b09e3d4bc426345f8995", + "0xf37f5f98be997d2ecabd3019fa57037a18edaf106e12f0d4f31de77d60403972", + "0x688da240928620a03ebb920424d407fc1643f238051ca86b24645562e8ccbd95", + "0x154c62c1c40f1eb98305ccb23c1f2555819fcd8b4caaa04b7eec2536f43cea66", + "0xdef4ed8c27caacf9c35479d0ed8fc415cdc5452a7a445af16fcd691b28f3ab2f", + "0xe54e5db4d2644f653100b10409866c8dc61844217d3326e7fe3dcc094ee74b84", + "0xc58d84f9ab8514967c2a31146d200de33588a0ea4d77e5574ba563ac6789f987", + "0xf7cc63e55ef6f65ff633a46cfa9f164e68901a1fbe9682ef65dc47eb16e343e5", + "0x98c741caa63a1f33d8aab4612959f748286a1285b46d3a5551d9bf28ef830182", + "0xbe29b2f2be5e3c9b716c890c204a9da445af5e6b4e50c6402a93b32f42ebac89", + "0xbeb0e76ce9106e020487f0c981a557164d46356736227d81cb2eabeff660334a", + "0xf67ce427d55fc9311933cb663e6eb469bd130d69e312fe1367caf2c7fb1277c4", + "0xafdd0ffb7e7b5e90a7502148d9d3134f7677a6e410122b908469daa70224d553", + "0x8f74c65c0d22705a3979a72b8b3021a0d0a82687ce22615e51108a33b4168a7c", + "0xba35a0f2627ef78f55548b5d3ba2b5e61e08e30a077b7ada59bfa8e30c636da4", + "0xa045b51f64e3fad57989f75fc10274dfbb26e03d0dec1aa9b8a020a77a452b26", + "0x0f6d2689f323317fe066af81057ebb50b59cb1b614212f950527dfe555e1e9aa", + "0x17281c57fd0b47611e9fbf51e2bd1c9522408cf2e738b335310c499628eeded0", + "0xb29c157f1076789921646300ef81051b0645893705cd3b522e261f6abb8b5ab7", + "0x3d491eac830429b90e939a34633423fe28c0ecf512db003acc5672329b5140f3", + "0x99aa35ab08d27ad4ddeb0af6b041f1ea24f9cc791b02d69872bef66a9451d7a7", + "0x2566d0b64d3be342603d570b118ff75fb7f26a3b9acbda07da417e9d04b90832", + "0xa18155f9663223b728c0da042ba14633463a03c88d8b53cd3f119bff9e1c72bc", + "0x0046250dbb527137c049b92e9bf61fbeabc8b9654d8cc920b8f5c2dd67d94c0d", + "0x31bcb0b19536109ef1010cb37a4b6eafe2e45cb1e4acbdc590a94f75d735efae", + "0xb03c3b34fe5738ff7595fa87d228e57f1f3e689913ac7d6e46f4bebb6496c3f5", + "0x34ccd9475562aea89fa44e7f41f1f05f821603a799afd7d34793f7d41dee39c0", + "0x3f6c646a7c1c2f121d4d780b8b0705b9031da6930c643bc3bf491b9f28a1886e", + "0xf78ba2ea52a06e703bcc56148e29c6095dc2c3fbcf245fb1b668b752d5981a8d", + "0x9c3375280b4fd748a8025639a52a63f0523fb8fa4d3942e0b358a93c286f061e", + "0xca6d5be54183e0b043fb521c6f68f686eb65b491af837b5538b8cfe448f8c3ab", + "0x320d1301fc107767ee4da3eb0ce9559691fdf9361ba97f9d4afb1088acfd9fbf", + "0x2665e7d3351b00a718812ecd4ee2b3dbcbf8b8311d83a23e7e96045c760deab9", + "0xd62ca6ba780efa5adb18bb627e479b296a5a3f30d3e21719388f1169e70ba59a", + "0x280ea84739ed8d58a98a894a320134d7792f5082cdd309f54561fd7ea4cdca74", + "0x6931c3241edef29f03d931debf8cfa5064587c1b21634b1caddf0b3ec985bfc0", + "0x55590c1237ad52f4f1d27b8034d61cc5125fb51949be6d976e09529130cc9015", + "0x53555531ab8a761e2895908e8fe8c7d7859d7f7413e7779d25e0c7a806f171b5", + "0x14505e0d5951ccd97bcfd999099f203ed2c47d917b24934ab1a98713c38af21a", + "0x7baae66ad3c2935e0145c8ddaaab9a3ec96608d4fa68130a417a419a7c81af76", + "0xc2a6a51a242ae696131dd5f1e5d224ec7915a81ff50849fcb82d2e9b219e0769", + "0xc0f362fa6bd1c9f3f11b48e786f624c8da05c41a1c6943822f806bc66c966273", + "0x577c7d22b1c2ee961eac2d5ecc2ede8d08caf245a6dbfc3bcc444fe66ef3a668", + "0x09ae4c551fc876ca178f6e8dd2a0dbdd209ee93f8f1010177182d4f3145364c0", + "0xaab268258e1251c31edd3b9b8025b0c1f5b1f7e1e62e92593da795d86d9ef5c4", + "0x87f0f5908a682671b151edbfcb5898f004b289537148113c42d0923bc15c5bee", + "0x06bf3127f27eb60c9cc4a74629a66c44dbbbb9b68d65923cadd0ba28f1015cf8", + "0x23e0db958147b5c8db869369ecd816d7ce815720237ddb6da8a05e622e1dbe20", + "0xd4ce983759e2f9710e80b0ae458eb96cca9867858288cd2d7eab982f7dd26a66", + "0xf6bf598b019ff749002bb402e16497b0b3c9ee63125a13be881912f7009ede6c", + "0x7251bf281e9c72c043f57d39418ad568a5bd7e4710eb3e17cb42382114d68203", + "0xd8145c5f2de332ff21be501448d091385ffcbc56c41dc70a42707069159befa9", + "0x2559c0a30e9163f757e37ade5b2b5eeba9a85798fb0613ba4f915e50f2e57a2a", + "0xe3253db4c4d9f03f7c01d7c605e1d5ae6731484f0c7c28890fe6f16483a2d43b", + "0xd1b14798b014e64205914ab3c005146ebabf3f638abb7916371bb1eb3b5cb9c0", + "0x9e926beb792042c73c5f56b8b80b96b7e61f5c330395059f91184e9cedf176c5", + "0x4faacb7e85312a3fc3be57a617971adb47c90e01a62494beaf7f98aaec6a4ea4", + "0xedfcecf1217cd00b3c310e10e733f7ea5bb65773f5c1facfa73e4c62098fb07b", + "0x1001b41b4895a70d561f21e4db156bd3f1d3e295f5bfc1d5bd141f3c1a67383a", + "0x77566c4f063d17f44af69bec97291c7882a5dfa6b2082b3781af1ae58cd31591", + "0x0f3947cd52db657baf53a7739ce90d6d20a1afc29afca59171bdeb95b179f535", + "0x82e7731a0ffd6859e2780dc0e0b416b9644900ff324eb7ec3fe14844548dda7e", + "0x73029b7da326cf66bb0465860faef079fb04d1debef9c196bf4399df9ad07c32", + "0xfb838099a79e229c7377dff94c4c4776974059980e35d7786ab21433cc066be9", + "0x395797b06377d50f6dda53d3e731229d2e66bddde5ff58c3d4dbd30588d29561", + "0xbd6366c58c6537c6596809527ece0812f6835a7d636b45dcae3cc9c7721c45ca", + "0xc3d33249a30bd802b8d47fbbc04ae4a312a46ade5c4ffcfb11917dab72d053a0", + "0x13094e2e787e70f2d53700967a971ccd0eddafe6cd0b2ab64dd45e5046196f5e", + "0x80de11fb3db309cbf33068fcb4768291bad907b2e6c5c701a16e751535224a85", + "0xcd697e246e53d9383b5a2bdcd1099105d5c03b1bf0094db4d9b2f4adb014e780", + "0x30e146fa5cffd44b897be7150ddf15c1545691d7767c25628cf9de4754fdfc42", + "0xde108b7e443d5a3b671105ed6ebcf9d719d4c816e59afa3171cee1bc8e6b2d8c", + "0x816e555cc8140053e16ad4deb018de16c1fb7a0ce764c54d0aab2ae217815570", + "0x92ddeaf0792e08bbe3664818fad462f121976a67a073ecba8166cf2efba5ca31", + "0xf402ff440a86d90329158b2a849927a335c72c4aa851b2dad01aa302b0cc32cf", + "0xeb0ada610916739c798c6b82458f7f4aa8583b40e1d0d03b0b1143a3a5008608", + "0x05aee956f26b6b5793c626abd0d8c36843de3470c97ee96259a6bfc5bd4923f1", + "0x81572b951ca3b8af2dcf6dac16c6cc215a2dcc2fc201ba5057035ad1c2101fea", + "0x75db52fff9f78fc51f44a4550016a1774b7d396a195d1f9fdefa04fd7fcd29d0", + "0xccecbbe8891c6a6b5601146b25634ae17914d4fe687d456472c2207ba2809a86", + "0x38d07283f2f7df234942f87e52dedacf4a11d3013d83e6f2dff75ba1628d9886", + "0x4dba63d0eece8c063904d9e2f2861e7d9eb144c2d9764928498fca8de371ae10", + "0xb40a83b846d964fb6060634faf1cf8621ca94e53d780b6e905d46114f9b9a27d", + "0xe2ce7be74294f7359a49bfae41a01072f7c3954d6f95ae842a386175ef317785", + "0x37ef59f57e88b4a3009ceffd2565d3508b5c1a036240db70e93f1ee54553bee6", + "0xff374581040383683eba25152d67271fee82ee255c3632d390552b8f5e578f78", + "0x1efa86187dce4c29eceacfe4c6ff1d4950c862984dae8a20f9fa8acdd437264e", + "0xd73d592632129f6bb002f9ab122c0564689357eecb1f6d888440c495f0771ec4", + "0xd3ca394b8fdcf3660bd097d38e0fd5bf33c13c04b2659abb70e4d13694cdd9e9", + "0x0428176e61a3732d57beb0f493845de7fe0e31baff8a5e1563d232bbccf93de3", + "0xe8fe77555e55b3260afc9034f885e03c2debf36c48ff69b209223b1829cffd52", + "0xdc7cd23f15d5e07d3aefb0012ac38fc8b823a6263107a3cf8b89c3368715d7ab", + "0xc523f34972db97d218fda1709162beaaa9ba660c4df97a109d50f38340a48f05", + "0x10be73f074922b6e3df4909d3b9e7ed323c2a19264dc93d37bd7513fb1d6b4e7", + "0x4c9b2adb87844975e677546e3a1cebb9aaf42a561f884386915e68687557ecab", + "0xf916f18da6474460fe4ab8a0293f26a28fd3d90679e0bbae2b063b771a8c998a", + "0x04172ccdfef91ef69bbf1f0dd36bad79fceda5c04b8ebc566ff08da83d59aa46", + "0x895732611c267295e71c15d6e87e3519203957cd29bb60aac32cb19d7a9af211", + "0x370ab55158b9ea9badca83eb5b09335aecfce8bdf18fbade818a119a4aab63b5", + "0x9320a338272e9d0aa5a5227b05265eb77a8dac2cb8c4b021395cb0edf2f80077", + "0x173b2ac92367b0cf4585ee21916825f7bca2066cea520c464b908ed47542cad7", + "0xc75a82f1f03938fabb0dfad843460cf7dbc71550bb262d06b4e4bd303912aa36", + "0x422d7e015bfab1626eccd58dcb0fb98be644711367c0cacc707d36ac40fc0b2f", + "0x3360f78c16305e9aaca57148a335b5bdf9c6527a9703c03cb5a8ef9eb38f2b6c", + "0xc682332f99928a8f6de539428c706c2c48ce79fde10883414843f913c594ef50", + "0xe8f0bcfe5e2e2fdda4c84d9e02689f7d6b1e916f3734580318cd3e67a7dcd633", + "0xbf80b39efff256301bd1aeb7292d3879bc0956c73ce00703564b7c7248a06b42", + "0xc8dc8e74c62fca5c317ffe9a4217fba5b3d73b73201f1af84c1e50df9dcac044", + "0x74e0220562dcd2a42516fd4499ebddf06d25bd515e1f652437d88eee48bfc27f", + "0xfdcf535542126d739401eff7b293640853ce9ad75fe2ca6f7c46422dd436c3a3", + "0xc373ab92780c26c4a1324d3e539cc64a6c1ad586dd803676574590ab44f1bc27", + "0xfcb26864728e20b81252b3881ab840b92b427f7115b1f5e2f3a61380f88a4116", + "0xbb685ce31d2029e47d5ea693da8a01c2bfeb8169b5d0eda7cdf84c6468595e74", + "0xcd18a3b622502d167c8ccaf5635a03574738f2c13a278dd7a688cf7ab0a2c5b0", + "0xa8248f6713673e2fa7381e9e1206ae3ac9019fee55cf076106573f53424e8dba", + "0x0fe434aaa52d8f09b727398a8968c36aaf2be82cbb23778d58d4e991d3b7fa9e", + "0x185bd0f6ce85efc5a2579cfaada211d8071403f57ed9f7d60f6edeb915a1c432", + "0xf5f2057df40a078ff754494f4c6baf4063e3eda68b07dd5712f398865cda4d99", + "0xa2bb9488dce8bf3e580c3147dfe435c1638db0ec04a9880301f13a3e9d6cdeed", + "0xaecc304df9c226d4c3dc6eb2e57efe67a3f30807ec1724f9c6de81449d6354b5", + "0xd5f6438693c32880596df1c9516eeaa0c4ec13c0a1deb55b54b7f75b05bc0f97", + "0x11a7312511cecd8f0a87dd9ae9e51f404eae666a25c07e8435302c0388614baa", + "0x2e33bcd6479d2ec471017dfeedd7dc5acfea9bc39c7b92116956015ee7942bed", + "0xaf288bb222823c6d874f35356c4d00fd23cbb3a60472929e4dc6d36a04b7539a", + "0x0e23f7aa6514cfa58a64843a5fd47718f963477b51f056a861a9b12d9fef5f62", + "0xc11827d60b3729a09d7a0ecf664144a936a2a7306f221e26e4ce7e7010d56115", + "0x0366e38d49c40a485ce8410df1f6be0f96c6cb64b8c4eae0a7f045c8a8f1d1ce", + "0x5a10b623c1a9e2ebfa0da73df2cc85b1a11c5de81d36ce9a173ca458cdd01523", + "0x523323217f955b390b82b719660026bc7206bf13792f33f4a5ae70e7d5c6a96d", + "0x0729c9bf38e3cb392201d4dc47efddc969c8a40c495c36686624231380e77878", + "0xb1a6bcd34bc44b9c15d6a801c840f656385c0668572d313096ba2fa63a961efd", + "0x5d3fe5975286dfe199556949782234b6268083b3f81a990f81c20ada16e7e625", + "0xca029b29e95664f8b678dae0fc16309a4026a785e42a05bfac1eb798c505fc80", + "0xb69a389e7343d2b4f2dc5cd6531806c9da908df96ee6a4f98daaf26a7e2d4ecf", + "0x10ae2c8d22fad8711df2c9a1af01bb51a8dd53977500ac74d490e2482bf16271", + "0x46e2a6cd2a7bd80d364be9d72970c607741a0dfdd9b7caa3a3ae36449e5e6c3b", + "0x43ffb2f3740adf7e49c9aba44831f9f72754b1c82e1836f71c29cba55144177d", + "0x4f9f90cb4ee561c62358285bccb0ce753da1ef841da876a15c60cd6f09e1d6ac", + "0x951eac5d02ec830c99c869d501b8a2c711a9d3c57410ade7cd1e3c5287133334", + "0x328ee3ffa889d19bb0a52210628d3ee79b3fd6000b5f564891eb446c8a450282", + "0xa4bf55830e5af5dbcad9846370c44cde2bc5ce7c214e10030cc3eea34b79d6ab", + "0x56556986c284b379da74a1176c53df781039b6e598223d0b2e745d7f6415e330", + "0xaee9e7445a2490fecad2d94a9d83d47c8544c94085bf5ac5234a14de9fbb7f69", + "0x132d2a018737f9056fd9cd695eaabe7ce9e04fc21cd35ba1f892c6810546d286", + "0xeaa54789bf7ab23b3a3bf5472a964606adc49881425e34ba7d9a536f82ab133e", + "0x23e30e437f469d9f175e350dde559ef6ed578a0adf16dff7ba41050a6d99080e", + "0x6da9606fe9e8c103e29ef33edfdaf5b325c48a6466e7f6ab1c89c522dd7f934a", + "0x70365c62d260b7edb08fb3fd2a9fe865cd67b286aebcf9d70204f8ef64e6c4fc", + "0x9eaae564df93682a5e6fd8f0d626500f452f8dedae1232e810965f0bfadc2311", + "0x9b74b87a77b1a52eeb206b846d7644166dd1f69e5b3995bb3e5c481c63630cd5", + "0x04b02985a9ae4fcbf9db44a04c71b86620864536475c7a4fe6da406845dc3393", + "0x764525d62cdd4eb36fccee7fb2917a7c3b0e76fefaecaa8f968d6ae2e6a5b1ae", + "0x009c739117f511c9e7a00aec33e64d19a516ccb2aa3d0177e865f36099829272", + "0x8b040f52a383cd87d46ae07844e4b53018dffd0d0332e7b78a4b3521ee063132", + "0x726e1f9c132d65d0750290bd1a785d2bd81534c1c0e83def056a743ac80ef4ff", + "0x0c309b58787f41c317b3176ab230cf3f077134ba50935936a09e5e82235b8453", + "0x4641d9be01a25d494511cc37e90de9fcde07602ccea4b661971b5e5a00d03fca", + "0x1bd977d1bd0eb32e49b38ba600e0f0fec7f102c6c3914f7e1c944ee10bf4ef11", + "0x269e8b5be03bae74bbba23289b1e3e7c9a1423dbd03a2b121a22b9eea7520eb2", + "0xae7d7852bddcd107b74dd8885191756cb082f97b613b7ed5cb855ee7712f706f", + "0xf678e32a8e94206518dc953a8c9d684dd5d08b6a5628a6f7dc429c80ff1fe9c3", + "0xf899f563dd1a48f10ab7c55a6f7efb2aea08d3be82411cb73403aada18109d2a", + "0xd665f961ce7568716482bf85647d9dee82c8b719b21c1b555752cd9184fd4ccc", + "0xf71a0ab542f61d880734d2c186da35a2575c05403d3a36a4aa7746714b98eb23", + "0x84ed91096287ce802dc09b1f3606ad48c1a281332707476148b6bca30380638b", + "0x5f227b98ba91a67d4207d5fbc064403864fbc04d790ecb940da2fa851de35e8a", + "0xa98b1b6c440fd131d60f7451e20346da06618a2dc45db9550f3aba0833853d6e", + "0x5814b4dd8d00d71326bc8814d3feb6de2e3b3c7b45ef1d2ad52ea98ce9ee754e", + "0x3e28116f85c8d06d7a40ca747aebdbae3fd0fb857c21045b8934c155ad650f75", + "0xe7b32da2212379928559cffde6762845f4743f338ab5120454736c9afacbb957", + "0xacaf36117398c0f40aeb6114e6c01dfac7c524613cb701e534eff119e3146086", + "0x3e41b0cea0110bc0acaeed46a0a20f4bddb803640a652a87f78a1261e5660f12", + "0x081f66954c6ec53936855e51395680684755129be65adeee1617ad94787f7f5c", + "0x1e53cfd05241d851f964632a997390588d3305a664e516fae222fb8f9ad9138f", + "0x56fada3ac16c6997c3315f5b9430a62f2a856806a0eb48866f9d718b3bc3793a", + "0xa9dada52926a2d7bb6f4ed91f26ad69bb006332fbe6aee11434027200dab60b5", + "0x819a2ab193730227617c65c0e52159798cd8f2494341268064de24d2ec79b8ec", + "0x409686b4c67adc9bbf88f9f312634c1985e8eedbc746511c70ac907535de05b2", + "0xa32af0000d95f6b8f11f11c58f42284e89e058c450337ab42148b6f1866dee00", + "0x7f75da8d5b0d3325483a408df85d12f60692d8712481ce510ac38d04f7563b8d", + "0x33c32bca7de6d98c1bcad486ea2fe57803739903e3ce77ef028165440fec766b", + "0xe1db4790f2696ce283312ba16b6a27fe4910c617e79f6a36ae5088570c170a1d", + "0x954845731a92b9f21d546d12a17e2b5e9ef8d082cee9d407434cfe96ef1bb682", + "0xb9fd370d18c4c546fbadd57d2e9e4abb743875be98157a080c8b0f7f40fb42d0", + "0x863c00fe56d7ce27bdf675d5e95da139a7a16c9c26e5b9e98b399f0a2445ace4", + "0x1e91dbb2b7088b8c725c60c76169b292f2dcda65c6ac50cf50e12c0edfe5737e", + "0x071d303629c0beed31978fb2447ea32caaf7656f4a9b8080fdc6d1952a4b7617", + "0x123634611e4dcb0997bcc81f0c6afdccb4b1dd81cec57ee6db7211819993b49b", + "0xebbea8cd68d15c06bb89ad6f7e19db535e17bf59e78b6a84a53b3ad97d2573a0", + "0x412b7fe1f9a30e81a3fccda253aaf3922d611e1e933dfb4911003b6389dcbf65", + "0x31b60ff521a92e30fd7810b70b6f61e24da4369f009dedd2d9439c56f1f2d5ce", + "0x0ef0f84cd6eaa4ed9313265fc61d8dd7daf5c96f7f31127cc9a8eac44837cc22", + "0x2445135fd61f87235bd1aab72893687096967a2b9c580548be2a74dfd809fb86", + "0xfaca5eb580b02b7b54a3115c21155539e437cd21ad4e201b0b4dffa3195b6f43", + "0x0968fb86df334327b14672b2cdfe85e7b51606905fdc3a05a0db2b954fe7ea43", + "0xbc53988f11fa0bbb1c43ef2ff7bb23e4bc537d7f4296fadc5f7d9c910fe5ac00", + "0x2037f5636ac5a997fe5a8f71f3dc6f9965ddba3597b455c7417d1054ad4c3580", + "0xc837e3fa51e643a8783ff425fd4a4d58ec74a6d782daa40d210398ac1877f405", + "0x08ab20e172c449b79ce305849184ee364f66c4f60d9ab876943d6bf75e30c246", + "0x110578694915653de01f07a74b99b3ac9e5326102923b7de5bed1e6d4c6bd7d8", + "0x736f4223a2372f1f5be589a2b050ea33e8cc94badfce83daf73ba0fbf8fb581f", + "0x32972e9c9fb98b96620b9419a946cf33f5b68ed205778f9f4c8a2a179579ca02", + "0xcc14e8337475108ae1226633115fe28700e9c238667820e4c8f6e8a28ff74dd8", + "0x4f1a0f9897f43ec0a954c44601e2bb41da1116d9032cdbba4936da6d40b47ff8", + "0x8e1530bf92e34b1bc0a1dbf20f9b49161f815002b41203b3c8ec00ce4a903d58", + "0x0901143101854314deaf490dafc2b5e3272bdd6e5a0a431c439727a9efe51848", + "0x18ca27c56369d7a3f11a88eaefff5c9a9acd83136b67f0c84877fb7c53fb26c0", + "0x65ebad6b523c8b10cbf53a0e8702f3cda3856dfe2c09f45f740ab9f47b67e3f8", + "0x3b8a1210c97e2565816f80011eabf9520d36ac55ae7b40d5b1a90d56aa0e8d45", + "0xfb15f56b1fdd48b65ba61fd08841df7516979c822d0ef18119664d1e5bb73d63", + "0xf9f7938169addd969c185aa425d10416897852c95e08b0bd5f366e9ad92d6242", + "0x602cc3e58c87d5e98e07aba885c5b87692b4c7448a76f009bdc4abd6141fa790", + "0xe945c49868606b017204f0272a37b3a3e5e16bf4ca4ef24c7b5f97e0867b6775", + "0x3fbefde286dbd17d6f87d3732624b45021bc8ee91a58a6f9fa937c66045e7a6b", + "0x19132f74f6ed69c9c57c5a9061d3b10aae933e752954c3ee0b35f2827c0f4210", + "0x4acc5f1f84e81475689883b0fbbcf745735ef59b5c868d7b3fa25052292a5976", + "0xcab5213ac5a5e40ea3f405d1f01314708baa64e425944b5c0ff0255810b605fb", + "0xb30892d119a465ddf14ebe5666427985152fd7d7c20777a606d50a50a52109ef", + "0x26782e7e5f51b8e78932d438a13840446b8a40bf7f616e485cd1769cc23bc0a8", + "0x582f3b5e5113be3c78da83d650a64f36e9c84a769538ae89b299f561a474c27e", + "0x08a4bc80e056407eb93b6cde527deef627011f3146281ac02c32ce6de2667cfd", + "0x4028336b128bbdbf30a9f5a4f46e551121cd9a7ad1d433ad0b4b36d951a8aac3", + "0x5acebaa71a6f14765e456460ebd1b76706c97c994acf93dedb711217713010a4", + "0x7e7bba439ab8656ca63853bb3714ff63eefa38153c179edde9e1b532d9a032f6", + "0x74d564d753fafd74f72304913cd8984357ee5cd0d2bb27e364248adc77812a3b", + "0xfaae86e17962909b4097a5ff4ea7079a492fa651d953175a36c03a7d2e4e0cfa", + "0x6a444dbed0f88402344f5aead6a2e5b9246687376fff6e6bc15d5565c484b305", + "0xf479016030a59da1b0699bee79a088aac374367cf4035efb87bcf298624bb69d", + "0x4c15b9a757be6a9cc782905297b1ea7373dfb491910a74293e3d224428eedef6", + "0xcb897fb4dfe7677de77f0404e64d9724b6fff2d8e66700d8efcd7cedb9d011b8", + "0x600e102cad5f182fb2c789712db63f55f5fa3ebc7cac677cdd67f976c220c667", + "0x41a18deca8297801782074ec9b27a9ec570199c4a648ed90cb011333383bc05d", + "0xac91842d3f4f50a6c5e7a58901867792ff906022cb13fdfaa246b45e6b09458a", + "0x9699510c10bbc758337177591c2d0163ef404ec8ce8e314cfd73c8db19d819d4", + "0xb448a625cba4e20e1a9e2c88f65a059aadd80c597022b76bc5585180ac0da018", + "0xf3ba217e5fd9deb0d8c4edd307bd18dfef819141865a7d619eae7d0c92961546", + "0xe33e574660c9568b0180b205cde5a8b3c2a7f80565befb4fc9944b3372d26bed", + "0x39c73cc2f2c738cf1c4861c0f128df7b63107228a0d4335e83a7cedc1f503fb8", + "0xd4f609261521c4c44240216bd2aa3bab16fc5412b39944d56b6c4c6255e134bf", + "0xe1518677bd130add527731b6872d5aa59fa0373a856062ba0ba01068ce88c6a9", + "0xfd9657266575e1cf582ca115573b0cb9ec0a6d3b4d018b782a2c8de489f623b9", + "0x09dafd93880a3ed6795860d7799d47f684d726a89e7f47e68641b0c9731cfcea", + "0x8e1539df31abb29cc9efd09742f21e34619fa550c32c81c91af0399570a667c4", + "0xc2acbea05338e323a5ca282621be56161691bffa0852bd5d492c9771fbbde515", + "0xc3924aa297f0456f23afcfb287bd231c45201519cea87802b71523e0d882ceeb", + "0x0f77870d7a8238934de8fbcc89822438e09999db4cc86ac7887032f9bfdfb3fd", + "0x19746fa87ad24d6f39e36793022b548d03b4b97d34e09eabc27f42384975943e", + "0xf502c896a9950e450f76dc77daf301dfb1134119f2fb027087be9a5ded232c68", + "0x88a9157932afb4973408d953dbd4c115d8f345f241d92a113b640174596d1fe7", + "0x1f4d9466faa30dc34cba41379d3891b406e8f1cabf2919a14e3dcba0b8d7296e", + "0x3a7656143811296bc4ebd4da6d8e668cf85baec2c36241fa1e8a5e3e038f6e74", + "0xb72d30ba8fe9041fcf26e74238a41477f22287242868192dd1557a1e76b5b1b9", + "0x6f669597d1d71f6f5b5f9067ea087e28cc9644b641e762648878c7f84adaf3e4", + "0x43403f7e07221a22880e141432b042ddb088e77de3e3ef204d15ea454a9a316d", + "0x9e4617d1c57bc882cee51b2ee8240b216d5b8f8526750bb9c70ac050d31cca1c", + "0xb99e1c2d68d7716d1d0bdf0b87acd3aa8c3fdef01ee10085c339d9418c87e672", + "0x3b1ea702b3bd6638788874b111a2a4c5db0c557f2149b441515aa4efa20a0309", + "0xe7c92f95d0d2a49e019933f627d88f5598a24ae48ed85deed8be699c81cca4b3", + "0x5a0eea5cf28cb4341e5e247652748ca80a852a8c30a355f76971cedc8aa0719d", + "0xb14838455b175680b2ed7e6031c524971e819f27baa888db20ec4ef74455b6a0", + "0x129ecc196d6caad0aa010419e79092856d2bbef910637497b254ecfce12978cc", + "0x63cc5dc9bc8ac6fa744a078cb05e233ce89ab288b5f75843b904c69dda603f5f", + "0x8d466f68f1ea3bb04ad379e8e8b4c49b21ada69e08ae1b1152fe4aa1472405c2", + "0xec34528089706748279d5adc1c57b557d366bbb2769c845beea807600b0a0b95", + "0xcda3fc77337abf8aa097ae96372fa943c083239ca462cba8eeb308c691a24357", + "0x16ff959a37f0850424da85a50adb5befda492e51264b3c67b1ddd9b93a6e8e92", + "0x138c4b9b5b584c117c179dcadf448add3155fdae2984c20f6ac31b65a4e320c6", + "0x7841f8dbd078bb621c3cf52abec3d3a864500ccae14287a1d8e135b0f502af7c", + "0xa1098ed3e4c8469b3dfd8cb590cbc17963b04d38affe2b1d3426da6bff14a6fb", + "0x69a0e0f75ab37c38572693e27f315ad9a96efca6f6b70132a3887b9447078ec1", + "0x4228616bca7dceee33c9c8c1bda5223abe6ede68690ed15ca4d5aa2f8c568c61", + "0x8f2b912d571a48332a83c7b587c2ec905c776d0f3fc81473148f1e2d333dca89", + "0xb6c57d52aac8bbc17ba9e3331bab16259dc74aff6ff3383a2fb07f28c4ec915c", + "0x410a36900c0186aa34dcf5abdb1927d9af9ea6a8d3c8eecd1dcc2106b5a2611f", + "0xa7cd3bb40617c3e0e46768164ea9e1b50a3abb2c43e601353fe0cffad2191c38", + "0x3679837b7cda24d135f565d8c4c90fb9889775c8b22ad3cedbe65b9ae409a8a8", + "0x243526fcd0716e35d26b24fa8857387225e0a1cef1c8761277751e4f6e55ed67", + "0x557bc92e787ccf77f5ac6d8aa85afac3821308cb70dbb2bc0f22a24cd62e79a5", + "0x4097357dfab4c3a3265e339defd202d799a68a2ebd236ae211555ffedfae67fc", + "0xab78e659459a59d7723ff8017307d734351747835f81d0e4a5b5dbbb95add7e4", + "0x1b0a95a9b31d27f877f87d3f202a4bd142a4f632faa614ab537c9b5a4f1587ce", + "0x6533b72e1019c4fdb9144ece3093e91acc1e8bc141b5da9141417583be0f33e4", + "0xce27c1a106345130fd67902a182cb867b2f48551c4070666299c30f779573ad7", + "0x000e79cd097e821d66aead3ef94cc8898264faa774b013e47f521b2dd1bcc264", + "0x210b7bf0618fd4b1fa5f920046006a9f9be602d18cb19fd7798404983e242d81", + "0x896eb7dfedf2b14a7c59f86f9f0050e24f10356f1f44dc933b4773387060eb64", + "0x5585709bf8ac4b63ce4611b62379942eef5c5a243b1d5f0aa295a4bc41d98c8a", + "0x60bb1c8affb555a104ba0e941b7788a4f5e37411b7ee47810e8bb23fcac52436", + "0xa1387e2a41b4ecf7f60625006657ef730fb7828fe7b80def99b708db1f763094", + "0x58cd32fa531b17e4355347212305b16031c44608ff161451d733f77ef27cd457", + "0xd69a43e8ce8cdaae72adc3d5707ade963d83a33d93e220b8aba7e1b8a777cc58", + "0xc8077d1d257d52afb7e8fc5fac5793050adaa7fbbb524d86ac6daca5e348b575", + "0x109dbb9b121d982d55f4cf5f98a73f1d6f8d48539fb3575757b66e914b891d44", + "0xa0d531c0a7777f880582f130e275469c0fffb157cb10b6042360c40dddfe1ef0", + "0xc3da259e5210977890f66981fea488f2bd7fbb946ac29ca3c1abd07f6dc4c52a", + "0x86b8179ac2f43d96a2d74503f9924f28f9caa2c3e7cdc60a81a58d4304ae2768", + "0x3b2b32b4b2543a7d1a644e0ebd8ecb098375e21202bae51d47d255d2d1ab1a47", + "0x7501f81441a362710acb6054c46f05443d0e2f1c49b656f123821dc72a746a38", + "0xc3b8e61ec93002f3fc7bc48838892b739dd1a5f6a14098235925c8604d46ea02", + "0xacdc1fb6aa0dbb3887b41434de084cb9785989535fcc48fa2281497bafd469c7", + "0x832289ffef9cf3053b6086bbbee2c8367ff0be7f5c891be831e19924d94613e8", + "0x8da3a234e0a331eba20e56a6fba40d7cd1157a4d742bdc5d8ee580acdbe29148", + "0xb2c0e3c9b032835cc747eaafb29e484b345ae5215742936d574ddb1fdf7fda58", + "0xe9a511b4fb829457e6ba57753f28d7698e658db1633358d3fa8882d986aa80cf", + "0x2c10dbbfb213e8d124231a68e23d982ba56225bbf085fc38557e3825705976b1", + "0xbf603365158a92d2b61fb0cdd5747938e357e88c02c782f3876074fad940ecda", + "0x9f86441064c7bc377e40b98f279ce38bcbac62240bdf0591645b27fd9175a6ba", + "0xb794b35974d4c2316ee5a56c5e34bf253a05cf0fb2d1f85d401447a679f3547c", + "0x1ca7da1e1e6c8515ff3887f5288de1421f17d73cf8b68123480ecc185ad8937f", + "0x8d5b5f34b43d775b79971a1baa889eb45937f9c278995f3e2ad1268c1d3c2751", + "0x0b7a3becb8e0759586f744cbdb7af141b9186514bc44e566b9f955a917273b8e", + "0x404bea9b91faaf65fd4bb1556e08cad3b23a095bb9a8494af021240d417c60f2", + "0x5650f6dcb640b9e4bc064dc3fd8019007930a5a0372d768022ebe6971db0cfd7", + "0xbe6e7f579859504662f433f56b4aafc1a4b9099e5102c505d24c1a262eaefb1e", + "0x989864b3bc371b0181fd45ea0845b3ae3dfdd8c369e8637b5b4d9c7df3b5e6ce", + "0x33f6c0f0320f82dc4f13896eb2947877f46d8a8281f9dda5ae7eb752b2ad9047", + "0x86b7572aa83291fd2ffa21c360f881a13babc6f36ddbeb3ad2be804057cebdc2", + "0x8a1c13f6b77188447d6c161004d8dbae40927d71bc3b9fc54bbb2ded4a04c663", + "0x59e939e5c71c08d215e73f791c99880f9d0b5501b18d1fa993f6a9cef59bcd5b", + "0x2dfd9cfd2536168f316a4c8f8982832cf2499cf39c3cdd6f70a97850309fea32", + "0x88da00db297f48e35e847b561f9ee59f920b59654dd49f99636f0bc1f1f45781", + "0x60dd105a42c8dce8976464927826a4af14da6871fe50c31b4d2610acb602081a", + "0x548966191d66e18449edc52d2d65aa2b0ebde851ab873c9b56472d51678ccf03", + "0x8d16c253a947b6bcc6a0f3efaf9d081eef00fa2dc858ae20ed67f7485857d1b2", + "0x20bdfab7c921317eae1527da0cf9d90d2b7e1d7f50e31e9b3535ebe2b8c6ae3e", + "0x302df478766f91f7ddfc40fcba19c807203a7ab70296037e0ff3e5871bfdc852", + "0x0fb688c06049b4f8af826d227d228fe183ad9f3bcf62e5b973cce5a0da23d58b", + "0xadedb7e13337974e5ca73f4a8b8b75a69bd78e2b17d42fdd0632eda492708d78", + "0x9725381e1d854ae734beec25a5c7a4936e6ab890be14b886f7721325d5e742a5", + "0xa79b59eb5bbb839bdeb1ea59112c3e0486b069e27197c95c8045523a58ed305e", + "0xe07017f5ee0be6a17a305ac06edcbbab2cacefadd903a2917b76c5e11ea682ca", + "0x999a6246c4fb2d9ca81aafe5bafb8e3c82b1655c788da4a44f54774e63479e54", + "0x00cc5d91f4b07fc68d1fd45363c2d53f7bf2e4e7810e593d0466bc221c4eb8f3", + "0x7f0e7352c18e4a6e4c33bd4a5de50ea814934a3653d3ca6f9a6a0745c4b6f57f", + "0xdb2df5fa08bc94ad1e84d0f8e556dd64a3bd9d2fbbff59293e4bc6caada81622", + "0x6447c05d7dc4f4841ae5d810f49a3889c6b0bee9ec5195c6e889f8b9c0de25ae", + "0xf6e3d4dc0245bf613b9449c0bb378129f8fe665a36b476cf64c1e7272a73fbd1", + "0x720040b98e90d281efd174a93abac57f2ff6da26f76a60c2ae219a3e76b376fc", + "0x715f1e4e6a60b1727e30196b18fcdfeeeebf12331e3f12339e45df37257d432f", + "0x2387ea609b0482b96208ab5f1a560c21973347360ec4e9d619f892fb92e8737c", + "0xa98b62386f4eacc365968597acc2bc1158acda7282c76f41f71389fe9531affb", + "0xd7a927a8388beff9e3c007710c43f66b0aa839f7adb8c0a5ae2486b1c7e29573", + "0xd843264dcac5af1f949eacf5b58ad695c9002a526f12d5dc8d39e0ed6ff1188c", + "0x7bbdc9af7ef11c7bfe753fcf752f55868603b4b3196c6dfa1a00e7190c8f1775", + "0x47b5448a62e86ec0c45d5fc3984d3ca0ba7a5e6608602e5e84f93019eed89d32", + "0x92e001b0c699aa9a8448a73ebdc9ab5ae272b0e1a833214e4da808df9f97eba6", + "0x881aab7fd977013d9e86166acc1992ff377c415d41bca4c3ae94251b437b2f85", + "0x429f0c0d19c054aefb66d378d2ccc7e29669ffe71b07409d6f277cf5791ce156", + "0x68be209d88bd215009ead8feaf952100eaf528ba73b6baf04ae7c3b190698bff", + "0x48e68f65e761a2e9e9fc02876d60bceac4625b7c943dfd8bb7d73d0fe074ec44", + "0x6eeb6ce0899fc3736fc2a9a27f4be5d1828bea5d17d27b0c85752dd6d91ba3e9", + "0x4c486b5a6fc62fd024072e93f0a98b8423b9ae5cff5fe01f4535eb4b8c8cfc92", + "0x6a31b0fc8db8c998f5d38486561310cfd85c7513863ecb2637b635cab53b97d6", + "0xec6fdb483ee04cacf220132daa1b9ae9006524391f7975831919e85eead2166e", + "0xa703934617db422e98f6862458cf6fb523c46e1e54bdea35782f90c84ed2d36b", + "0x0f7c7856b90d80e63d756b4afdce99694f4b7724e6dbb966443fbf161acff6fe", + "0x4b6f557f545daf95b9004dc1e030b2b3e29dc09a6c4b5eaa7e8492a17da61481", + "0xbc22e919fe06caedfac708a3b8f62f9129f76e771a71b09b744db38fe03fd3a8", + "0x7c10fd373b628b3b5488102f37d468ec1f3e2ef031285b1156747cf8679f5d0b", + "0x7a93f44d81e5c6a06936c9da5ecb707b0e6f5facde1a142f982f26383dcf271f", + "0x2a683b279fce3a641bf342ca8c71c8e297b2d09cb933c17326abbe114234d8a8", + "0x464d61675fa98a0375228eff94c3814a5f0d65659b79cf93d77dc4abbcaacba8", + "0xb53b63f419275209c232089f6ae4c8807f2e63cf4ddc2cf795206ae3600fcb47", + "0xf3e551b633e7e618afe1fe5ee53fd8f20b78b7afd20e8e19c490aad66030a3a5", + "0x0bcb3cd9549673a57ae5ff0c92d412a24874ff11020c5eb38f5b686f7b65cf38", + "0x008e5ddc4c8a1cc19728535045bd6c4910f6dd92de75391efe58984452e6d08e", + "0xb344c68e2e70501cfe05b740b1f7eff47330e5d8ee650731a59372e73a02450a", + "0xbdd169f9fb2cdaa9bbc4b7da03e28d22af529b6b7e3f1743d6982578f6d6aad8", + "0x854212000ea89c0648247439433e8ca821cec6c44b2b1c9d972d48c3b85e376c", + "0x55679d61dd61ac0e4dada1d524fa3655713474c53a4ea188cb884a215049b078", + "0x542846f5abff67428e3831167332adcd6c0211c9c3aefbb2f29c5c814583fd7d", + "0x807c69782f16ce537db354121cf6ee437fb81291a337d0b77cee7a7de5573471", + "0x948cd37cd998bef4832bd62ff7b94aabc46b6629d09706545def1794c45dcca9", + "0x9bba5e5818425f62d2ef478d44977447c133dc37059e1387d9631454ea3b899f", + "0x0c17f0d79fdabe535f77df6473120b9d1e72f9345dee3ed94ed99d715e757635", + "0x53692738c355dc38296753a31a22b79a152798fa61be5d86019fb7a8f1fb1046", + "0x2e367f047a031fbf76747f9abf419888cdb2514ab9b7d3058a97e96f241a9042", + "0xb64747ed2d3f922dbf91792656bbd5e2a5a4491d8eb2382c4316f45e037ec864", + "0x054a0b50f58e8fa37ce01d8471d297372742360897e125d83219a5fd87900eeb", + "0x26bb823fa26f0f733b79968819ffe8189b33019370c5b5a1182dc355b193cf88", + "0x99969ddcd8b698e499901c70ea29d216dd215c2cd5b018ed911732d107c11999", + "0x176e811b33b46c80d3f9dcfbd51b30dbf920544d07405102a2209525eca734d8", + "0xe75b6bde6415e1fc9a1e34a71c6f1d957d740982d38adc36f730bb05e994a3ff", + "0xfb6e3359ace0a13a285d97e2d46f7faa013119b6183c4788c1d4f5fd04a1a4aa", + "0x9e7335cdbdc2fd86cf41c2230b855ce50378d40815d9a3297df1f21c8def3b3c", + "0xfe33bfe53b4ca5ab9737c29b0462a95905f84ba86db676da56df4273b75d4545", + "0x59f63ddc97a0e240ab488d842c81de04e0b9920d6b74697680fddc8574a87432", + "0x17acdef0bfc767753c8a6a4ced301374dd29417d2d2c736b3d92e02a56393074", + "0xaff2ae6cc5b9394f32978e44e5d960b94930e2da971a629761a08319392fbd08", + "0x95870448ccfa6f59e8aa0be3f2734fb58e6df98b822bc29477f9b1dd1d6ba646", + "0x23c02a4e9c4471df4553de4fdc82c6037eb7df523e9f898ac1da5dd6485488a3", + "0xce73f43c6edd129339eaff5ee9eaa4484aa7fa6cc7bd396f8a9d7c021ab2b687", + "0x439ac8493df476760c9f80a18936658ba5a3ea9a659b1653ef4c5f2057ffccf1", + "0xade0ff816ec1e24bb08f9ac978258773c6f0deec7fac83d7969533a32ba3b987", + "0x1a02baa6db8e64aa935c838d3078582d61f23870d5b465a96212ea95fa666d8e", + "0x2fb8d73c2f6a876afe358fe0b6d38e7b6d9b8fb98df13f0a36d0725a25b82599", + "0xc0edbad07ebd58dcf1f82374da62e81b7b9ece3313a3a6c942eea6061701e50c", + "0xed15ffad36a7390e4f18eb59dcbbf60c9de42dce55328a9bf3805ef5e30c7d8f", + "0xac4be4feeae8925fcfc679df7cee16d5ecda99889037f97a7c78a3fa7e0a160f", + "0xf22e7fdc91f0c4e663376049bdb106f52153c7ea2316d75c5e5dcedbd6992df2", + "0x5d811cf2f49297a38ac69e40c7d3e5e737c0b097ccd4aea3036ac1a303444ff4", + "0x66e68bd9b5b343802c8f5c40d49a478ac67125714c776ec17eb683a2f9438916", + "0x5a7c6102ce1f938dd08d6a93cace698d4cd295a86dab65153781449fb0504167", + "0xc989321bb12394585bf622f368e4e588b97906249cae4a97979578799a263f61", + "0xdc84659a0db7d0f35d25fd29c96a2f77a174fee3811cf118d3c35fa146c7ada3", + "0x3c69c854311dbf3f001e21957e7293088ab3e4f05f47c2289b5b2eba08a376d6", + "0xae67ead86b267c1aa67bcb99daf2ebc2f6572faa9aecc7c4a37fa587852997f9", + "0x4f1ad2f626abc9956b72a94e64232f25efc73eef2c3f7dc938f866f42258ae36", + "0x74cafcedccd73791e4d244863eddea985e8848fa51551f52f3e7513c2daf8a30", + "0x56f938ec41546b7512cdacc0455b9ca80ee8fc4420690b78b34b0ac3b4bbc6f0", + "0x263a2880d6941b4639e6fc6967b189b6f5f8845af145cf46b1af74eedaf55bbb", + "0xe198d77ea77eb49472e5c18b507969a5979b90587e2ab28026835464ac8701db", + "0x8f2a0301c9f0c20a00f50ba28a6ef7ad36256deebb94761590d9a878b750523c", + "0x18c5605fbf66c824c488d36a74e1fa48ce1609c638533663b5bf9c312a93a80e", + "0x565c3aa28dbb9ff7f042d8c53c05154ac93e6f00f61e6a9174a8d46858ec0a93", + "0x15189008247760b2434bbcd84088c81c6bdb2369eff387a5711ffc136bf2805e", + "0x7f7cefebf424401bf0db9e48c924161ba2d7512cf27713b54b22a5bf81dc25a2", + "0x08cc52f9a650091ef3daa669d91b25575ceca7750e221a62cd4c2de1ef631cbc", + "0x6ecce4aae452935e17b765c53841c106da256d2b9dbdfd5eb1cbf11d552e5356", + "0x8e12e683890c59e203e77a4608237ef595cde946b18030d705fdf70cf00be927", + "0x31b77d6801cc8567a5f27244b6a2f900c80baf2926d66573e58b6fc19e6c73c2", + "0x2012a461bc8daf576e70f6c1e40135ca4f77988b583ca9943e6a67bd6aedb6e3", + "0x50f46536206bceb37062b03b703f87310f577e9c1925642d23f43a8857d8ffbd", + "0xce7721626010691294c34dd375d8ff8147a21fd0866e064cab55f0fd27238f55", + "0x1dec4fd0980dcf226edfb82d2783f906a8f936976e7ea499c2ea98e85e0526c0", + "0x8110364a9887b604bdf6783271b2b5a6b4a67cc20b104f5e6ccb9a51e6125c4b", + "0x5b4f4c8dc46eb7a1e19baaaa523f30079e5503e7507c140dc0ae25f90e426c84", + "0x86efa5f16676bdec7f0c1df26f76c9a3fbbe11365fe45d0df67e9cee2ca60cad", + "0x974795c16d6f6b4a1b37a538b70f7123b83439876f9358b3ed5c90ce92b26990", + "0x4c2431e48a91db252d5122e739239f15fa18abae834bd9106db083632ab4cb62", + "0x4836ad3c62e6650ec7f09a1046d247fbc056bb03ff422fd1ac696afd79e4eee0", + "0xd0cb3ebf762433e2ad93c6f8a39e8cb92eaae13f704c899602e40314db3e0298", + "0xa87b48c1599223e0ef2a9b12a2c8e605f73752a97406fb337e56b8178a888330", + "0x28f6c9136d42412f0067645f1c6aa3f7cbb8555c17d566cdb477b12652f55af3", + "0xc8c911d278a2fed8d9f6bdf4dba7df8fd5252d16ee666fec6cd34af6b7228cfb", + "0x7f7137e81382470536cd3c850a454ce107cbc3a2785090aec0ec4a538626a16c", + "0xc3fed2ad3d7be93b23b23647e9bb7b15bba7acff47cb8f7ec9f441d939107f18", + "0x186dfbc31fdd26956b6d94f2ee42867f86892d6cab198b88b9b58f9d5c619c02", + "0x57c4415af634cdd5c573df5a0efc3c6e34fb1761a19257ad364626e6fbe3b347", + "0x8cd67242053515cd24c6b943fd4a14a8eb9fbfff689621c553678f5d441d82d3", + "0x1c6842a10c204825d19f733624c780241bdbbbdc65293f129b3fea7b09744603", + "0xff56b683816388a2a80dddb66f0d3cd070c631c60a79fac3dcd3741c425dd5cb", + "0x4785f0965de0881c87840185006fdcf1751ed045a7ea6636e6d0b905a176c8b6", + "0x68fcad4b9c66df6b5cd1d80b87dc4f3044866d8574f92576ac10413cc15532e3", + "0xc4dfea902c49b230aadb9593835884b2b1029064d29a630f7149bddb73af6b19", + "0xb7511dc1de274ee7e4838d6dd26cac2ca4d7554a4dca33c2ee00eeeaeae93767", + "0x360d59d25d4130c9a4f1ea61871207982026a61b1e8d2dd28c0bee31d52757db", + "0x67e880c090f01c58ca5538e183038104a73b397cbf893d5982a42abc8a327573", + "0x8597dd0964357b0424a0c3d48fce0b4296f2baa6bb1d0258c3147eb98ed2a037", + "0x6467b688ba1cf942acdd68093fbf24cf73ad1e3463c27a82c90c4be11867b3f1", + "0xcb22594e73d7780e07f7cc1d6b19ce8561b3c8e407df5a56f4b9c06f716a430a", + "0xc3aa17380019027e0aab232147a4f493f6f4d1854952a38e6d5b5c094eb454ea", + "0x2e465a99a151f08e81cb33c6d1f86c92ed98dcc8491b3cc081b31cbdd23bdf3b", + "0x830e95c099d60876151b0ecf521d532d6785d8db34d74dedd79ee2a025023972", + "0xe2aa96e03564756209ff5748aa33c689aa57ea19d89036cafb137f08bcc87799", + "0xac2e2dd7ff3b4f87b93aed1df34e9f1c269bfa279639695727865a10a235b301", + "0xe93753f4a68b39b10c82f821f5d3ee0a671e1a46546719298f715b74f87fcdc3", + "0x118b608f2976c7fa751f0b21692814afae46d77236d53ee6c11c78e9adf9edbe", + "0x4a6fc577f6d0b9389d18d935cc9f16fd367ebc0e477a50c5bcafb1654bcec717", + "0x1c5d7ca8ee5044f80826dac59eb4281d5a1b8ae0f8e87ab9b57d253fbd5ea4b9", + "0x4ec06c6d19b5027b8752b48f5024def394c8a0e42a7abd609c931d8391292564", + "0x227f1e1e6123f2346b8e1fd8ecbbc91f71eae5ae28a32901e052b1a5e03181ba", + "0xf25b9a7c792e76455c0b8f6f3e93e9c01d4e9188e81e7428d7c5f07c698581dd", + "0x096ec8290951c1a707ca5341cb9811bdaed865086e476389de627f3ad588eaab", + "0x54537f76ccff6afbfd6ceade8bc5a5a60b37a8d3a6e35367704d91ca7f6eb7d7", + "0xd16a3d72a8bb0b759b465299d6cab9aa817476897d17f112f16093ed4cadfe39", + "0x83bbc19cbb1292b7a4537c08f3436ab6809d5c504e2f945db861db7b94b53f6d", + "0x5a1daaea20b9f1c90502db70e0d16b3826cc7e79efffad85854d69e65ed7bb31", + "0x706cf14c52a6da8f39e0f6a155d663cf25c64dc0dd9d473b1f4b6a9b431bb827", + "0x23bc842418fd28110548ace0149a1bd1c5365968aea4702d2e028af8c84542ed", + "0x2754644e77d1bc059fbcbc26cdb5af8d88ad715d64c0367948de7bcb5110d1d2", + "0x4131bc1c8bf15df1288874f41095171bb1fc78524eab0fca5231f2efa5d2b0e0", + "0x18b45909ca386002a82c65a532d3b3abd86db6d50ecc1956fdf622f7c6530e0a", + "0x6244ffc00c5cf03d390cee752c7f0d1d4908ed2abba4f0b178a7f7ba643f2e12", + "0xeb8261d9a97ccb00ce6cd41bbc4459b0473547d63bc5dbf17d16694a5ea09ffa", + "0x7ede33387e9edd4bc9ddb25ee0e67c197df4cb2e7ace65da40ff981bc4eb8628", + "0x39c705ffeb12fb95610bb589fc2b425084addc1e6937a5faaddb42cbeca90890", + "0xbf7d8329b3ed418ef85730a2954b48c17b8d046f45ce7b46162487698fdf1b5b", + "0xaa2c7ce8f4bbb0cdd1fe490fdbf29476a89126d201b9bc113a24618c531c9622", + "0xe38112ada8e0d5af0420aa9f4d35c45076428a68ea0d72a91536d63c67f7497d", + "0x2f6b6adb7661b24dc55a1d5e9ffc87ec3ae4040aa0265a9ae3e57e6c0ca58d72", + "0xd3647f33dff1ca5f2ced886c032cde60047e12e1fc616439c14f895fb548522d", + "0xe4620f60f9032268b753075db2c22ee7ac16d8bc88cd06bd359b32e113012567", + "0x254391803545cd4a1535041f1dd5a559a3b9c5b0914200ea384adb8a6e830a1b", + "0x2997006eda5d2e391ad0e23b8fc8c279648a15c46757b2f6da0a26aeaff45a73", + "0x6a31221113ba50d4d2208d82bc7d7a24c8dbcbd91454cf0a59bfa6644596903c", + "0x2b5c3bbbfef813f8de20f6069c0a09f987aac6788699353dd3af27c8d4dc8e8d", + "0x2fbebeab188140d45db2bc051daa896bd268f784d8f026aeeab57d51ef3f597b", + "0xeb498e1efa69801ca17a286e13608590a3dd0dc2a9507b0fc9bf52997f09e015", + "0xb00c8fadb7815a83faf47512e4f2e4ec1b7ab363a20ac1d2335950eba2835b1f", + "0x4944a082a7b17f88957f80dbb64a337ee62d5deec61e0a3ef32adeb6e9ef6366", + "0x6c18abcac3eab4f269f3589e0a4b404c5c8cb81499eb1fa9eb72c534a81ee7f0", + "0xb8efb3078dd1770d81728213a8ac037e27c438aef3648f6e176ca9ffcc017515", + "0x3289634879d9b7a29351bddbbb6edf09f0c03feaa0ab3dd169c55cb16adc57d1", + "0x4321b7a713898553346db335661db57ebe877df3890ecdafe7b9fbd2ad3704ec", + "0xc143229e840b1dce19546ba80654725336f6940121b4e69e2d240facd962c071", + "0x2ef474d215e87dd9e97a2ea9dc6eb4428b805c423856e77169888f1b6bb5b079", + "0xd350a5a27faf52e48431375f23136db50492f19d03477c6ef8055f22745b5a45", + "0xef18832a8abfc10a9c0b10cf2946f2831acc610acd6b3650a046ffe45c669dd3", + "0xd1efc93d1b0f8880904b6aec3315bbb18ac6c88c9a790aece5479d5ee76632df", + "0x1459b3c101e6d1a4540031a5da50e93427774a21166d01d5439984b08d834377", + "0x6d49888ab094f3a4d161e35b6de579455abb627e006de79d384041808a6790b2", + "0x047de2e4bceb83a90df84ec40e16e4c9e9c9c12491c888361b2f0d43145d72a9", + "0x6929fdf6b48c5af7d169860c26856eeb50c37b1dcd154b2b7342e9595a85e9e0", + "0x08fc80ff0f188308a072dd11685c4c9ac1ec7c5a35ec819e191d97f9a24f75e3", + "0x47a030c03e6ecd6dde93952d06aa57b4159d0c7b0f5941dac1eda96faeab077a", + "0x9bfa2d4bdd687a79549ec28ac73383f8611bc5cd7e51f57258e8142cebc30fd4", + "0x8f0436d3cefe944e0f38449978561592dca47ac0507fa0c07d1f81beaf7f692b", + "0x168b5aad11cb09e02e0d6c9cd5c7090c554f0d0986cd31453ec728ccbdcfbdd2", + "0x84f183e0d04013eb58a55886c5b48cf1337a3109802594bd215f798c7a61261f", + "0x39ae977d7cfeefd57447def40052e2e8955995b957d70669672d21e42b190a8f", + "0xf16c96c241f48843b45b0c947699d5916b66061c965e2249a595de26b38e35bf", + "0x04c17267062e6ae15fbe943f7d9afb9707a979466c96f1236166feaa8d2c3bda", + "0x3868f2840b3e946ccd5f6af5a3afc15a6fafb27581acf1682cbf81eeb927a34b", + "0xd1e3ba0bd87f1e5b2f85c47521393d321925aec1a123118b2a06dca37a79bf0f", + "0x5172ff7d80669807c6d801d10c5a05b1daab6df2986779d439472a25d561d6ba", + "0xcadd13ab20d5f8abdb7ab57d7e3b3dff13294295d19b218bd59ae211dcc9f36b", + "0xe41370e6078860055af37dda5971bb9bf2ee34e7069cd3194de4874132f88a2c", + "0x461eddf926e0ea86e6b383e154576d6248af3756eb936a0639b2afb5c664d59f", + "0x7448ad04a839cf8723416bb117c7f4834c461b33bf22ea753ea61d7dbe716398", + "0xf75170e49a7e46d78fa8555c73aab63cf0f0c49e3d7a3e0e2bb5ba49b3831eea", + "0x67d1610cdcfde03c10055df757f0ebcb99c82ffc437d3b1b79a9504c8901f13a", + "0x414eac8ee6f962630fee4a9520e80a603efb97712df0ae629e495c7f37a4f2f0", + "0xf6f866926b481bcb549bf4ad4f4a2bc6c6395e7f00fdc2ff6eb75c8cf9ca9ae4", + "0xee12a097ed1652b7c75beda9415e1bdd2d6be3c83943838c430a43958ce12513", + "0x4e422ea575b93d06d18b992894cccc4c86f0c021b196273c2182bebe21ae33a1", + "0x9dce37a6198c02e1e38e2a78efba593c22e698efce7905563afecc00a0180a67", + "0xc90c289a93badcf6ba66cf57cdbeab5de68dddc9f9936505dfa601b8b15d6a96", + "0x22bdfc5e914e0d6133c8635da275e309cf4cbcaee5311e7f75ebeff86016b6ab", + "0xc22f4c254d27abe9d40aff2021797c29c3a9cdf72288f31799b3356857e6e186", + "0x9d2c7c155d5a08470cff43a513b61aedc48be91a23ba644c344852996c3e6fa5", + "0xd31eb8b5081bef3c6b7d9e9ab5a89d654a5ea32530fbf93bbb688276ec26d276", + "0x392f93800a9f1397ee7b5687bdc53b3827a870a9dcb25d21b4c711d2771f2fd4", + "0x31db066594ad41c6ae9fc906d2d4ca408cdab26f29f6e11e28009619ae0965c5", + "0x3527e882cf075093d29bbd62234c3ce2e3a3f6975f9959a442a1699a24863f8f", + "0x41a1d565a0862bd6f58e66592c5fa9308571909b38cf19035787a02f2030adf3", + "0xf401735a02099a7cea6acc873ea170550f42ddbcb3c511bd760273819d14a81f", + "0x43e0ee63875a08a864978a1152a58faba856d0de375e985354cf6fd0ff69c057", + "0x05f1712732382006bdefd429df836aa2ad4c0cf2aad98d6711d84a8bf6a86457", + "0x7102412851bff05aceabb4ffeb9e3500dab145e47b1fc164875cca1cbf78398c", + "0x6785e405d5ffd9c3b00981e9e9648d40cf14af982043a98ff9cd93a95610c4b1", + "0xbb853eb11a4d79ea4d0a7734d79c2ada0c1c5222460207001cb86503a360a336", + "0x75a142b9b3d21bc32d474bb02800d9780af0def0ccbfb0ae39d212d775ddd386", + "0x4c09e3d07460761dd0fdc568acb3b953e315f188b24060bc65a01e7ab84d93e2", + "0x54121ebe4f99ce9ef752e41ae2d6dd06070c44922d71ee509797828fe0ab7192", + "0x941036caef35f47c2e0d204edcb468f8a38090c356428178353281e08ced6434", + "0xe3a12f69bdd71c85731baa47b227a03ee86c59ba197e31898d76a3da767c696d", + "0x198f7dd094f758f6c84581c0fd73044fbd0bd76f4341ff66d5e57e583af195e2", + "0x0b97d6ae2902a3d4c6878aa929aad11abe0254f2d48c0ba381cf753ee708b466", + "0xef336f374c5a225939b288ce95e0c1cae2027ce236156834e6511d1c62cf809a", + "0xbe314df0c58825b04aa5d6c2b3fafe0cb40a4f85b6b063842c1eb3b6e57b493a", + "0x8e0a43f5a2d5010be9598fff3dd1f74bc29be6132b45bd76add6c0d0ea73e4b9", + "0x44ab9907d09df3599ab57314462e3a3c9c96ad2e79320e3c02bc621ddb8b45d5", + "0x19b08b926f44079710049c631793d11cf4f16063ef7678ceea35e2832824cf01", + "0xf0583addc5c9acc9052494042ac9bdfb4af7b8abf6f2fe74ab52338bcac92abc", + "0x8c09477b0843cc63636d9dcbd02f82b86231d58f1cda90568d3a8a94a83c0288", + "0xd52d36880b3d66bfed13c01a862521f41d69a86fa82128bbc1e0a1103d4c9064", + "0xe8e3cececae0573329783434e7054ee235c2d696d7a9886f38a0cac985c0490b", + "0xf473ebbbf10fa24e5b69d41051f7b413a5112aa03b7d224a9f93a552025d36ff", + "0x1b8c35df755c3268a58913ded58615493ca8e74e5bfb21357c9ce06f23c84b5b", + "0xa72dd6a23df8df0b6ed7f162928632a3aa76d5c31a27ad1f3f8409f47550f533", + "0xaff1873033f6eb405113365db615b57f5856619f4a7aee743f9d6f7fe84d4b9a", + "0xd6b243bd0f7aef93957ba7593ef5cdedfda6039a4db66f717ca404f88e6e8c88", + "0xf61a8948f9d2d5f0e847c533260b90b5cefd0c432e2ad38f2f958bf514922fdd", + "0xff98924e701d17b2ab96555543535f0becfd7a528dacc827ba84176972153574", + "0x9aaf83d167ba1097c5b97973e548199166138f99293b43abf41e6fd472806b94", + "0x926ab6fbea17e13e07caf13f03c4a321e1402316055001cfc738c7536b1940c0", + "0x5e0e5f2183201db12111029f703a06a2683d4c6a1878d5e862b734e3f4bf02e1", + "0x9fc0c71959624875fbac0d861510f4ee8cc59e27a8fac1165657c058c71bf1bd", + "0x74846f6d509b071715a01a4f86cf93a8380ac8c466a0402f65e19da32bfe3aa9", + "0x000b1d3a7adc2d7654cc6a13a5d4afab2d58ea1874e4d266027f7e3f379591e5", + "0x6e28d7062323bb4817c220b2d1f142da6b6ae43e021d3f51739a6f5b6f60ccd7", + "0x6b1e539275da923e35068eb3a378da1c58d6bbfbaff2445378e7439d6177d22e", + "0x01a5ea09722078172808dea23d42c5aa074540bb9e589d17ae0cb59284cd5a4a", + "0x32e53cab2f37d1bda906fae7449d23b2fa69b0326eee0f1481301966cf204fc3", + "0x0489ae94deacbecd5edc16fafd0822d4f4cca6e4f2d7bae588846fad017f3de8", + "0xfda4309b57951890fff3e07a93820f880094ce4c927e4f16e2bd152240eefc70", + "0xb7b3d2f94ec5d45092c543d96caa0ed20c896874f7644b2263e2936a54054aeb", + "0x3ba5ea7b9390ce37ccfed6b32eb9c5af5a77818105b0317c1d29c0f6e94a901c", + "0x99e1827ba24fce1860fddf2d7fade56f35a48d165161d2f4f6dac92c1d0fee8e", + "0x16bec1a80d5e5a6e827eafcb7dbff670a3b3331babd43301b124f392cfa7404e", + "0x1fea97657f1b7af6586111a081b4b00ba1f6f4d1f229ab276f5acf6b15278e8a", + "0x1814cec9b1c2edf43e3236fc1a1785237a091b64860e863ff5a9cc91ab43dad0", + "0x4c15afc5573e70608a72d03c9f38e61f52e41697f33d50a6de855cbe9d8adb22", + "0x739704386e447efc6e8f6dffbf9bf505675bb1c411a90f5a5b3b83dba718f9ef", + "0xa5d9a9f3ab6816933763ae264fcc32890a8ab588e1720ed807d52b5128e098a7", + "0xbc73915c1657f69d9dec208843d00d8e3b931be16d29ab5b0615541e414b1177", + "0x0a1d5d05d855c44f4b9b0604bc3e8c1f39bf98b686b93329c7eb5d684d3def4a", + "0x6b4cc3632823719a2db7f97a533d1cfa76316fd09cfe77353f47f97490392bdb", + "0x057d200b707de2f6dea7d8e804424fac8fd4b8259c77e0fbcd32e31f30fb6668", + "0x8a309f5da2e2e5b585bc451dbd1f6ed9b2b6da1435aef886ffe382a96fb18c0a", + "0x216fb50ca3b72f41a03e57bc8a098207f7aad442e68ee5220ab716e226c38b22", + "0x7203031465c73bfc14520d66220c7948bc870760da704fa4866b1c3b2178a84c", + "0x1c16804920ba326d5d560ad8427dd63638d268b715b92ff70bfa513f1cb811f8", + "0x1b65d7d85f4400f484faf261c6acb4c572e3de3b21a772edcd44de5ac5ede3e5", + "0x41fd00de2a7219b8e9e50a578f968bfe3dad8ac118977da7f3f9014afe6ed528", + "0x1193980128e8444cccf6570940b6ed96d6cb84ed3d295522ce0d5dbb6f5efbc4", + "0xce5f9cbb104bc55d59e6a46f49c26a956bf6aecc72acc3dd33f73bb9ecfc3b7a", + "0x5078e11dddadc7f8666a92678568c0df7e5717edfa1715767887fe64b498050a", + "0xb2bc143ba83a5510642de6f5c188ca3e532a566cefc85fdd40f7d41105485d1f", + "0xa0ace5a238c47a71652bb5fd5dd74701fcf083959251c39d95484ef7fdf0203c", + "0x7a99146ebe30477990f8ebd7781f5e4e613135663b07aae66f644f28f1613bbf", + "0x3f3b48625ada1b4d06ae9dbf1850d062efc00298a8892e55db54525e884b09de", + "0xca61b81af1ae724c7a96a407b235ebf4c2e541cbffa7ead81add29c990f24cd0", + "0x1a9600926bbc903f87751504ff1b06a86fd839ab2737ab57cfc72f83d6573378", + "0x98b1322dfb85167a8029d2e0409ab7ed8998b2b57fc2322a7660d5575aecab94", + "0x4dff31bda99a6a0c14af8b4504e920033c28bee86949c1ac6f31209ca3d328f0", + "0x9b0be4e5a57853b11e66f8c5c518de0aa9963b7cf5da5269cdeff1c791cdd569", + "0xb187b2a0aa947cb169e1ab49dbc83a8011b70c6563510a3bc83eab82f85e4645", + "0x6e19072361f6ae03cb9960c013b6605a91ea052aede290016cb1cd57996d5b7c", + "0x2eb96aae2bfb9ecec13d4f966376ea273b6dd131ebff85c0a412870490918a77", + "0xc2f5f732793714f7796ae13b34caa7271705b71dfa6fd3c05339136a8e9130ec", + "0xbaf6e1a6308cb296c95d5e8cba9bd3e2e4fe3a37fb6535df5bddffa5db62953b", + "0xd5178c769f95ca086166b926bab1f70590a0fbf2261415cb90d7a268762c3a9d", + "0x63c9586c3e590f521edfcd504041c38f24a8e854974648d0539f60ea72850fcb", + "0xeb9208f055cb3276b03a0b69b0bcc10c11e2a71b7c13fbe861ffb71e9dc265cc", + "0x8ebcf3753dd515fb08bbac5040703cd23772dbb0984ea12dbd9a430fe54bc619", + "0xd017fe9e0b5719f925536fee65a10c7243102ec4a7e6d50ebcd0e63847e2e842", + "0xf6a688195992961b66ed8b0134203e4623ee5e378ee4072da8263042aee6b352", + "0x54264173783c6739730974454f194250e5949cd4a2c8fa4b38283b1788d378a1", + "0x2d3313f5196a6fffd61e22b1cb5c1aaa554aa84980ba2d1caf5070700edbcd90", + "0x3e13bf40c11a9f380a6d298a38fc277445d5ea478b6e5b829be1a98274f10b42", + "0x4163361bd433f5ff49789468c0717bbf430140b5085a43eea1b5401bd70d0c68", + "0x0e2ba3b3dcb56d21f4cf657c36cfa32a5fbb556b79cb783e880793ede88e1587", + "0xdf5b6113931c6ac18648a78dda782f02f8effccbc9d514103c12ebbcb9d8293e", + "0x4d28ad7b10d7f8bd8eda839b25c6df172091391db2f02deaf9fd8f3e0102e365", + "0x142d6665bb5cf064c4f2db1b4e30330b740545622fdfa7d2a97052d21eb42daf", + "0x07c692df427b84b309a0521a72ccda8484af324029406bb25f27c299bded8da2", + "0x99be01ccbda270f851dff8309cfce33c5642d135d75b72256957df3646c23c46", + "0x9ee5eee7d0617dab4fa4b7284cf98e97807e2c65c13aae6254bda63d9232f91a", + "0xa5b57af9489676aac1454e5e24a6de88e6c2b36aee5f26a125233a95679f6ffd", + "0x386c450d2b24582769ad8549c79e7e212af082fae9df4fb8e938c82c9e47af51", + "0xe913ad2b4ca5103d24b42becc0051a028fde7ffb891c84d77958bf294e686b8a", + "0xd08b2df40e95a27e21188712b92ce6016e45d1ca8dc68b9168f3b0f722017bea", + "0x1169d69a359d9f7114238f6f9f34fa61db1399bff1cb763fbb6f3f87a654a6c1", + "0x351f11ea01fffaf2e4da16b78872a74ff22a4a1d3c6ad5416d21a209f4a718f4", + "0x46b3b58c7dad05a9db61f69cd3f9e0f926a6e9d3710a2433b5f8152371751823", + "0x2f5e696c904e68c09468f5514831912ab202adea4b0ddd3eea6d46ac2aa43446", + "0xe6d547cdbb2ccc845c8a8412882cad142b09d53d43814aeee6a55f7676485fd1", + "0x881a4f56ddb65368a8bc96c0a81e37088649016ead7682f2a05478282b829b7c", + "0x3773ef5c4af9f0dce35721474e31288ae14262dac328d5c2a44ca257ee71db4a", + "0xc8986d77632b3e773efff2feb07a98bcb53866139233a357959de4d0f216fbdf", + "0xc390abfb8cfcfcb942ff1b1bc503ff0bbc67e7593ef414721f3c0ce929eda1a0", + "0x50288c1e9007a2ac5caba696fb354b8fd663f6d712ffe302090cf5aae16a9b47", + "0x8246a3aa5a4835a872baf03fefcd1772402154c837eb6f6a788c595fa4d4bceb", + "0x5f56b6e3a061cd933fdde779e145d71960190539fabf7db1cd279eaadd73871b", + "0xbd972befc1f97187cb90ceac34bc0491a3ccd098bc698358e6374223eca1d724", + "0x0ffdaabb5dcb1f3607ba91370ba9918809ac44d488b02c3edb19d9f0b6955384", + "0x6fe59edf6d8fb20afe4b93b12335b82ba70f76fad094c627af0d925bd4199347", + "0x468067b58ba553ef267217469dad7a37eec007513a5310b20f5dae21f980d191", + "0x6f5d3864cab4e72548feb1413907a153187c0f3ae495933ba477f5d95d4a5088", + "0xe1c481892afa48abd31d0875781c1fca65d22aa527b6de87fccd3152bf62ddc6", + "0x70208f57edc221cce58084fc3bfe64c9799b103a64c15e5ba124473022e87ff2", + "0x99e577af847a8b58726414a842c82c152c55094bbf770b9bd9941883b5b9d521", + "0x7e1a5cf44f006020f31646e629d4a2cbff7ddcf749a355ef6bc77dd3acb0ba3d", + "0x56bc61050b27d0d1ecd2c402c23daf28239b546695de11402fe1f40a9ab204b2", + "0xdf3421f5bd2a77ba6e6c8aa34b34dd688c5907bfc8d93d668b3a2afd1658aa27", + "0x8d0d621436cb6ff4ab3b9b74bdeccfa8004011f801e18c50db57da1ed512f110", + "0xcbe9acd428aa0aefc9553948254541ea19b8a946fd8c41b8aa459faf54f84d19", + "0x36368e2f53d4bc00ce6d2e6e4ee6a24f2951109ec4e10ecb0efd4e8c6ed09606", + "0x986723f87eec11d507d326664a9da484f2a51d9e32d4cbdc7291593cb5fcb0e6", + "0xc79edddc3767bbf120a27107539f61bc8708d1c56cf3fcf2a1a6070b2c95e1af", + "0x86d52eb2fcd43279737670e812ce4ed215ccd9c79bcb1f1c2b3ed611d5e0e11f", + "0x36364a121b0f86bf46e7a669186df228839b650341dac0a52be214f991ee0462", + "0xa41eff36fb29742c7e56e3622410871648a20c1af346eea1bd109b642eabb264", + "0x8023f7728f6d027e33b2e0765c05c7da25c0fac40d5df4d466e6f2bc7dd1fd92", + "0xf3921f10e2efda27c5b8b459f0a4054490856dc024c45f980d463dfd50abe7a2", + "0xc091201fba2fa8bcc402f9816a2ee24668ea842414ca259ee50a138d352f10e7", + "0xc1a3d71c10860e14afaf83dbe4e8fd221d024ce410c4c395c1c0f4da4784ac82", + "0x364ba9f6f645a68a4c2e972c9cda468a5e962fa6601789a7090e88aafa4ef641", + "0xa3028b2350b2bf0a79c8384126b76e3de009f70b00717ce3c3c4aacd22f7a09a", + "0xa45de2e04250ad9eb13804104510cbf4e844b05291240ced4f2e31954b19df08", + "0x1e31ae63bdba13de9d1487ce1baab93d2cf8ffacb177412425b1e074dac8515a", + "0x7b4fb3f7dae80534b3ad7dd7ed0cb25813e9472da67634b7fe38a2ae4de6a5ad", + "0xf07f5e7d394f669d6c36341db8c0ee285f57490bfe610f8182de35f811bc043d", + "0x01b3279dc6b9fd492155e9647cc99c98773486f69eb8f255822001fe9fcfeaeb", + "0x14909fb2b40ef309d6525e776884c90e6b36eee9f27ed7770ec89eb180f0fd90", + "0xa88d68444485af65267e315b5766691ac4c93b229f315596f32c00b0589525f5", + "0xbf948d401a64266fc5e0a0b5e32cfa9b357c313f60deac137bd04ca13913877c", + "0xc483c1021f43bcd615334adc07828c091f1b65bf4ff66e7d2e9242307d42551a", + "0x0833c9541c6de0d3694197520402811b3daa87941fa2b313d47e0389688aee5e", + "0x3e62de29e9dc9b4bbbeb6b2517b964d638882129d8a69167282d619747563d4c", + "0xe17a557a2746fef006ce09cfe6ff9808b0db155cdd89063cd7e87dd319b48eeb", + "0x5107efdde4c04692d0463421c28faee9e374e536ddeeafe1c82b0ee95ac661e5", + "0x69478bd07fb306d6a45797cc1c7dff9a9baf816a723cb35caf3492db256cef16", + "0xc46a2985a72cd12a1f15bc58b79afe86c8717492c3430ca244d9cc3d8a112fd0", + "0xda7783054f92e09bb7ae297a8f0c93ae28526b5c3dea08bf2ad34cdb503571da", + "0x331c877c9bbe1ed1d3f719db2737b25c6d98ae3e832d0b41fe8eb24b678542b5", + "0x2b7afb862c8d49e1dd7656c9e4bd43ef3f2f77ea9fb6bcd432840a0356a0ed87", + "0x764b571be7c608f9f2de5d53dc6612b6223d75db37925f4b3a29ef9546afb5be", + "0xf8be6fcd1e336f2749f51e9ac0ac7260e991ed2d2b8ebd7770bad2a522dc7e65", + "0xdab6e0db7bcc8341d1a5414f78ce5c0ce7629b0a572bb9bb02d87be540bef279", + "0x5e7dcf06b6dd84f8c45c17e4df670716d98d946c465cbc1469c5509d32cf5be0", + "0x152a6e3e34aba601a8a6f3889bb06c94e2fd85dde795fd0d275e8c827d0691c6", + "0xd9a809b50ea823539bae8371b81ef5a618bbc98dce372adc55c2e907b071b8c4", + "0xa784293620ba294fde92333d42ced76af6279221dbdda763e8b432e67a61d6a1", + "0x720e1d02a6f416b36399e8bf3fb7114d4cb44cd4def46d1c4c311d06bd62ceb8", + "0xdf9d159c28173e2ade642f7a5009cdf316ec78c11fd3e0f60cb5e84462709aaf", + "0xeac39869f0df87eacd462bc0c1fc866cabc647db1cf36ab8210d832446b1753d", + "0xda98d7e88550a672acb3e921278ee6e6ebffc3537f87bf2b8eea897bc439ab69", + "0x90730c148cb34c10edae1301f65f7c2b622c525d2b5e1ca9acbb2f8493606124", + "0x38a96b3faf062ceefdec463e88e67d202e4c7857227080f583fed156e74b9211", + "0x00677cc482ccd7bdab6006674e6fb5d206db7b9af4a18417fd8d2beae76c71ed", + "0x53ce9788e0fcc3e3d1be86effea30079ce64d65c1f5389ed8efa9d9451c209e9", + "0x95435e7a61982c289583c3497b3e8d1c7446ce7b016ca1b93f323bd468a6144b", + "0x7df1bb66f65418fd3f623298e960611c03a11cfdb96259b26aea88070c518fa7", + "0xa19418676012e58f42e06741066abfccff2e768c0d0a9532f2026ced5205efe3", + "0x59f8cd10446ba237f286fc992a37b0d52ab92b22b5a32a44f3604ae3ea142471", + "0xcde90f91577b4eb9aa11d155fbf46abb66a18bbd92e48b2c5db7a9892a8c0cd4", + "0xa1f15bb33372eaee3f90ee9c14364254c67028b1172d0603d04de6c30349ca71", + "0xe9f0f38dbed75372904e7275d0a55631898b6e8ad338906d9346f05d041b00e0", + "0x5edb8565893188092d66a0fe4a3af1d81ec1f3c36a5dfbef4f8bb74daf929306", + "0x736709f1a21c888ebe0d8844fae6105b835a9302c2007c8b8bd90ec9b2567b79", + "0xfc6af0bbc38561377750eb69081483df99c35b76c50ad411631bda3fe7daa349", + "0x54e4fcb5c4ec8b39f12ca8f52f12fd076dff76905f0b5d2e3d138e368eae8da0", + "0x996213174cd9b926ad2fad8d39ac43d359f1afb2a64df77fb8dcbc0a2986251b", + "0x6e91f2a084b87227b16850adb0aa6a48db1cd2def8181316171fb83ee924fd9d", + "0x3ff0b0ba0ba01594508ea05cf8eba196873b7996f5f24b8a3c22b536dafd6608", + "0xcdc206ffc56ef75b6959eb5445faf59cd74a467324782634e7714800f112e7a6", + "0x706715ce7cd424bf247ba07b3a931b0815565a14e1915e701a6bc4c3569e3f25", + "0x8837c325168f4ac5a3c0854bc9fbd0f3867353911517d701a08522cff9b28f45", + "0x57633cb4cdbc8574b0ad08cb99a79dfa1e9eca2c140417446170fbfe947fb286", + "0xb27af713338452c97f3eabfca09f7082918b5c3a08cfecd41e9a7ebca3886dbc", + "0xcece03eeb5684beb21bcc1a98e8c5ce3eb54f476cbe03f25da36c4f4fc9dbe8b", + "0x535b5bae889e8851585d7c1a4665c145a125d038813cf09536ccc1903648c905", + "0x4a0d4558a2dccb95216d741d5c0c27abdf42741a90ade08da66bf3e42bd2c890", + "0x66873748a8f2578005412e9a4735090360cb577a5130ce14ed03c3d932f57979", + "0xdadcbbf9328a21d34d4b34a5e926c96d4a0cc4b000b8de028644ee7a206be497", + "0x425e98f31250b8d5b30ee2edb09378ef9956de7890d69c738f6333aca5018e6d", + "0x4796893c4ee589aecc1cb5c402bb1f844a9265fdbbd4344de413b96a54e7eb08", + "0xd71b61f1c6f2cb24e35ac83eb5c9e6b5d6daa68b7286f3479fc1e11ac0c41571", + "0xee5384cda1377490a836ff4aaff51b82da429a25809c275912ca4864e9dfc122", + "0x539fd1f60f2d989d524cba763d75f67d6e48833bfac254b4324e3524f3cdf02e", + "0x71b56cabe7ff3f632f08898c677cd957ebeb7d21001c6078a1b55063c2771d3c", + "0xb9ffee36d9b31c41af39f8d645aefa4ebdae48504504c347eed472fbcb344014", + "0xe56f5abb5d875ce5cbf2e8c5ac2cf411bf019cfd028320782ed9799343d14833", + "0x70577c9821f82ce25f3c4d0d4bebaaff42a6b310bec46017b86df69bc4dbf2b3", + "0xa61d296d7e0f48fe5aee2c9e056ea0148fd97bee82ce3712e499ea8831c581d0", + "0xa324c05ea6675a448d4931f59bd39fd43b90dd5a9f1eeb4d023119de0dd32f12", + "0x7dbee82e43d805d6a6bee3b9a70bfc927536865705ecc6e4ab1ac8061433bf48", + "0xc062ca0e8f83649693ae5aa5b0b85ae41fbfa0e2cf9c3525118300cf8a771dbf", + "0xe294ecec43538bbcb29fe72d003f1493db7cc4fc0c54eb96c3119c572941ca5f", + "0xb87363fdcf8b64269f5ff35829fea7607ab47ddc09a8f578bf2868edcaf57641", + "0xcbf4a7b5300cddaf09611baa0a5c60cb12dea7766ef1a815968fa6cdcb0edeff", + "0x1ea4d193adeb12bc50607fc0fdc25c1aca43d97b74dcdd33cc53e206f846ab07", + "0x3d3c830a16e2422755b8beaf4fa55c8b290297d113e687d9e6641a9d4965888a", + "0x5b4038f6c8ae5d810caa842a9086a80dc2e33b04817fa36ead553d6a80d8f153", + "0x7f380231c3a6cbd31f195a5decc89f5c6aba16ece2b42da06b1bd2ac1d45eac7", + "0x190239fd32c27e4b267c48deac962f872ce190bf7718baf7913281ec9691deec", + "0xe58df321ac6ed705ad3bc8a2208e5eef7c5f6c0b94e3f71b6925f8a2687b0770", + "0x9de481bd70ae4f26539439c7bfc857db9e367b4ae2ebc56710f9261ee8d98118", + "0x30ebb04d674a5063ed539dc73d31c4e7c414074d102f022388548b7058fc3781", + "0x5992f81ad280f18a3f87f65688fba05fcdfb56603892c7a88e77ff8c2cbc32b9", + "0x25abc5275f862e48815073b9fe3c4f15d47bfedd9005f43a277e62f8224449b2", + "0xa3ad68a3db617e4b1c512c921b98c9116ce36b5a9107d566fe479c84a9ce7622", + "0x6abb1fd095cd271a4aa6e26dbd526d75d8f836ee90905c6a5f667a061442f4be", + "0xb843340f70a5ffba65460d6ed959c03bb3d11a5d897c2d98e148645ed7d3ba4e", + "0x8ec990099c79a38d51ee78975011ab30cae174db7a17ceba392a5cef24fd878e", + "0xb1b6ae9cee08973e448abf09eea43b92d0eeccdfef25e0471c20827cdf43a759", + "0x8aaeb4141887b7ed39ea1ecb0415b95215133ac9ebdcbbe244f0f8608ed07e22", + "0x5fefc0cc93aba8d5832edb2f20e556b00dc3c0a62133a30169fbaf345e028fc2", + "0x36eac0aa2192f5ed51e062b9bfbe16f9e4e77ec1fd02d5346e4efec8ed1a55a3", + "0x70b543c45187b8361bcc5d57a182eef1246e8ce3a57b3d9c9f2fb5bbeb8ad7cd", + "0xa869e91844a8dcbc323426f53a87ea7ee737d05b7da44d27ebe5e9dd1bd68c94", + "0x4383733b62da92ca95dde42f5912461d58cc7b6e02d4886cbb1633e7c4e91938", + "0xa7e79ebca20b363568340fa3d292d099176023b650bbf5108112a3a45a9386e5", + "0x6f47f6ef09cca3ea0d758701380cc8ecd4a9caabc78c71cee20b12f600166c44", + "0xdba2c0a135178a8714d295e1921be53ec23184e933c0e872dbd2c73ce1c65167", + "0xd441973ccfef8cb6bdb5a385d6e18780268544cf2413a3104608f23de4bda477", + "0x310f2b843c19ee61ac705586647ba11b30cafc0e761fb5cd853df079e3232ae2", + "0x9cc003fffe6c8718710bef9356432e2102c2cbfe783e02e5b2ddad299130b553", + "0x4e8d34c5bf52a6aadc59441b9583976fa619aab95ede59057cb2cf99bce5c1b0", + "0x967a05f47e2884cc7d9a12c1626338cd818b1cec458af9e3df5490373adaaed9", + "0xf505cdb536cfe06c0399e9a81d1d70d13c716834ea3593d1565f6357a3ca569f", + "0x7507645edd82b46de060ad0725bf4d987598242d9167df8e842a2231828ec1fe", + "0x3cf03c8de7182a733f4d159721b14dedacc6f042309e3ebfccef049e2c5020f2", + "0x271a063eaa45d12fda3b36e8941db8ffb6e3312cdccdf1eac587f7f812500266", + "0x5b8159c437bbd7fab286c205a922ddb46d2b36ce9fe026ec8c2a8fe32b1dd058", + "0x5803edfa4c5fd7afdff7d93abdfeef5d4b24ef381ef44375c6c45a14267661d4", + "0xa8bcb46a21f3aab34fd0023093214739ed9cb31c9436b9ea29cff49668ccfef1", + "0xfb1b3d562741a4c053f90076fb98f0de53d022dec82b3d022d05559fae297fbe", + "0x9a513379bf4d22593cafa4c76872404448d5c71f0fac883985b5528bf89df7c3", + "0x061fdaaa08796262dcea10fb107e319d39b58e6e81f4e22a5bde2c36f092c300", + "0xe8e23d389c313f906d4bff516ee505accf61d43700bd76a35ea797332e26dfc0", + "0xbda24139e3cb6492536baf8afd5944a5ff5d6347b4426f208d0c5f711ccba6d8", + "0xd744a6e5b4315bf2e0a29ac298ce1c1b7947b9b146bdb8dd5edbcaeabfe814a6", + "0xa441545150c5a8754f10c5e41804608062af6c779712f959793c4c65c1521578", + "0xd270437aa6daa27eec4e4da26cb1c0e8f2859aea34972bab45aa8d1aa37f177e", + "0x3b5ef123eabc73e19cd1e3cdb1bf3249535e9d01811ba0dcf50eae6b22c97929", + "0xb0d0e9e597858944e92b1c2328c9cff5bc10ff37a75b84aaf4729ddfa99a9797", + "0xd98573087a3df3b47258862354819ca399e0379638112f590bbf77f54d754bf7", + "0x0f2ae41274716fa68c24a23b24fef8e1c969f76fcd803d69898c8b03251ab6a7", + "0xa9bae84958088e5450b72c468501f5f6f58cb9d1550277b68c79ee481e3790c8", + "0x44becf48e3a7dbe386e5aa571d42ce408bd536be5bec88a29f0d7c4e64c02347", + "0x76efa9804b3b61aaf93a098091a82e489c888050262154bf35255e02cbec5f86", + "0x4bdec2826c587eb92bcebd658beb6a4eb80249396ef0693af28a5d4e5d2e967c", + "0x099c77576b5b731efc552511c1ff16fdf1badc0c26c34bbbb56f1c374176ae66", + "0x5cf461781389c0628d0630ad8adca64b51bc8b9313afd1cf1e6b0aceed31c70e", + "0x7ff9af4c236acf6c74b1977b2c4308cc8b0248acdf9a371263ec77cb480ed9a7", + "0x81be4c30bdaf556c520aad3c1b1f6cb6857de4c8fc3b64ebc8095d3767632636", + "0x58aa72dc9f5a07e6e20d7a8253f771cfed9745ea3b4e0ecb31a22e9ae6602d21", + "0x718d9f720164a0d090286d6f199158a99c0a11d361d136e2e823ca683f4c4f1d", + "0x059b9fd379d28722579a6abe267c297d841639763c4f8dee2d22c4c16200fca7", + "0xa862c53636c7d025f1744404cd467299a1741f03226f22cad48a3bb6616c8a90", + "0xa969081a884282f064aaf9fd279653ccc9e1f21a1648878da5d0c64ca37d1ad9", + "0x714c090b8694bf6528e57ae34debf38116198df1b3f5434f1267def29bfdc59e", + "0x9580351e40b3a4cbb24899d24e544034419db55df0260f2ea8a019019c4a4bb6", + "0xc18e1dfd3b9b6d737de3822a8fddc2f013c3ce9d43b93e23386bddc6d5adeb8d", + "0x2fe3f88c2506319f6ac4de9eda256457205a31903833310d90d594096c8aca6a", + "0x9462b4df622177a3ee8811ef00cf7dd3f10f39f02abcb49b45b247e940b8603d", + "0x124714071262f3535bc3681df4ff64e479364c6573edd2aeb5bf20e99038a3ba", + "0xb59ee1da82b845b2a39e8be37703add9a511cac7f326d2eca7df454ba4438788", + "0x5ab4e66aceada0aab89bdfcaefc973542036f2e4e6b3d24d9cb2d9823fe6313a", + "0xc862a93c669746c82a9eb7a7c482916d17dc38cd146d2c8f9dd66084e7b74054", + "0xb1a5ef459150f35ca49a66c60a0b8f67a931a622bc8bc8fe9ea4221c7c18d804", + "0x7fdd4fb1bb717b0bb12150d9992a92396e397b05ff1fee9371763bbc98ab6fe9", + "0xf3f56b8dc466fce08727886ece3560d7e98739cfa1990801351555b162c161b0", + "0x534ca5836ebc01c872204980da4ac87fc738a03cbd12d6356fc014e97c59f90c", + "0xf768a756d4c804a29fd5b2d64ecd9719d425d1067235374c5cf952109c121404", + "0x4aa2054b44e48a4cdd3b4d4a3cc19cca2e116b585fa874330aa221650f92d4f3", + "0x080cf4340fbfcf154e2888dd47fd7fa9eb794d3caefd60a268f348574227c805", + "0xdc83f6d0b206768e8881af1457a16e4d91a7b9569c88d852356fc59c67da105d", + "0xd6f633fa1b9862d1b00c3eb015bcdfc383e8bc0f7a6e020d2461520c61f29ddc", + "0xe1399c141556433ec8fbb36b0096107d590384c1b22f83e76b08f84395c69fb9", + "0x22b6ea1ab84ef7caf066b12efaa9a7fe9a00b0a84b361bbbd8b75991c641fcc4", + "0x9bcfc0a093c6f861bb53fdb8f1b25e6a64792811555b724393ad0266659d0483", + "0x1de4a1c19c2342dd68a9fc37d1100677982ad975d4100381150b2058bc3f230f", + "0x20c30870890f8b2970ed369a91475ae7f79cdf9657ccd077c79c586bb71d7060", + "0x3b3ea1b91547eeef42b69a47b5f6e9751018dc2d5a3b9b69c4ef1c109cb89f65", + "0x9d8c7bac0207b0b2f13a412bbdb0cf8d2133f48231396f05f8e1843da8d31da2", + "0x0d7d9e0a598c89200f67d42aa097f4a229bc785b9aef2f710587b25e8d1f800d", + "0x4038cab84d4c1bb9d849b4fc2fe4128a0071ee68832d0bc60a463b3180e0369c", + "0xb95a96be8d5cbf74ccda4d47c52807997c8152e204dafcde90e302c61de5a35f", + "0x3aa264910a3904368ac05c95ceeb96280f600d081f56f56682a9d52c7919a7b1", + "0x113a95a67d268674751fee8381a3c5d62932cc40a77531e96be91927acf0264e", + "0x955a1913360a1cc67110debf9a30b069ce27cf2fa527e6e4c50e7c0a1c656e3f", + "0x1a463b022f31a39e36305ab969e6889574ebfae8857323e089b58b6f228ea939", + "0x1ecb0e4d7e29787c3972509cce760181550d8b6657687a04402ec52a546d8927", + "0x662480ba5fe2f06a7e97d111f9bec349492ba005ec7e427f34979a7f394bb2db", + "0xa268f6633eb777d1e66cc5645a92d5f0f2b70101faf27cc801a8b24675f71099", + "0x02b4e8a4938ac4c31b0d8ef7753da5dcb3675306709d569581e0cb373a3be32c", + "0x78c671c14bd0d8fa378294c4f00e53322398f156e5a8de7f73c6af363d1f45f8", + "0xa939c556156ce686c26e7db69bd8e94a40db88b3b8d5c310cda3abedbd0e7513", + "0x91fc8f68da57a3615b13b3d548085eea8e927cdcdaea432a08eec4013c2b3e59", + "0x29f3169c4687ced4cba228ed0e26fb8d24dee61c662b029b4904314ba58481eb", + "0x165ce1a68016f0d3365b2eef27cd4cdb9796fce85ea9c523ae3153b4c5730e9b", + "0xc3be6f4920845b082e6b9fa367f0e280a2f99238f3b4da80579228b6c4ac7bb8", + "0xf6a9dc76b4f84660ead26ddfeed89808bb08450f3b0377eeaea1ce711654de07", + "0x6ae0610a733a17ba561e65b82f94657c6b7090e8543dc794d3a57efbaafa22e9", + "0x8bb89307318187e3d054d4dfc251f5f5654107e2d3a72fb22eca41671f65bb1b", + "0x13396841e164da968eb88e5eaaadedbd59eef8fd2da1f34a9adcf22f31589fd0", + "0xb1320304bdf53e1d57c3b97349b7ea16fd19c57817a247428a3181e5a85202aa", + "0x7440c18bc9d6b70d4483df41593511c724a89d29b4eddb48476067bf4c831f5a", + "0x23b967b23b553f09d4e9ab01848f7c0c3f2dd35c62b42df8e02e1138d62ffb7d", + "0x1405e1f362d098db90243b3a1656344b80fcb07f6e9bfcd910f9de1ceb0d5c8d", + "0xaf842855c8a237ff1d6a18071ca2588e37ff2715891e3d7d4a239e44acfb0472", + "0xe22be6d60381d62ccdf2648bc7bb6b8ed0d4679d5cf66e8d05af0180e183d2e9", + "0x08d080b1c3829f19882bd4100cf7073503e313982489ba23f7f8b65bb230ce24", + "0x6755d7c7b4e08538759dad8b9dce268296d42ccebfadb21c528ab38977836418", + "0x380e7553805ac401b465d4708563b042d856b84a0b1a82647db83267c9694604", + "0x4318520dcc73a3ebd9ae77219aed288bf4b85c78b380c870894fe5b98a9fd36d", + "0xc9d722bfa751b190504bafbe66355a01d5e3dc4c016280400226706355386781", + "0x8a5d0058ef51ee9bf858a7f99ceeb37312e341a5d3b4a4367ea272199fc5659c", + "0x006d42a7e60a8e62ae4d6eecfa2aa3e1dfa6e72aa955f42642bc9e929b56e978", + "0xce139c6286d66928219167f2844bbd9ddcad62c90adabaa249adab681865139f", + "0xaa186ffe45e1f583534bdb4c863ffc1b3871627ebe36cb04a20117f65bed0597", + "0x363ba0bab9688ec6a32cbcea7926c8ff63883738227a27b46f30c3176fb4941f", + "0xc53fa178fd4a6d28407d356a76b2b222bba2c91a40aeea378d011c56819bf3d6", + "0x2e911e80b5221049a32c54e76b6283b7a0d7619a5e937d4dfc0c3bc17f173723", + "0x7f42cc501f58cdce23203358f7ec9c9123c0c1e181f1910570b66e1cd8e2ab34", + "0xe78b6f562057f85696246e3d6e2050dd38edeff50a695199b1cd2190cd6412ec", + "0x75f5fd17986d3449b642ae4e3bdb0c02c7277678855a1f2d02200d0bdc4cc2ff", + "0x9c9ff244b821a66b672e1290c0157e09c7480c2087b5b24275351f1b3273aaf9", + "0x4836c8c912882f4b5b285803395fa356a13a868d6f1310a179fafdd621ab2a13", + "0x1604745c79ad3ad2a69bb6ad6587302caa04d2f926218592bb18ef3a0cb5b078", + "0xde7f126b0d49a12f363bbfe2eadcd411e2d4f50e0c3d87a80f303790949b3a2b", + "0x03f400d75cad3c915236e9902f3e8583d3fa4e63f78a23fdb7e9f70f3c113128", + "0x668cfcf9e1c1febe283538375432b7a780a5bcd76a3f5d869f2379a109a8f400", + "0xfcf5cbc3282bb6773dd13fc7f010be269539b9f21be617846bb7a5d64ef18c6b", + "0x23012fe4732216125343cf8b01bc90a5423744c34e74113cbf399bb97cf33e8a", + "0x4beeb7a956a80f28ca8980f5464d54a57188cadb7a36ab4a24dc914324c16640", + "0xa80877fe126d3ff79ae533198a73b419bcb4d509fbcfd7c0698690c598d14e55", + "0xea1fd8aff8064f832c452ac88c1beb1cf6dee3fa9144909b2ae8287ab1b8d2be", + "0x5b8520c4de8c98a524981bfe76d9c00ad7021ad4f0b852d437ea47fac689b494", + "0x5e8adb9588b81b6fe3aa1d501e94f15cbaec23ea06121fbc83f909057de080b7", + "0xcb719116bc94c258a43058e4a526ae70b0408693b586f6b87c12437e26d3d5d7", + "0x5b57d22bb3649b04b421b9574e5261d6d5021a7a6583890b45ebb1b7075bb28f", + "0x86a1fe15fc2a2417a87a044aa935d02553bd7dc43cc6b38d417f89ffec41afe4", + "0x8a59ec0b6a74d535a9a96c7b014ebb00485820007ba983bf4390df46a2bfcb62", + "0x4a21481ab25bad53f7f5efc4b57f1377bcef96a412036602525393582c36c255", + "0x53d214771e70e49d0bcf4a2a6bdaa6f268161ce89e69898b55982b4ab9a868ff", + "0xea794fd7cc5d6c8ace8e82168fd8663b2399279ae9e0f17a427f75562eb8538f", + "0xb3e76b97ffc51e4787bdd378e5efc1afab206f670948329fa6bf69577e5c6613", + "0xe2b89a9a044cf001e5840fa9175669a4ae55b0b2bb109fdfe097027eadcb31b2", + "0x2ab1f30724c79d09163b5a2fbd5b2ebdef7c88414f7e4fef1b99c4efe23a71b4", + "0x09def05f239c66b1ce35666e534f09f631dc1e05a89bfce9b7eba4b57e1de5cd", + "0x0278c2926b77e1624393c46f09b995c24eaa957b2fe05ff1db5938d967f3cdd4", + "0x76ce194d103f7fb8f42a8fdbf2fa587f949f23150a34a0912bad635199fdcbd3", + "0x44059c0342dabc5a51c7ece17313860b4501453dff5d6c8442681bac25be9b3e", + "0xedadf66e234e7515f6b9a1476a5c937755cd667c60fdf338c6f1502625800c62", + "0xcb739f0b6d65d1fd0bafa69437e729ef5c5846e62b55df97b1986097bdd36915", + "0x3b71bd9c9e479bcca3275a12005b629d87e20bffacbbf3ca2ae9804b4dbc4d40", + "0x59a19969de9f0ade2384bec9c774455e46aa774b9755063526b98cf8d07f81eb", + "0x233f00a42c674a36053a43552c93d9beef3090cf3ec74190d0ee34332a72cd4c", + "0xa1ccca2c71c314edf251df629b8d5c8d1c861d3c29a67743d2a4fd7cf5b47ac4", + "0x13e0ae852a0c22f85555ba69b747b303edc1fe981390caa2ac4b082cb8c959db", + "0x6df3580af6310948e36482fdf09005eaae7016c21ee46bd2ade3b54d027d2bfa", + "0xc6f5f07b379e5497bc44b270551061d6f06f660319f3f3b44580dd998179a50f", + "0x9669432bf5caf88ded238912a168f70438669df23bbe81cc80ca754c37c9dd8d", + "0xcec75f43d7b594af760370ede82a47ddc673c06390a5f781c36ac1c6e221b01d", + "0x8094dc8bd32c97ae7353b90f910b32fae2d4eb0d189e6864a93c92ea10db2ec9", + "0xd9670bb50d0ee3bc1e2c20dddb6dadf6664edfcd72fd682fb8def859c5bc27a4", + "0x7a44ccce092d0a9a0d0724fa4075ad354e1375ab159f902cbbb91c230855c8a0", + "0x5ea5914237acb8cf171b872b5cdf3ebb3c8a663394e8317816c429c1bd5e7099", + "0xdbcdc35576c3b3da8e8269e45337f6366bf67423d695c1a15317f922f23ac4f4", + "0xbccfbd34105a3b9977573851d1210ae3331c2b36ac8fe210d3a30fd398dec1f0", + "0x12a4844dcac185e4c45a7672bc2e6f1ee36e1c1016e8d317e5798810826c3f3f", + "0x2e5dc9ac2863a598262a9775043c59cd80b887d8ed8a0bc8ec68d96aefb91edc", + "0x532fdf6e4641ef267dd67f80637b464313e901c9568772f42415710204b3a856", + "0xf4c86654ade4f2cc6b456b48db328ee487329b3d8f3a9d5f2176b11bf7dd725f", + "0x9adba701c6a53b7819619ca2ea25ff0c37d91aeefeee0f095a5451390e5df4ed", + "0x2bd3b170ed326506a94174425aa570a8321918ba1e03aa53abea8763ff589dc5", + "0x7cdf7fb3a35b61be41c7290a90f805260f2a2d81dce6002e3fe8b708e72e1dc0", + "0x8d5ccdf783d5aa162dc26d8d1465d4763322730a59ec7f282be71b02aedf9f3c", + "0xe5f4a15065e3a6783115a27a14ecc91caa828f43ac7ab8adad52e09c4aec2f85", + "0xbba853f33a286a5587c066d560fa553bfd85ed332d75df02c8e4d349a589098f", + "0x9d7237315d191d8507d7750e2c8e6dba0bb3319dbe4c2f0622c95036e634b445", + "0xe5668e0d8935b4967c5408c8838dd765c55fedce083f4dbfee272c8c97106464", + "0x1ebe355446bb38959b25a51d12fba915b627d7f25ff6aa6b8295ce492b508697", + "0x166a938c186cd8048257f92ee9192c6a9c3e896e312aa9df0f2898c43a7e1bec", + "0xd3147112bbd14cdc9d7934790007e139dfe4fdb8ce44f4faf372087e3ba395f8", + "0xfe8e7f405b68bd3966154259a2bd2407f11473cdf9670ebbb4a4bb09034df174", + "0xa173ab56a6332f0814b4701352ec22e8a6d0bcce0d13e3b74e45ce1b45549141", + "0xc3984af5b47a865285ba2c1b4df82fc7a6e6b09382b8dd465b2dc657a1a8b04e", + "0xf1955c0b7051d2ac8b86f6e3b4602fc27bcb130ae343055d0a3de78ee913db95", + "0xccaf3436cab712925b8f350e985120e05a9619e398ef43414fa1d26390d7fe20", + "0x88210a78fc14dcc3d65c919786d107288de40bb79b2d2bb09ab2c5e1c139df29", + "0x8d0ffe25ed0a585feebb79f8778fce6382905616563bbb8629cbf7ec5b29d51b", + "0x55b93d2c7796ce61ee6978ce960617a21c29cda241f53753f6255d89e2ededf1", + "0x4a4fe1acbbaa8b14445333c332c4a6832fd73397a728d0b3022dbb4f1912ad81", + "0x6d48c2f6953fc4841dad7ab81b84b96e9553b35d6957ea1db4f8bba31866bbf2", + "0xb25054684d400eadd8b4ca49834d2233ac3c251e9acddc2911ce5e52c6a4a173", + "0x7c9f6a8932a5bf13b28aef6dfcdbfd33171bd185ddf9b64fb16f5594e670d174", + "0xe40383714634f09796367d01d224444648136e5862926e146e82edc8d57309fb", + "0xf8837e14126d53efbffea441ff94c9d4afb0d6c99426ad1e3fe2458f3b61aa4d", + "0xf18a670a52f0b91abf5d4611d6f26bcb528b56311684223fc8c82f24bb042f82", + "0x84ce97283455aede3cb3e21afacae90e0ece81d9af4b73546f0a4a62f53424f4", + "0xa39cae777908072343ce11f6593ad8458910e44a9de981aef0214e192e510366", + "0xbe6aa0e55cf02b0a159423f1ade1aeb8fdf6867b3dc62455941c534302459a1c", + "0xee33943ccd188913db3733e9d2b1c055c2e66baa780d1e68bc8589cc5a8814b1", + "0x66d5264aa8273ce5b3998ea110d54589e615e065502d2594bd90eb95789abf06", + "0x60e02cc54a0404257a86b6ca33a09f272ee96fbd5cb4c012ec813739e31bca4b", + "0x57a26b6635b9485137582875afb296f2fb864fe3f8a5bd2cbe32562f8f3dd385", + "0x417255e3ac1cf38c014f3b37288fffc268d554d54b13c46e9c2b42d2ebf596cb", + "0x0859b744191e9948a2a9e2947ee60e427260257a2a56e2c7c03841ac1c4468e7", + "0x0b81dc3821176c5a0e7e960786056e9918a3650f0584930cb0b89059affdd0b3", + "0xdf7faed41fadfa0577bc756e7af556fcf033df04cf8459d6d1b231104b77a733", + "0xbb5b876859de7ee7dd882f085e349760c7996ba7d0a829e18fee5a255a061eaa", + "0xb6db25cc62e95b36fc219afd865de67e7c40357ced0feaf7eb151a6a82b6e616", + "0x07fe6f23359b19dd27475dc2b82695259e8d505c1f4167c490f00a23a9971217", + "0x67940189346c4f47499057313bc849a4f69d28bc4f77370f113ea8912bee1191", + "0x077d45f39bcc2196ea3598041f4a31e5c8d00ed661f20520722ad78ede7c887f", + "0x5f5da7f14328252ab942c3a7ecd11d6b119a6c259d992f986b1a326ecd89acb9", + "0x58c77aa09d0fbb009eaf6f658fa3f60d0d9664fe01b8d32aeb5661d6403449f6", + "0xe077b8264813c304e996e5b127a03eb752f8b9867c25528657c574df8e7c759d", + "0x68ff6d81a23952e262fd32e80cda289bfb36b434203d1b85d84b908d4353f2e3", + "0x2abf132b2121dd67a86b8a32a9145c586c41052f44424f6ef3f9568aef12b2bc", + "0xfae3cafe107c23300f72adde498ca50ffbb287223f55c3564c3d0c1bce29e8dc", + "0xe0bf584e38f84a2d4d2638fd5470dc0034268581ac088847649d0ea57542b1eb", + "0x66f9050a45a1d17d78533f5376d97acd1ef3e766baa0389f24d21dab99b4bb0f", + "0xacb8fe23999be8fc75202adcb0270af88fd7da59c01d7020dd3d57cc32f7d2d8", + "0x58112f5cbf474bd9460f04a119fa6ea6f047f4f44ca73b104acd2a1fe83720a2", + "0x48022409864ccc25ee8c1eba9c28a7e4cc565190553c184ffa4f7b038377e640", + "0xf1788ab3076a2fcbe377f95d770e2058d2744b3e076852f23226c1a22de57f7a", + "0x20533ed0965efa1ed3ad4a2a702a59d007d0fd3e94f5ed2eb3b96cfd1071d97d", + "0x90c67ca3cb37f22540771d87becfe1b4448d3ca3bb8bb6351392abd73cc573e5", + "0x809ee1a4362f02abf1b679cb61b29ff396f3856eafd79149e493fb4fede3059b", + "0xf853ec630dea66b272ec942b3772b63985b08813934c0e21d9bae24d8b6db367", + "0x3fcc0cfb7cafffa7ae9289351d42e4e965e9636a924fac77796342349e0baf10", + "0x228cc6502f3a1c19f532f0dd670468d7b5289c2758ac425841c0f6d1e94a34f9", + "0xd2654a3e2552fd87358d0b8ba95e16dbaa65c7bb79fae48f450c4f5fb27c4032", + "0x62d1021e9a6a5cbaf30adc9a450ab6bab9755d4421136684ade76aaa354debcf", + "0xa1a3cee13da4846536f4f69b95fb97040efea89016e7f3cecb2f497a5d61e128", + "0x4adf6d282db490aa075ba077e2dd106e5150dd4c1198ef120226c56824162bce", + "0x94d2703e917bef3103a2d8f0b8bf71e4ace0d5656f60837378d791a90ae5734d", + "0x687bde51927227ad0885ee15ed6dbe7c122588d8ec6905c6b55c3dce8457ec47", + "0x0b8d6a8be92322a923b8530a68d1e650b4576fbafc357e894b34fceaa03a363d", + "0x96dccf22931af2c16a578cdbddc92372e41411eb799e7ab61a65dd69fdc905d8", + "0xbf409de805f7d48ae5cdcf4de165ad84716860dece1b8e91142a184deb7dcb7c", + "0xf394a819276f59a5f4a5fb87229126778f154b90cfab2d3e214a07dbbab0d11f", + "0x14d5300f5ca4a29ce0e5d16acd43a20d9d0890e8466d89a65853f0efdeb27ec1", + "0xf71203cbd2b286342e8c9996595dd5476a84128b803264f43a71c8c48ecdb706", + "0x1ae4464000ca84f8e981c4e0c3a0fe3eddc830ce88ca8ac050c5d44d1259bb74", + "0xf34ad422474f5703f65615423e0a3e889b6627fe9dc282eaa627ecb0405d14f3", + "0x8491f05a58ea8d00c38fe6ac434919db6e9433d7d02e535701bae12d13ef176e", + "0xbf4fa62763d21ef32824c980973742b8057566054abbf3e1a772e25b1cdc73fc", + "0xe8b2f9d73154fb69a3bea562d6ba7162d824582c23b21433c9ca504790e1ed9c", + "0xcac888e4af9578c4480d787204af3502946992e27e2f892be8c3332c2f49fb7d", + "0xb5ed774a21d3f1691c81f7f4bb201166e969d26e094c8538655808209ab70130", + "0xec88c9bbd6a8aec177d36de60770ebc121276f189090ad524dc522009bd89a07", + "0x083ad1d943ef811a011c2bd28454002cb29b06239918e4f43edd33e68a33ee43", + "0x58d67cddcf94940b080f252517aa07670a3662e3504410d9e76e50458ac77d98", + "0x0a6c61586afe583bb97299f6ac28681de60dbeb1c2432cd5ebf9bb0e5a39ad09", + "0x0d1e2ce99424a09e28155c2aa77ac4147f0391d53d52034f8ba8c4cee7132dbb", + "0xab5f1154eacf26fc973e335d99a2109fd2e877c95ec54969e45991e8818e6ec5", + "0x5e408f7245667770b2a25c81014651070afefce64790460193d6445b536a2db0", + "0xaca10e3b3e0c99b4ca8aba538a2f6919341a93f8a24ebbd8f6fe685bb5a7ab95", + "0x81f6744b553128542acaa7a498a33a6f90fb0c6df6cb8fe29de0cb46aacd34af", + "0xefa48a9233bb32174509a666e735dc965d13aebcb24ff69e352ff03cf1d73e9a", + "0xce46f7f863c56f707bea41b0bb86dacd36754ef2b86c32d7ad0dbc40b08d2942", + "0x50c08c3572f9de38793be735e30cd7cf96af4e520b8473f72a93715ed93388d0", + "0x224d030da1f6b7657ea86b22792193d8f0e122cf429102e6c47df993f44e5d59", + "0x0dc8e3373112b803564996657cb20664455e29637e8d45de1c3c57e853b6f87f", + "0x9839b40636ef870c357e1a33faa6dec71e391187b15f170b6d7cfdd0fdd9f4c4", + "0x4c5612fbf36ffa2b0067b2588bfd12917de598bb7af9711db64a81315667d0eb", + "0x85c244b09d9ee4e7725dde1f9039d5c2aaf31598dbeea7f010e28d2dc9081b89", + "0xd26fa5fe42f80d525e4816379ca34af4a89f7296e5714759ac9af4fad8ba1acf", + "0xc3acb7581558677e73e6f97a3590b2529c583f409bbb1d201642ece3a4be5572", + "0xb4d4918760bcf2d0a28b2b8193814c4320d37cf8d35aff4e6a898d4ce3889a39", + "0xf7bb6cf892e638b1f2c304e83ca78ba647b93b63109d341cf4baf63fad3d02c5", + "0xa7b7c639cf65879920cc1aa3f98f45feb702ecb119d6ab298853d0e20377f1ec", + "0x7b2e005aa74d2876cc4f0646c06bc59a48878774d08764c110abc8a50a92d426", + "0x76ada65e0386d48d3c867df6d439fb9bb1a608146707d8052f4b080c6b8e689e", + "0xa6facbee4a65f08a29bdbab400fafb2deeed1db89d7faebf2fbec3f7cb425350", + "0x1b2ee7aa4ee7e04ede141512920961d66c0fbb0c348f6f1cbc3ad13df48dd1ba", + "0xcde762c0e376a5b6dbe271d4e2a66892c5f72b7c75039344399bd755ce68eca7", + "0xcc4b920ad5933b3d0d327cabc3eb3fd34969631da9d2f06c331c2756c39a276f", + "0x2802d6e759d9529748604aef9b8df1e77cc7d18f691bcefb158e4bd7186664bb", + "0xc5726ca8d34ac73ddb8879245fa250490e351a1f4582bf425e3f7293d583fe7e", + "0xa906dedc4bbe7866f3c462828cc53f1b93104eb728add1f2966d293a2bcb74d1", + "0x72318ff68e055276964e8d3b5e168e6fe1c74312b599056ec8da430a85cdddb3", + "0x62ad64d2fce9f80e3019f351be06e7351d9785b1d637b73069a612b78939b350", + "0x89f34063b37ebed1c26903bb1ecd9d69fe6998917e8293f91ab30e8f0b07ea39", + "0x24cb61d008014a5f51a9b116eb6932fccd058be0a5fb01f90dea1e1a0017ab34", + "0xe21e0d06f20dd7445be5ea6793d4d8beb74417480a576fdf42a86a25691fa80d", + "0x7189ac6c03e856d28163ff6d6c24ab1cdeeae0148e00c069a8d42bab48c97240", + "0xc5d1d37281bafb991bff970fa977476b25b0ab6530474c3d808defeba7f5d77c", + "0x66a953220388e4d910057d0e5b5c6e20a8f94ccc6f3b806788f7cc4e94a7e8b9", + "0x7da1f7b2682d44775fa3d576a05c42c8d475060d87fca19861c75a10c0378d6b", + "0xbb08cd7e8b0fb9302488b9d54e034094fe6857ae62ccfe9c25634768ab23ff3e", + "0xd26d8273e3e4065a40c867ebb3a011106d550ee05b08f65bf1045b47373d1464", + "0xc30068b4ff924dfa708fce01b610aa6a0b8f359f11e616e6850078a602c22027", + "0x583db9f816b88ba25c59f549033fbc003b774650d63e44fbae2c4707386cfc79", + "0x839b943b0137db53e6b7df9286def81e772863ed5d6c90c3963be9ddff133af4", + "0x6f0eac2fa9e03c0d192e8cac846e798f2f8a78784f7ee7bae52b57385970b840", + "0x9d72d31f4932ab3d5f8e440b4dda759ec5b1b25a1e8ffdc790b14e41ca35138f", + "0x695403d015ba69aff26afa5ecdcce55503fc00518a38c088100c4f480bf94514", + "0xd63b618eff90747ece1d0b47a522dfb6ab5a6176bbfbecf17426bcb38e8d9a18", + "0x756e0663c6545869f8786e193245915004d4710b4a93150c42684aab2be0f6c3", + "0x7715a46068d56b44b396802eeea1c68db81bbba1a6dbaa8427e61170a24c9e4d", + "0x495d573a167483b1e146600e617b6ee02d4251ffa22a0d6d1b353ea87bc5b9db", + "0x0bb82dca3d49b7ebe0eb6d90db38557864530257ad2c61317f51141c5a33f9a0", + "0x16070c602b167e7f1502c6cffb4522b1d7d0c9b3b5593c55e2e692a57e450f92", + "0x29e503b966b5539890bc4ebbcac1056ae47b8a84183d9fc2c17f1c05fcdb94e2", + "0x9756fbe6322304f743ff0763922e7d13773432bb2be64764001415cfedd1425c", + "0x1fdcabc4b94b12cd9b9a028b11a2f790929793013c7e361c0f839489ad254302", + "0x1bbe892f8b1916f711c6d70c31b1c3e27d8d0546ab85bb0787d58bc43f699ed0", + "0x985800fe0abdf6158f409457c37cced1b4e246806ea0d72f0774e72369be1160", + "0x8d39f8467d28dff357687b9641bda4f514a3d1ad1922df02f95bcc52f181ca54", + "0x3502e2271a684b787e243a20e5ac22a3c7b95649da2931bc8a5063b78879f7f7", + "0x9beb20f3dafa156af31d81fb8e4f3f3960bde7c1fd01919c2d98f24ad320b52f", + "0xc5cfa5d6164e5d1e5cb3b3cceb85389151dc80f8c6c4e9445836b24e473af0cc", + "0xa57546eda7100eceb3072fd7798141312d6221a2978668a97a247b6e581504f6", + "0x2ba9586d46bed38441e94dc851b06f5109c938591baea3e47de4ff7e60f1a805", + "0xe930cbedebbbc3fb4b3b3f5a8de16ed885e27d8be53e6864919e76b22df5af95", + "0x0fc51538512a095006e99d471d78acdea3dae62e5185ae2fe1c3a3eb9130f553", + "0x5247ccaaf7367a412c4db0b2e4598fdb151f587197f1433de36c3830c19a8e91", + "0xf77d63e05187b1ce2394619615563f913537e8c02afa23975cb456dcc9dbcd0f", + "0x094d6c3af5ec6794be7e5880915e372514288c31de8916a280d61ff07c7f3d87", + "0x17525c4bf2f2732405cd052f1e91718bd588850ca4f54fc3fd43a5b7383f592b", + "0xb3eb902d635c737cac76517ef391bdff88252e110515a5c56e84e940a721b5e8", + "0x7673b9a000041a364140ab516ca039dde607b80f174f67ff85c18ade40228630", + "0xd39da82e96a846c01821984bc127f8ffd0ebc330950641ca06703669b8d57451", + "0x7fe8cf7691ee10c90c4609d865396314ce29df52f2d67b27f156df3c00902ba2", + "0xf7188c00b7bea23b2e2ce2f8e9465d97b01d94f6574e152550d9d6b55d1c4bbe", + "0x8638a0100fa0bf7609a26adf0cc57bdb5d4f23cfe0b85cb1746c6431a223477e", + "0xff24ccf6c383aa136c8a965c9c662f792580f9e0fe26d26ea7e2be8d62c55923", + "0x70d0adbb8bd87ca574bd96bf57937dee0951bdba3a6a91262acae09e44630dc9", + "0x71aed45ccb9c939883712fd1850f4658a972fe43e35152e49ac7e89bd40301d2", + "0xd322b449315b680ed08f55e782c28150117686891d3c6088f8e3069fbcac755a", + "0x811f0cbe7bfd3dc6bdedcd3d19732688cad12e967b69f401a1110190a6e1377f", + "0xb3c4d5bccc43cbaaf2af2c2a66ed5d8472f58f614f40dad00e34387255165a7b", + "0xca7af87583497566eb41ebc76e410518dd95ddea235c07007df34cabd3d99ab3", + "0x6976a62c198a4ce188a4fc631b19f9cd48de5fb5c0de398ee471102a210ca27a", + "0x23cf18c236f314e35d27da75fb563572789abcd00432a8f1bbda64c6e6e59d8f", + "0xd644911deb0f6615c188b6af13f2da207797b29ffb72d4b0a4eda0bafeca678c", + "0x7ebe35f2cbaf19022d0b7903e74ca4de74242ec19e98d7841d632d8e59dde8f0", + "0xa27e78937218bb040ec0f7caabe51f8d7906b29468bf45add6feae42e8b07299", + "0x30f1bb66164f01e20415030a50ab97162d814a956e11b6da734890a0fe883760", + "0x054f872176a9d562bcbaee63147bbc5b280021e0a4879986f59b83ae4df40346", + "0xaf61e403e31690263f2eed567c7116b7e111c5cbc4bb5d60eb3a787de33e8895", + "0xf1a38f843476227855f3deba6c3f5d26fd0fb707b4e24a96e2f07fdb47cc0c0d", + "0x92087b30f1e6d6eab77a866b1c46f9a3302ed892fb453722ccd506ea9b226e34", + "0x1cb905e3c69008fee40c3a515bb2b7a59a6abe54ee25245218ee681e5a658818", + "0xbc97e9699e64eeb4a4a9866392cf58b15a2bb457de2677bc35d1e0ce65e94551", + "0x8be22cbc0f9c98f99c0a3bed1c04eb89b979c2c6200a51808091e493407d438b", + "0xf5a81ff4b16cb3b8eb6c506881ec324fb0c7ff0777437d959a7e59b1194e5d23", + "0xe1c41c6504ba65485716a9954f181e2cce5129a5ee966dd4fba6f93d3426ac2d", + "0x752b5b4f050e8fc7c4c320713d618bd61977c5df50ba9553c8254f2d867e7313", + "0x628e2a835f6fa408bc8afdc4c8485e31f7f2e3a415cf7d35e5fab43128300c55", + "0x4ac9c76d532893fe7919a7f0e87df2bc9aaaeda6981ad9b28612e46e6dbbe25b", + "0x513462367803ce86643ba7a972e2a1e437fc0d0bafc9403cb1fe388dee013679", + "0xaa6b9cfe94b7acc00e03fa0b456e8c8254211d518f1262b5709382903026487a", + "0x955f02f133bbc61a008b7c792f3195dad5d2c625e1c8d4cda1152b9688dfbda5", + "0xfdfad2a2a882724e049605f0206a47ea7bf44c498c3c5e1a63bc785496b33212", + "0x9674158bc48d35cd4125878933e6a3b5823dd9eb43eb377afd4f93ecb9480063", + "0x90ae20496a2ce74abf0ad2da39cd91d3585ecba7341b34d4a0f6e8158b90bfe8", + "0x5b887310cafc5e331653ceece1e65f78e548354a7d3118b20206d398a3623fd4", + "0x4ff519ea4d5d9a148c82ae90f2d372cfc8cdde48b2648f043d988f2b510a4103", + "0xa54982d4e1a513b39ce62fb1c6a9e3a825a4b96bfb4898808dcb98f9e1988d75", + "0x275e3e6fdba2e002f16e7f7dec933c8f17d1a778ed4c5c38beee03f1193fe442", + "0xa83116181ab004af15bd8ede11c115fb597faeefcc35826becfa57cf5d54e236", + "0xddb6c64c865bcf0aad929f474970a5800dd0369e6de50dee2226b214eae8c52b", + "0x3e3dc4189ae64d4a95a9983c0cb82b315093ea9dd30c562563244f933da0847d", + "0x20ca5e9ae40d1cdafccd7aa96c11edb440ba044f6a2ccea57275f5c3437ce3ee", + "0x1999d24dc88249f02b41e4d730c9bece3267af843e3ce976396f7023951fe7b5", + "0x2b3e6b9484cc45816bb6e66d1f02a10d439502cc14ff393e23298d12a4db16a7", + "0x3e9ed28ec5847afc75a7a451ef4f7af6220f7e4440e369dc95cb046052eea95b", + "0xeba280195fe23954cf38eac9302db972771516d78c8e007236a5d10a50bc3cb4", + "0xc0a8afe0e65314c7d0ae45cbc554a09b46e9b38950df0826234a90010d01099a", + "0x583ce305fe3b025a311849c87d2fd46298f43afca87ba1bbad9f0d27210790c7", + "0x928df61f68f1c16de55447570ec7e102f20aa6580abaa2aedf9fe80e44678d25", + "0x6ad94f79ad779570caea91c6809364574b52e8a57855771505a05342b96e2ffd", + "0x5be523e72ef4721b0ad80e113a68c51c9ad39ba316805e6673aea6e3825e0ebb", + "0xdc1435b62dc73e79f36b66c5dfad319374571537f153a7c7bf2fcf081bb9ad2e", + "0x6edf08306c1d14702f0ebdd09262840bec574192eda513bc41deee162e302539", + "0x8f5837f2ad8b6f7333d3ab730a5ad565129a747b9b0eff98ab5e68ec49e96b2b", + "0x9064d478cabae5395dcf24531ecfc8a1fc35006f1833451cdb7f217f2d723afb", + "0x80c477a74be695f84ea5cca4ad5a935458ab9d1a54ff90efcb5d55ab9fd8c791", + "0x45e928f375e30cbad4440d738a02cfdc295c5489be07abf07d0e5391c6d53491", + "0x4d9b41371bb6f3bf2d6d5d3a46437826b44cc8ca50ae0840c749a3e6e6a50502", + "0xe8bf9c11b1d2b4dfca70deae5a0a6977e4cc764febb88f830585e953006b4303", + "0x7983f445b39a66062116e992cf8935753635ffb73d1104d130d27e92e1b309a1", + "0x1202ff855f9b70d3b031349002efc4d1920860a721f07e44be337e9e4b8af327", + "0x17f0566ba5f741fa0a23ea7e9bb7db2fd5db2ab78a37825fab8a1ef31caaa112", + "0xa8b18cc87c7f4d950623f99ab1cf463c18226766bd6e7fae7a7d31863f08fe04", + "0xae68af64e4305e88e46c330d57d337dd0b887a5af88b8145a2537908be75e6e3", + "0x439e0ea137ce29ead44aca5c937b5c8e57a895af4892223d70820710eed063b9", + "0x3ec1b9024d9e106a1b91c6a8614bd64a53d69b080b4b2683596f83edc07dc2ad", + "0xf29bfc05a63689a0d7aa2c662442aee6e17dc9308912b788faf3ceba4ed00f52", + "0xee2c541c040f53e71f0fe074b785b71945e76b297fa2101aacef3ddb8c97ad1b", + "0xf03bb330bdbda5aca914385ea98ca770277fdaad9d0cc34cefc3f533d7aa0b89", + "0x30c4849b4310f0ba07edd0b2c3f00b250347044635888521076c0bae6ad8e192", + "0x503000ef966e2bcd1af2db5cc4ba232a1c07adc21b6a529b463f3a57ec7d9be5", + "0x3397d19d88ea960918a79b6052009a3a17a5a337023b3351c8df7d9940568524", + "0xfa1e9ebd9b1ba68706307e369d541874fed8519f3a3c86915c69cc59382f4df7", + "0x2fb359960dcd14dc8c1d274cfd0bd16f0082e314d7e857f1005000200c0e607f", + "0x9ae6c73045c2f4f1349ff75cb02ce3f0ca8ca5a15a9315329869329bdbaf53bd", + "0x0a725ad1294fa66189eac033e2bad210043bb0ca75f1920a4c5e037a2af4896b", + "0xfda1a87ffc19d7d2bdde6d4f605ed611af6a3ee932c5ea3460e6f252db95fb52", + "0xf4ea036b0a18f0882481a6b8c098b3fa82708786c20abf1f996e48ac30213912", + "0x48efe1fdc5cad08aa4fa80ed5d9bc9fce5cef1bebeeb33bff4efc294f1cf85ee", + "0x578e2d666f1ed2d28bb03753b9448d733dcaff4e844f975098e917076196bc99", + "0x6853f937f8118ae6cbf792d953465c7833400827af7f6e51effe43a6296e3e72", + "0x4539ab758b39945d33272f1b93a1a55cd411fe2f46bbbd1c1a4a36ed36d3a19a", + "0x54414abb3faaaad4a39a20a6b0d12b8b3ff0f55f1bead836492f5cc6f43db911", + "0x47141c077e1cde4cc4447da303a793c74f71aa589b036fbdbdad2f653b391a66", + "0x557264a0d2fbf0627cec7fef01f1759df99cde3668be638113be32c228f37f3e", + "0x3b3789a39a1f9d2140798f27f610d8861a5d7c6be1a04481a06e58b17dbd2fad", + "0x24ffb2fb440c75988d31a0fb7c32b10e373c62454ff1c7eb07f479c733f261e5", + "0x85a67cd24a5b7a10e8efa6d204c78503b94cfbeb26c53161993ba70825c5eb1b", + "0xf097fa797f51848743a29e0d43a50f5d70decc77756531fa7d2f139e6338aa0b", + "0x2130274df2a95c987a32b305f8fda842aaefb24f0d9310fe611ae52d85ba7602", + "0x201c7dd1ee4521630e9e123fc5da3c51069c79dbc185bba1d235e418ea20ad4e", + "0x3d8bf2f10e0f102eee64e475af0f95f28985574b36b33dbfd99f74ecd6e46de1", + "0x37ea6f30a6514f6a8296f6fa5df99e26110d4d7cb64e5467a1021901831f945d", + "0xf70ed7e263cc1a8b8ccd434a73a45ca1d2343e5a09cdeb0ed10ce10a34c8fdf1", + "0x5d549bbef1a42d8bb60085c6373bc7d783ed5ec22f8c7dcbb03a89435c32e2a0", + "0xfd2a7f14f01b4507896ea2e72efc561511f8967b6dde507886918d5afd67532f", + "0x2344d08c70d5c53fdd708a73f64d351236bdf4bc10e53b562edd6bff3f1b6a04", + "0x5f28d7886d96f15b52ef1ed006ad947b84accd8bcac2ef6c32ba413f009e6631", + "0x2255dc3dca94722c129f6889501ea4dfa1c19dbd612ea406421efac4555e7050", + "0x68cc831fbfd2524c0270f16da49a976c355e5eba10e3241e55535078109da351", + "0x59578c32cb583ea049b0c60dce9e645e94ed22d30dfd74116c27835c74cc6bed", + "0xd258a8b1362f9641553854d3f51c052d14d943fb16b83047874631b84259d5f4", + "0x5cecc09b7737277885f1b9961b5378dd1c076f6399e004638ca3374472b8ae19", + "0x4f74269eecea7a58a8ec2c5524fde33a52d3b8592ef023b9252091c0bdfdcf8e", + "0x9f904a7128518d1c0d4826932ac4cbf51d6ef70ffbb31eb94a6e721941f096ab", + "0x2a5eaeedc85401dc05687420839b62b4fa3ab8100ee87976a72f1830365f179c", + "0xf9b135dce4b201209d4233af18a436145105ff4c7b7f99df121aedbed8cc0da3", + "0x71e08e46114da134d9ad648117083ec1c494d8edf539ec821167c578f1297bce", + "0x688bd64b1a1429f49b3576c71fd5b813a9963ee1a5b756abab3c604cc1cdf645", + "0xb887209cf18232cd26fce8c4818c5d5d085dfb195668eb54ac40613f68847fc9", + "0x189318956d2b36f18272c8570a2e2f4de0ffc07f0cbb0c57cd95e6a427f0195e", + "0xa9363a512e7192cd9b5456482d687cc18b9ae12783000b3cde44d68f00f779d9", + "0xbaebb37746a2859526d2a609811bbb1d75099be4d61f2abecb09a9acd7b3c0ef", + "0x2b5aa9a26df8007edb4b26d75f88b25615c01f06afcf1751a8511f03205ba742", + "0x73349b2631a81e7e9eb5530502eda043e9bc56a4272be016b9d5661f91a79504", + "0x22c226439a1c7a3aa9d90d41cf898c9d765740a3e6f75ca116b6c1aed9c68b3d", + "0xa326aa644f30b38505f02fe13b2d918cd4c188004d0f280d482861ae9c9fe62c", + "0xaec66f092a01fbbcfca0082d677062340c122cec346a3afaf3839045971c415f", + "0x35d59e4bcf622a76809b2583ec20aa2bc10886edc989512f979eac15dcad6c6f", + "0x93266148093c25d81d53ed091e9a7468f9b74b999ef276c733d915c1377efc2b", + "0x0e7cb127eb026e4b44838590e4a1870151afbda01ed1af047da53106a8b04a05", + "0x55e95632b8bb88688d71071969e5caeb12cd0ead0f67c3bb1f75c421da4be344", + "0xaa0683b6a4e10fdac28956259868deb5915ca162b58d0e4377cf5f5a0e2f93f8", + "0x67dc47df8f6187049d80eba053bcf1d45ea34fabfba1f7407bf9ae43ac955c11", + "0x9580cf16d6214f5d68594432511b06ec9d0ff7fa0bcaffc9946cf7ffc546263a", + "0xdbb4129a3e593b1e37c71327b8acfc84c4d9c61359557417604b2f9a80327c53", + "0x22ef12d66cf2660fc912cf205d3561cb7b4414886061b4e5e1acaf4650eb74d1", + "0xab4aa5cd0e2dbc7b9a7d9c8c1eab2a7bfcb21f8f2c678a570d00736c8ac62e5c", + "0x9fbc3d8860e660776f794c260efebaa08c2ac8974cc794a8d3953293b3e3a390", + "0x2ddb4ba299d6f3d11739d4ff08de1a0050af0da791e385ecbcf491917c055334", + "0xa178a9931c00021c75869b9503329fb9241c3630c52a8542d6cfe82f8ec03266", + "0x196ea5c5d34e132eda367864f39532d764e55f6fc383e23faef8efea807888d2", + "0x9a78d02d3919f7df2ffe73fc9155b3f2f747506e55376ced38414df0938ebacd", + "0x010806ee3ae253894fd362cf27710d07b5505ff877e8c8b274a4a3952ba3d9f7", + "0x94872cbcdee6ce4d54ab4489d11bc9e16795faa4024da5b398cfe898bda63311", + "0x77f68f228f2691134345af813206d27efecc1557753a04e40e008a0c2d8798a9", + "0x97298d6d5733c14d3b0f88e386623d03f10a6c3d2ba8985be1a2aeb2a75c4107", + "0xa47cbf5a8e3cdf6ebf91183fa7846e13fe7625ffa493a81cad00ffb765b488a0", + "0x41d473c7c817143e73647b031b3e1aee2208ddcd3a815e2d5fcf291fdb2ddb03", + "0x513ca3c49983af6a13706ae02687a7b15397b4832eda6f794983d0b0fe78bd28", + "0xaefefd2d59b3d5606031a2b064d8d9fee001540cb29852807fdc21e5dda97066", + "0xbb301d86a5a4aa2e36741e3f2a613cc5bb1be608dfa437c3612044e9510303b1", + "0x4cdba39041935fe08470ae2197f394b0923d8caaef7272fc28436f6081e44ec6", + "0x9bdab6557da457a8b1db8760586f71e1c1399247fd99d91cc1b9b6e0662b76cf", + "0xa0762954743d50d3e935e1734f523469c2c1ddfb4045e4b0ebc879000f977373", + "0xc50ae1e1fbf40af21503d9218ff9a39d172cb8c56ea69c7dc23dbe89b9ff37d3", + "0x76c1622f865cb08e94e7e7018ccbc42d35aeb6a53d0c79804bdb67d8e062dcf5", + "0x2d2d882b403caa55f52640adc3a6eb456269911626ade3d49c488dc9f8813b44", + "0xc8cf555f828365936630ed61a9763206746a62e27a37693702d1a4475d921227", + "0x718926c6250c56a946c1fd32bec1b4c68693fd4e048de72f52a309b914f63c42", + "0xab5231abb1263ae5511fa8b2d184698059ceb2a7a8017552e9c0ede986ffd8b0", + "0x8216ef510d657a533b70f956e3a84ccb1f1e2d5891337c6edbd1c0b189cf9982", + "0xcefcd43485c45ba18c85f37edf66a9d2c1e1ba8756d9262a672d3fed4a5d586b", + "0x6dc04e851daa30362b6973c0a2854c397cb3a5a636e67a9ebb0d8d0e730f99bc", + "0x5031bdc6fb4267e481032fd03b60a7ecf2752f9e576b26cc609785969312e1c8", + "0x87d8d4342c2586d8c1004d2f865be6773ab3cabedafef07351f21a74f765b57b", + "0x2345e6289ab6555b859ca29288576c7a65f0b7f6b9cd334c853d69babc9e854a", + "0xd5ef4fa4df310a6e441777f88e15b3de832d859f8eb1f0edea4a39c0258ce32c", + "0xbe25e288895543c0bf90523b04ef7861ef6794c3986c226e81aae480c493ac23", + "0x8c7f00d99c5f47670cbd95889fed40b32df59fa92c8417aa993b9ac379273d27", + "0x0124587a58897ac32ba973fa6b517138f24a3acb1e38f79ab90a816b20e1b38e", + "0x5df55f8a13cacfe5f8d757ab6b8f721a3b6593779487eb5ca11c52bf8805f7ab", + "0x34c79e1572da0509c5ec8cfcba07ff666413f2a929b93095ecad54f3a0864fd8", + "0xce543c5ff873c8d5b4acbc0acc2c9984605fea0cba9c758cee8e7aa647337e6b", + "0xfd532b65e4de1338059dc38dd2b91636369e9f424490bcb2cb36f8a28d342143", + "0xb1ab5b925e8896d5836de1a4f9cbd99a0318a9a85c921e91940763b789a885d4", + "0xe29832dfb5416b7c24e67e2f18e49dc5809798844eec2994a50514155f487357", + "0x0807c6a00edaae8679b97e97a998a6f1bc14ae1a4623a73049212a3915b60b34", + "0xfa8282c80db992becbcbe39d38890ae41fe9d6668b9860208d2ae34ac134f870", + "0x3cd9c105542f4b07de97efefecd4e646b461d732dadecaaca62ef194ca7e3e35", + "0xe058776090fbfe48392afb81b5f1f41c1e82db7ebb18268a52fcaf49186309c1", + "0x079b972cdff157e020e52e59930ad73d9c2ad969f3b0a8d1d41577ca2253f77d", + "0x9482ec3ebe9fb953d381a17d5e0ca16653deed828125ca866571648a7c1b9549", + "0xb8b5f8710d86e34b56c46dac0cf3590f39f98d3818ca0172cccbf870cfe8acdf", + "0xcfcc15c331926f1319858a284cbcda9e770e831cc7e3a9ed4620750c9cf7cef1", + "0x86d3b3052166bda9879d41466c1b62024570d1aa425ffc3f281932cdde595de1", + "0xd80ec1fef4f09d7a075448cff856ac32d68fc505916c23f34c6b83ce1311175c", + "0x0d0dd143a7a722dbce448a8ba6d7554958d31fdde2280369a64d59e1cf5aa314", + "0xed00e1fc92348f7729c817fb23a1b84624cd158beb3c089d79e51d11e9382b76", + "0x0efc3c01569ead63fd016b3b1c756bb71a87e429f272c17363601e2ad2ba5b36", + "0x0a75caf669139ae08e5d8fca448948453896967e2541876a83d695e832e6051a", + "0xb2736a2ea7aa41ed57a002a844cc342c12039cbb25ec7ffb7de8958b3e3a74fc", + "0x1867036374c560e97f41da619181343b0a7ae829a86fd318f22f506333e709e7", + "0xebc06a3ecd2ced0b079ebf4dc7675d348c6c683d65cab0370fc3b602d3ea4395", + "0xefa0f21d2d8cb3cb69c8d1045a1c30da48419570355939cf1a6e9af092905c13", + "0x37febb7fabcbabcf5a6b65512f1ab8debf02f115497e927f8b402d1ce9472cba", + "0x641d3a4f6b08d166c64c29b7dc22e63801e574767d8201aaf34c67b254fed745", + "0x07eb048c2cfedbcb3fa9b6d6bc7f757e91e9b8b79e3043c077bfaeeae487f080", + "0xd30682ed67452732a3eabef896e9ce816cf5501e0ed69083fc129e9d31fc76b6", + "0x68f2d281c7e142addae4f47c049da4995be5c091a24ad186e9c36b70f8bcd557", + "0x22c4314f47bbecb7227741deb3e4344a8a094f73d9c65e7b5022e80a3d0c4c1f", + "0x81988a185f4509f58f7125fa6d58434a6cc5d84bfdeba24176c3058749192d1e", + "0x9f91988c8469540df60471084e90454c61970aa3953a7fdb2404ab75ad4dcb8f", + "0x072745b7287bde6de34224d7570d0cf685e612217ce0d0c4964f795b82fa0f39", + "0x8272f0fbc10ccfc220c656ff690517ec2b3f42a7fce72d768f5de3645e849209", + "0x7b80b87178e2ee00cd2d2d8bbd444357502aa5accfe8c6c5eec00443ffa0648a", + "0xd6874ded8b2aa54687f10122fc298f055ef05dda03dbcf85cf58a66320761d46", + "0x510bf4bd2bb07891a321d152bb8d5048ecdf82d2d6acd622081cb598c4a6a5d3", + "0x4fc1a01f39df3d9aaf2ce10078c042aab67f46b219dcf1c36e4e09f4573d7628", + "0x8b871035d2816adadc5fa0516b53b417c3579628081a14ead4d703b940eaf597", + "0x1f361d235c348d9d4077c30e2b5cd27f957ea81af59b0bbc25342b44a41f6dd8", + "0xb7b873f75d98e4d4e7982ad7c8ef99b3350c6ef52891a3b1ddd1a63356d96ffe", + "0x110d87315da2e4a6fbb07fe42396c703b6210c8858afe80f8add517ba656ad10", + "0xfcbe4b39d6b762fedba100d6c70ca959e527a405d83b0498b7d3cce9b50c7110", + "0xb6bf89baf937ef3cf3a4e2f6d96f8dd2b7a4195880a968d28f65e71c94970dbc", + "0xea27e0d9a95d46b7160471dc9abd866f12e2d91ba6150dbfe549b244f6aa720c", + "0x9645c40ac088182e43c5fbdc5c3853e12aaea736d5a3f94e5a11d21a78d1d288", + "0xb5a15d98b2cd290a3105b8917eb2693bf570777507526c77e116f2e84ca36c51", + "0x476ab567d76f89e0e7361dc39545d2f892b0267e07a4dc4dfeb24ef446493e38", + "0x427f68e5eb21122c9944f50553f0a73ce7221930b1470681b46cba95899b3915", + "0x1c1fea68a0cd43c0fa6ec1376278d4727ddc82de33e8833d7b05d223d1a3dc4e", + "0x28976b28bc4eb641a43f33d45f83c1df9d9e0fcd706c34a2541c5b642449e0fd", + "0x0006563b5d39b40f927ecbf64ec1ad3e58b78b8f56252cb92964f984c51e5699", + "0xf8c65920b310804481d91cde01a2c480a811827ed81ed13622dee24545829102", + "0x51e8f5f2730a8a529535ce4969bc8bd8bffa2059841b075c5df2236de23b530f", + "0xcfa41ba442e084974e56d63e802fe96aa57c536f70ebb5b3b39985ca5d8e2b0b", + "0x0061901879421b13c687dc8e64b28b7705e99d0e7e298ae9dde84984bdf4cbe9", + "0x9143dd26eb566ab38199c059a5bc100ea91a5c4c1719d50fa7e4d25ecfcbd683", + "0x6599786a5d715df51e6b8efbc5f18885d756471db329c49ce6e4ada3c9ae3583", + "0x42d0e96e81f91fe7e04885210d7a54780fe1a0419f54218271b222816de91de7", + "0x078557c161640a6c568ed9c58c10f401cf2c4ff6dfe2e4806ce3f98b591e058e", + "0xb02669f634de8c935845db0063b2b3c51f8c7cbcf7ac5eb21af2a84bf8d15858", + "0xb50c5b7ad91a053cc4c050eb908c2d3fe3efe8a955ace8bbd01c4d50b45d55b5", + "0x3fb69c64fab132e1e9aae039a8491839ef09eac3b5ddcc1a982909265cee2785", + "0x38aa9e6447d61c3a5a148d604f41842e57ca3ee66dc6f365a1cc7325f69e7014", + "0x955866f5f7098813478b00c4c9afb5a17eac107e6724f9cf15cd709ad777ab61", + "0x13a1d2c66768950aaf6ae041321a31bc1fcdcc4174d1fbc19e0c04dd2d6aac43", + "0x2870943d80c6fceba20feb50c0bc0692841eaa0b2369cd6ab934780f60b84a30", + "0x53df5e8e56d2dcc01648d7676f63d7412416dde1a4f4abb8ee8457bb0852d65b", + "0x07376b354aaf8e4dd3552d31887a69a3d24b2fc19872ce3f3df777d80ec4b7fa", + "0x3a0ab25c5d4b60b86196db0b6dee5b7d73ecd13c469d802e659fc4a635782d6a", + "0x430f3eced0fce40e41a34fade6cb90c54d26e68862272aa4d622ef28656ac048", + "0xb4db714133f6a4a9bf25bd865b8a8f628a695d502dea2ddecf805a9704651ca7", + "0x8e5ee32cc4a49f9060a4fd889f70746b264c8ea87c95713aff55292dafb420fb", + "0xb6a227be907d8705a85d583c887ab39109917a73ff4318b4511258e55331bb80", + "0x847452a491831ad8f9066605537bb7ec79348a4af5e44eeba76a76197819fdea", + "0x549aa259155441a822db8f58e5c6297aebce8e85b653c0efb3be1374f480cb47", + "0xf8d34963b0291b168e073cade3a47fa8a21512dcc8abf950a0a0634259295ca0", + "0xf19f3c05186eddd9b6e368548cf87451396ee0d420c718336f51236300aa0af7", + "0xb896f0365e479d78d7dad90f68a8e9aa40dbf8c72355c363d630e84ab2067b86", + "0x0dda4fac66853ff4f893bc332b8d4123a6fa0eaef4093482859a93a73f8890a4", + "0x0ed8410577d9e7b145c08ad09c786a7b58b1e620d15777510883f789ec080e42", + "0x0330e9dbb51a3bf97f864eff9b3c3716a7c4700c7676ad5099e12338d39c8044", + "0x8369e5eca383fb86cf5bbb30c3369cbade7f2f11586be3665d64f507d921866b", + "0xfa5630ef6bbf09eb568ddcb257fadc31e5b0722efc866d9584c874979b2b615d", + "0x8604a59a0fe2ca077be2dbd87cbf69fb6e5a617829feea196aba48bce357d2cb", + "0x470a06d531bf849a0861d3d3415bdbe6ff6d937f0c52936eef709a381d6c2d7e", + "0x7aa5d3e5e9398fd1f21a68740aa27b8c6a4deac3eb2c7f011e7684c997c347d9", + "0x68fc7791abae4dfc1167115eb9a60c5b68da2fffbba22005172b6590ba9b1951", + "0x2f66c951098fae8d39cd4d6cd99c84a9d27c3b1cdcc5756f49d690f032567119", + "0x12a44eefda6ce99e4bb46e4051634544bad627bcd8744f4fc670f8f78f4ed972", + "0xd0bf93b32bbc07d3897256198b2ad8751ae6cc944ac4119e6432a5de9be74c76", + "0xa4b57a32ada21bff0348af1854dc0915d7e1e9e5287fa34886171523f787fa3a", + "0x9edb7bf6a423c8c6277e47311d13447e41adfef94c86fcb476ca2e460698edb4", + "0xf983eb4110361e33f7ce5f1b64be09cb7c37fb39635e7b2cdea6c8bf759ff731", + "0x4fccddb8c8da74a4f6f8a93977350c630495282e2cd2c17ac3da3e89c5028add", + "0x58aa9ba3950dd2657a920e7b872f07f90a69f233588f430de0f23b1fc23eeffa", + "0x004eb62927fc9ccb759337c474f104d1c22d54e45b72ffcf897ed3c2b177c0a3", + "0x24123c826952775a00c38ff71262ee7b7c592824d9d703341bd32fc2c9bf1f2c", + "0xaf32b8e97944d5b4098ce54071ad716e51cef925678b4e5ad9aca11d40c6df9a", + "0x2570341ee5dcd3e221b84083913b8c4468904bce4e606402aa7f36cd5485d5af", + "0x900b98150b0352a4d16ca93c4457b7b2f883cbd876e3f5d84f641aa010e16d1c", + "0x87cc7d34b9511e3b1384b8e6282a88e6cc871dee3519d822bc104128d0b78202", + "0xe4e13e69e40aeea7cea98c9d4986f07221ddcab435a0f5c2ac51390f11e1022e", + "0x4c35262d4b49ad6ab37cbdfdb5979615b3c3e3948c5428faab0b053be220b278", + "0x8acf39760e9b16088b633eb1fe4ca5f3875da8d8cc98dd12eec94fb3ce24b96d", + "0x2ea80f852c9be82fbf358da34f9895be9241ccfce1e88afc7e7cbc4922aefc60", + "0xc8408153052c696c5f44cbfbebf3b76ae02a847848b122fdcafb9bcf28f7eaa3", + "0x14bfaeb2a43bab4afe17daba2615e16240b5d07727d3e87ec6e03bc43bf2b66b", + "0x759b9c537aa9ce97794b48604256bd67d0018dc9df78e4399bf8d523daf7bde7", + "0x80afb19beff915650e8b240456c242521cb0e233839f372e229175cea648729e", + "0xb95920759edf6f117332a111c557530656d990fd8185227c977e23cb696f2bc9", + "0x56b341e91985de6362a731978b64588145747432b51dd5cb52d6d1fe6cd6ef7f", + "0x136327e9bfc7b8f3df76c36074a8f13d19d2cd4a74b9db9cce857cefe93df89e", + "0x8ef3f31af50ba3534ec1fc56d4a7a0a556efb9c591e5096ab008a5453dab6508", + "0x9f0981a1fa4168b5e427a63e0f18ac931d3fbd1e1b55a9d1232df2aea29605a2", + "0x7080fd8467508a892011515c672dabf37972ad72558b8fa27068292b29e156e2", + "0x9df3567b5a70dedc8ce013b47921dc17cbaa29f4dbe800ae2f4755e1bdf63ac1", + "0x3eb605a8ea1470f0bf84edb23fbd2b6c07d1ba84e8ef98e04247d93a3ae1a73b", + "0x70d533a46a303b1f664dfa4a7fadc76a1814a01e04da701fb8a1f0bf96e1a085", + "0x648c4f212a3c3b9a8d503269bc041e1047520f0eef6a959c6232468402ff56b0", + "0x00ed2033ac3cd30a0915b377cd70c10f54a81ffbdacdfe7eb5851e931cd5fe31", + "0x2a129be624f16f9bb33b79d4b3f0aa1583df8b76732100c66997697367f3525e", + "0x2704fef7878817b82d6dc4aa1881130158759f1cd8024755a613f81a0551ea3d", + "0x876183912c7a86ac972ba77b8e9eded386c4d6af93edaef4d97982f735af0e24", + "0x105df85ff73467fcc2ddc449bbe1df464109414404eff40739704c727a8dcc24", + "0x95a8569ea985b1d7c3d489142b0a8b04442f09ed3dfa0db43bdeb306e4f6d124", + "0x07b6f3c1521537c7b0a1e1344dc88ce64dc659c0e5854df5406ecc38380b1c20", + "0x8603f626bdb8793298d89d4ce4454d3e0e58a19e800140351b02efa7d9f5011b", + "0xa457c55e9716248a825ea9f8b63c847da97349aeb4ba81108c9bce3f53dbd288", + "0x0f9de9a7188dd56eb7f151d4ec43c4366a27df031eae5febbb4b7664c2d76b7b", + "0x620c40eb62b5abffa166e955383fc3e6ec29acf33be3c8221f8ef3b3724c0ed3", + "0x74a6a6b20caab913ab6129536a88a73fa7ebfafdff97099410acc33356a18ead", + "0x9bf2a484fc5806010b68214a78a1039d2f87f298fca5af2abe86739a53460b68", + "0xc72124dd615226c6f46f70087589856e04e9450eeaa97aa936174c57b1ef93b2", + "0x5756965831d7c71e09b2e38a6ed9257a1ac0d3f2257e74c6bfa4cfb80dd94240", + "0x7f9b2bc69f3433c2789941771dffd751cbc0328272d0e42e36a56250a9f661ee", + "0xa079edf9d48b9cc82f3c92b4d4dd40137ee96c962bfc8af30e7efef77e6fd07f", + "0xcb102825fbc4b6424fb4f49579d9b0e35201284ea97b5bafcf77e6abbd2efbc2", + "0x459068ca78d09a8bd9aee003fc06ed4dd555c7f8b9e6813a04e8721dd44a64b7", + "0xad76ef6d6c096d53467898cdf99152769d7fab12cbd74c1d6c0f45f9815c7e47", + "0xaeff5ea998bf42fcfb848030fe4ed4a81c30dd1c4e43840385c418ea43296f1c", + "0xe6e9a69da29a444691fc92c4901aedefb390d10730af1a63f8f1375f6b6c0c27", + "0x40383faad4bb532b4c3b2ec31548fbd3c2c1240fa9f2fd31984e8f4805a82bf7", + "0xa456d50ad36e0e6a46ce9b46bed6e62f76438a0b57130f76fd8b42754d5f8466", + "0x5f5f817a28a8e406359f30f314db445479eadb37d40d173f379519f3472e6084", + "0xf0a08ab4c07f3ae48dc4d871098ca3ee4c9affc1dbca664982b8234f460fbe77", + "0xae47f124c99399a99dbe9b7426c260b868633bba1e6cd2e34be8a9b7578e8025", + "0x338eee92983400c3d0a81a1a0fceb748357825d7371c48029ecfb3b600f7ed87", + "0xc8abc03ffa4dac476ec6b90ed2db2cf4444124e4c1f5263230668b00d834150a", + "0x1ec6eb94f5cc7f6c5b8bb2f869b8de6692489dc6beb10f9e7cb04e9cf26250d7", + "0xf61f156fc1d1f2eb7a6ed0f2d8f377c16647dc4c1fc17b076e014042ab3e1085", + "0xc25e6bd26088a92e208a6f2b4cdd043604e177452b88552472618fa6fe369b74", + "0x784b503173b21478ce921f29d7d5fcb372697a3b1ea7a5026d3d5679bde82f2c", + "0xb51e8021cc66bd2fcac69bb48cd03a3c0b9f84ff20cb2cfa947b626e0df06304", + "0x3f743366f73f214a392527392f9cb781595da50f1d81cd8cc13c0d590a5bd880", + "0x973d09a3f621b218f5a3e4ebed608b4a1f8136aa7cc31aba479597aa6c0c8d21", + "0x39456eff8cddba6ffd56b477b3752087cb348be520be37c41f9e34655e2f1aba", + "0x8805949bf9ee489622e0bca8dd0e11316d3b2bf3965228c10e1a5ae207eda023", + "0xa10347e3193b85ef9b0c4be5688a52f6e8957b1deed3de0aa2d97adc71d10416", + "0xd40f74cff977db8b5a28c4ec6ca6d38626ff130d36936bf601229bb950404abf", + "0x2c93f97f033b505364538d1458578ead42967e5ee1437d7dfa03b9bc8279cb52", + "0x1da97afbc0cabd5177f0efbd4da9cdf6bded007519f52410762dfa806809c354", + "0xb49d04f0c000b05ca716024ef39fad6208187fb9d51a25a2ac73c18759ecf7a6", + "0xbc089a8a4506c6ee6e0e10b095c75bccaa6924e7a8600b0ff7257fc01330e5e0", + "0x09368b7227248b05c02bcc3616352507d9858148cd853aefd8df7b1731cefea0", + "0xc283232e40bf0bc1af7b514326d33ce9615f6137f5fe0e38a8059865746ce7f4", + "0x9b3f2b7f16136bf964ce30119fdacb84e0d77a5227219c50173affe216e76651", + "0x76830f1a9b1a547b9c0cd48c6fdfeb72c8d653776410ee0979aa11fe0e15165f", + "0x472b5d2a717e4c7ecb3e7457d9f040bb1180af28095eccbc4cde3f4dfbf24b72", + "0x121293ed312445efdb016a523cc704fe9c4cc3e824bdec422a878bf6fab7aa7e", + "0x0c16f8219cf6ebe5ccc0f973c7384cf8b96c9c78e8424cd0f0771e4d2fe0b0b2", + "0x142c13a397ac45da71ff04ee2ef665c1541c4c5d1c0a0ee891189a88fa4de4d1", + "0x9b9c767db95a3326e18982bab7061977279b4a418378763b616127c8e5b32a87", + "0xb1b0253b4605f963183eae33af799b538de5477040300190fadcb9c80de2652f", + "0xec8ff0d8c200a577822ebb416401998f12a40ee130d09f905584f45bfcfdbe67", + "0x2e2f0f33e0ac96b26bf1176658e886e5e213c0e63749dc19fdd8be5d351b85d5", + "0xc9fac6d90ef0be61d437e4aa1dd0390fecaa3586961e886741d9cbf8b99ed9bf", + "0x31d9c7556370e7b597a201b4e1e2d30c7c99f847cfdfe2148fc5d5154435e450", + "0x6c58ffcc0354e3f68d64a3d28f57ade04aeb66ccc99d80237c53016b88ee0563", + "0x81677456e19b0d7c678819cf6610d5270cebcde9e257234e73906e3cbd85651d", + "0x9bc992c4202007bbb3ead511a6714fd5cea12c24708984876a061d516255903d", + "0xf91c98ff9be5dedd65b6bd723750694a5a1f7e3f2b4a38d4efe0f46fcc250abf", + "0xcb53241165d81e7a7865ed45a20d197677e82481790f3d2aa6ff57e79d299e4a", + "0xce7367565c9554e12f01d3a2e31ae26e4b768a8a10f1d77e52e52d0b3cf6a2ea", + "0xaa5c74a457166178edf4509730523dd6f680d50a26116f68442a4a04263365e7", + "0x3270974abb9a1cc8be6fc911d391cd2979e2ba29926e7312b809cd7c582c9d77", + "0xb26bd32748ebfecfe6eb7f8e22b0c952cf35862d215310c7676cc0817c55d2dc", + "0x476d25b82c776922864ed31b5885e37fab0a854be9b11cc15298614d4ff00aaa", + "0x5591c00c815a469bb63e402411f5fe81573a547520bdf509f2bcd1ef434b9353", + "0x600228b1bf657d6d31cac208cf4af5c6f59c51bbb3f085aaf96d6ec793ca26eb", + "0xddc7a5d558ce74838eebf776a8da0aa72cbfb002659e91cbe2e0aa58f1e0d2bb", + "0xbe36bab1e6fba6c797408234c90266b71f937066680f5a0b89e63b5d392e74fd", + "0x9f00aaaa7ea55454bd12dfa22c8fb53ab9847942401ed240ee65bd70cbdcb3e9", + "0xab82c9c6440e3bbd9bfa1239008d111bd56ce0b013adfd3387fbb15eb9b9beb9", + "0xe8b3ea7145a16fece3ba0d0b5d8a230d11872521d83d50e19e6f76df192ba00e", + "0xcc8265ec86bd2e7ee7da04e3f44186c01735acadae0c27f91098b4a8eea6c601", + "0xca088d51d7cbafb9abc29cb65e7b0762b3124c9df2d3bd52095eba55a0e7313f", + "0xa55462cebbecf74e6e211c6d9c2c220aba6d7fd70a47f5e4acdd70b9489f03cb", + "0xb2ab75e8a3c6d1f7f74fe887ad7018096367a14979134471b50efa50e81c269f", + "0xbc13011869ab47e14983935317322c13f3b978e8be2d674e67ee91255d399d3a", + "0x60179126e30ba6643039f96d3e6ba7c817cb5f7aeb336a987b1142901bee0061", + "0xe220e7d93da29846684fa4b7a58a50ea3001c422698b5693497b6b1c4b7a018e", + "0xa0c3ed28f86d65e5c39c1cbc648fc580a9a891fcf80a8dd066cf11eb66489845", + "0x80ba93fc8cd4a1d8e0bc2dcc44926e4d430dcf52c852453cdfa3a05835f31d69", + "0x59049398c91f241ee3d8db478a44a042e30ddf8e498c193e94cb323f14aeef4e", + "0xd444d7cac86ff9d9666d48fe23072400007fcba6fa5c26a52cec085d9f7e1d84", + "0x03945a47703437b69d1bc37537938c5ac3967e0718d97c127f2b678c183c4469", + "0x162ceea6d20d80497a0e70738b9597a947e5fbaa3dacca50ae6c3752d28a829e", + "0xf4ce029db7b9598f173fa69c22c3cf3074e910e604025e6572f2b86dddd76e8e", + "0x9fa27928d9639ee69eebdf7add64bbb2560d8b1bc00a3c2ed535ef1b5877e242", + "0x1bd0a9ae4b974eed6a643084549a7d8fa393ebb5f0f60597eea01e9302283075", + "0xdb792817ee8337f5600a94bb37448602af334c4cef9a43741ad7dc73a0003829", + "0x45a3d8cf70b324094db77b5b51644ccc8c880ae99935d5404eb25f5feb5fb68b", + "0x56c0b3930330fe0a65956330b78fc0647b1396656422f786d26a74dc9e67d88c", + "0x9080bc35acbb6df2f1f8221e7516b75de85cde93fd1043a42127e98094b8dbbf", + "0xfceca6d32145290ec0178d0823b2012d3eb4d6334645bcb7de281571b8ef9f05", + "0xd8e233e7c8c57d5972b6f41412ec500296f13c3e7bed744384106ca0e5827885", + "0x1f0165079aceee6985bd0f97c8ccc6f9a5789d5d1a4eea7795ddfe7afe45e85b", + "0x155a554de7294941299ecd94a89e1f8d4b649e4e7220cfe7a00e84a224c757b1", + "0x1fbc89844c8a2aba2aea8d47138ff8a4d914f14207f93b4dd87ec9d3280544be", + "0xe780ce46a4037c2589c19ca70411f186de82bb8635ae3d02928a6dcaabc2a8c6", + "0xebb6adb6e390250e1b51c1472af8a5f2819c83c58475513839cd0e9c9e95739e", + "0x511d7d3db913db1e12f8beffa23bfe63fb192cc3f15a18a057e3fe49f0cce40f", + "0x42d252d9d137ef4e84888eb3c399b5e84b57674ea70d44619dbe869b58ede31a", + "0xfa7e75a5726f283e355957f2ad215cd899e42e5a450aa927b6b7fc78e3188279", + "0xaf9e6b01f31c97df644f8c57a309b1de3c4fb0a84ec29c270abac7ae78366f70", + "0x3b4947dea13610ab6bc4d0cf732311f79a440c9ea29d01871e245db658413e8c", + "0x779810ed9d3f14b0fa4d853a6d8c1bb75a83e28c200b7b142dc92fa2e10e3c5b", + "0xc35b23a27a537053e46800854fa9aa92e3aa7813c09f46429751e4901ab0b44a", + "0x46e4633078ec596ee049e5c5f5acd9f905b7755efa858086bed9f08ab7405f5d", + "0x45a4c2580cbe37d45b6802f8fcedddc3d2a013f5f8f70d53b3541cbd24b34c8a", + "0xb1108c643d253d3cc5d3ae8df0fa51fc09faab0eef93fcede665abb9a34eb49d", + "0x32c47a7ae97b75077f22136aa20a78c621ce83b3a7c3b05815f4da7bcbdc97e0", + "0x2d208a493ac61470768a923d8ca6ac6b0216fab391b881a9cf5a34534a14fe48", + "0x013d533980e7a434b8f7ab1ada2602cc2d98aca542ca1e9efa749931aff19cc7", + "0xf0469721dfbef37d48c3ca77c99748cb159b287892135eba383a2a87caa45123", + "0x1cd51b4a7a00570e2c28f3ab3adbf3892ffae0aa3669ef24522f506a2680bc2d", + "0xe29d92c919a58753db3ab1d8a9418630dd25600e1b107ff52b2fdf662870db57", + "0x20b5f057ecdf8571389a73156f6e17c5bbd90e53e740c24fa26e5647cc9a111b", + "0xd295fcf8e02d66e4a58a4dc00d673ee1dd1851dd4f462a1adcab1a195268c725", + "0x63cc756a7232fa0b2ed91110be537c340f57d3c68303857bce6d2c9146caeafb", + "0x00ddcd7849476a35dd03787659d08cb772fa87920fb64c42571beaf493af9466", + "0x0adb1831ca011f9f1eda828e931b1ba49cf7aa53e32fa2097531e16d07c4dc83", + "0x91097e50891b7810aa83440028b443011a0c3f14ba8469cc4eabe03c77e04cf0", + "0x8a7679036cd96cfcc65e10af7acd2dea4d0cb201f234efd84ffe56277febba72", + "0xf00eb36917994233bc547384b78af3d5add1f7af57737cd48eedb1e32dd0be8b", + "0xb7a1790f18d84d4dc73c553f3352c66478214fe85650e05117a0a787a045a0d0", + "0x1a1456a5aa3ee0a93ee776475d509ac5cddcb73dc45140ad96b3a0fef27e4d62", + "0x9d7d7234322f51824c7f183ece04e681236a535187b4cb07a0400f6792fc85e5", + "0xb9933f344a5198ad186fa84315e68f2753df0747943928fa4f3e64831ca58221", + "0xe61ee5f8dc00e34d1e10d37fa7d7d14f6d7dc75dcba9333164c3abbcae6cdad2", + "0xbf96c5722954e7fa88ee06357f881863ed9646e6fe1a37ac285fc9b46415f4a7", + "0xda6671affbcb07e6a26c468c9aebc505febf0b7756673d53d06c9077ae57f989", + "0xd5a00fcbf7eb03e64898e62e358315ad4235208a1decc6f466dfcb55ef6a0803", + "0x43565547b6ac1691420edb5de9f0e835ff499d3acfd635f52bf156f15380f45a", + "0xfb753567ad8d6988224abb69c87f654c9c41d09a4479065e3e3881a8038977de", + "0x1d187060318ca9db21b192f9ca2f8dcdb930e3cc782753ef67e9bab428bc45ff", + "0x1806a3fec2a2bab259898c5b3fbf32a08a67936d71bfe8e8a67047a43ce8acd6", + "0xf0c35b42944a703847cff3aeba794159856a9237e9a8918e0df23f237e0741ca", + "0x8ebd2e087e9b1aa10f43ad7b2043665ae291476ca9e9b195ed423191283f5ab7", + "0x9dc3a05a31af43647026611cd970fbbe364cbad1e87f5a570c1d0480ea50fd87", + "0x012b35b6b22539f56b7429319943d5581ed9e47c7bbec2918be729b2f2babc00", + "0xfbf376ea281ca53df225895990b296f99fac43921d94b1dcec44ae877430d505", + "0xe83291c8c94cb3cc80b7d082aeba19449c297190248e2aee3ab9d584b2a767cf", + "0x2f94ed1c0125985664b47994119f09835f16668554cd52503889b7d82bd49bbf", + "0x1492eb4e10dc52ddf9deeee82676e95b3f20113fa63b13313ef92c9f8984433d", + "0xd21887b57d236c8e11afcb77ac6c785a68a37ff06bc84818f5b3a669773a4e3e", + "0x215e47845ffabdb94e6eed1bf3470038016d0581f01050569e376e99ad6df2bb", + "0xd8dbcf27d0afb945f867c18dde2d717505e70578b70deb6955a1637e1d9579c1", + "0x176eba9df7dfef339754d9de98b3ad7eb27831b0bf5eeff1666c5749658d60d7", + "0x305e84458e1d7cc21906c393f55b08a47cb93a71b15d3b5b3251431d859486e7", + "0x310c1e0b72f9b52bf8ec6bd65bc87f3269543c2c03ca5cb5162e9c5934cdfefa", + "0xf04f601f20d92472c8774abe2bf1ca99f9df40aa91ed44ae80c57c0ab2f365a3", + "0x9723cb14d643a31a3dd4aaa0a65b8f3a80e09a3e7139ff758566788e0536eabd", + "0x03c7330e1650ad571be8204a4ca255107bd12d27f3ba0cf5505df39cb5494ad1", + "0x29b540add9cb34edfaa8d6fb114088b2c115844085651b58478365d52cf1f746", + "0xa31cc09ebd74500e28eeb28063f8acb027eebe26e3340c8e606158ecb3daf387", + "0xcad7b3e07237b4a5ad7b9ab1c55fe8891e7e536e304ce437aeb65e8772376e24", + "0x5c33559994fdc5d478e272a6e102aa12b66ccd4a64e97b184eb471176de9cbd3", + "0xafa9659d0926bb8f0149cf11acf574e452b313de06fbcab49c37e2c6100e308d", + "0xc9c36f994b5532754d7f301122a600e07e97c3bd646de40960491f8d55c4b3e8", + "0xdb2bddca55f3d8514952a6b9ed70b0949f8a67180b281e85bd91436a93461e6d", + "0x168545a48f1c88a3022a8f19f9f9af71e80946e43289725bbd150b6ab4f8b25b", + "0xee669e9c733a79c4dcb80609713c2920ca61d96e7696d7736badeb599980bda0", + "0x0a587b34a043523a5343a7a60bccc878c37a4cf80232dddf15c110ea25a3f6a6", + "0x53b80d9be44113b006004e0f5d399ae362fc3a512804f659868b74b0a299bc4f", + "0x2b07fe112bc5aec796d756163ceac36627d9fb04b2d5238dd83a06ba473ee184", + "0x62701cc84f09ad90a93e40506368a0ce9debfc6332f19056cb513ceaac5e197f", + "0xfbbabf5ff59b3ff84aa8342a11ee8eff0fbba66787b4b81d99a0daa687f2414e", + "0xbef86ead2a0b6289a49432ef845c12ec855319b90a12aec347f26cb3ee01af26", + "0x89f1f322f1679976b56e2d5217de5e59ed3c188350f3e4aeb99c1bdaaf016553", + "0x287c4575e57302823607b463670645ec0bc958046ca16d8c6eee8880ce24fa23", + "0x0a2c853032820e053b6aee9244a05a737734d44bdba4b13f1682c2054559b768", + "0xed1a1fbd436047063d42eb18126bf1b2bc713c2276d4466855029ce660ff0b21", + "0x70164d226f19a8c0fb43d7ebe039dab7ae019c89b2fb79459c79a35ad816a737", + "0xd3269943847a848f52315d0ea5f03f2cc1630b2ae67cecbb6570b0c763f6b173", + "0xda84b557b9b08a1477efc513a9825c23b01ef6999bde45c6564ab5d23a806fe6", + "0x290e8a219b089090dfe66f7455ccabcf1c7c5083eb5f356a0972b70a324d9f48", + "0x3a36c65d0dd269c114cc234c987b368cec0d85af96462d6e65ddc0df39b891b7", + "0x368a5ae8165c24c8cc7c290b2cfbad87954ae5bd608a475eb38b69425816fc28", + "0x6c96afc7c8529090069985faea331df832a56474d7a3578da838e1d0a637f6ed", + "0xab2743334a8feb961021834da8b327eca6e1cb92d03f9763d2593b3cfbb11896", + "0x36c63cd8f35a484a7a747e91f1e5ffdd0f08ce3dca8767a0aa4f09106e6a7c11", + "0xb3280b3c33801be364d648444daf6f2bf2ccd34d43a88174e6b398b1369f8a61", + "0x8c40e36583c2bde82fe680695fab00e750ef3697b063adcdc0a89f44baed5604", + "0x6f06392dcdcd1d4aadafc62be81f298790390f0efbdd6fb82ce6cd5ab87ca6c4", + "0x0f754c072e36624473db47d326c90500f0827bf1b26e162d1b8836ad80f1ba85", + "0x8c9917569fef1fe821793332cdbe2973bbcbbbe1edd622caffe13edcd858c4fd", + "0x9253791a0e3fc025b77e35ccae9708f61107372fa4cab2e65d04636c1f412c7a", + "0x6c64e1c0cdbf5afe46e1074e4cffccd3d79540cdffc8c08d9aa13d3d5af97659", + "0xca6722167191824dab24f240b5dfe96fe4042752fd6ba116189de04467074892", + "0xcbe96ebb79b9438f876f142b1091479860bb888e22104d609fa4c0d324213264", + "0xbada1690fea645b649ce0f5573e298fa1c4047f1efb984fd02f02ee68527d11c", + "0x2f1df07d06673e0f233cdeb1ee333837c68564ddca44f37c3700f1828f431e0a", + "0xa9a6c643d140f1f8b7ed0034ce655ae5e629905c98ac3a9dfc509c6c095f4962", + "0x0c8de9f46a37b65335a6d612fe76065870df9bccd44f45a9e7b35e4b2ae6c514", + "0x6f9a470f1f3d799151c3ef3e88aa015ff2a9596986b21e3d41b32e3a61854e10", + "0x2f0bb3bab2eddb624d5bd5e3751e9b3cc9768ea3d00e102bc330ca7ab2739e3e", + "0xb354636138b0a90a54d4bfdd6d753dfeabe966eac6fb8f9936828e2ed22e00d6", + "0xd7446d05158c86b8dc8e610ffd44bac922e29e3a2a6c02c4bf6bc65494a34921", + "0xe605ab28c06ebf469f22dfd6609e764ae91ceeb0f08d005d0d269f39bd92b2de", + "0xc040eadf39805baa34688861efe5532e005b8e392409e56ca84051838f660547", + "0xd1a14142157703fdca04e19adcbc9c4c2206472e51851fc5dec6cc897bdca0e0", + "0x8518d36a3d1fd366e55af5baa5f84bf26b4b147537aad6987092c2d5ff1076ec", + "0x7c09e3ae9af7ddcf860463f125af46501787768a2a32f04a8e30c41622bd18a9", + "0xff0a61898d1f7b8617b93fc03e045ace32667e87231444211b8ed3e1d6d9091a", + "0xc617d5bf9f7b9556ac62b80a3b7d3a0800a8e29d857bbd214f8ba0fe5dc84777", + "0x959d6c79d9897acb1f7af8b0f67147e48901f09dd6f3ceb98e15475fc7a8722d", + "0x825c063de66f1d0940e561bf42c8782cd559ffb940a81b763e3476a51f90c840", + "0xc6a235f1fc6f28fdb60dd5065760395eb9e55013a70b2d04711d9cb210e659c9", + "0x0425e1047f0861e81a56f4a9a8ccb7dbce2322284700f1abfe20e5109470c509", + "0x48cdee281ffbe98aa7193370a093eaa620c14d161abbf52906b4e1d20f93f345", + "0x5e40e2155659f19ff91dd8c01e30d377ff1c0fceb857f65e149238e9e0810dcd", + "0x04c19aecf54bb9b72940870e62f918ef34a0e69014a3f6beabd08e88a715eae5", + "0x70a7f8305fccd7056e60799a0ffb706ad1517eac1ae491d47e38adbc1b74cecf", + "0xb2e30b98823886050c204b10f9945dbbe6c7533b562a309a1377724403c6d69e", + "0x421c178e7ed2514d8474a474bb0119b762a27d07c4d2b53a5299d4605a589e55", + "0x1be35c7abb5f5aa152e51fa4c985abb822c76d1a015cc00e08120fd5e119ca7a", + "0x370b1c1d2f7dde6fc9e8cc013e4914e29c7a2a69d22f6e76ecd621620ef1ca56", + "0x5b347124455e21117d0e58abe95ac6c8620207607ab5791956f157e6116d39a0", + "0xc827bbff3c8b3af593130575bfdd1740b6d4c2112f3ee097079fb257aff313c6", + "0x36abeb1686803078e3c43b824b4711779abd39410b1f90df15b14372d87a4e62", + "0x4c5013300fa18777749c67fc2222c165cc25f702e37f5216518532eadab0ffdc", + "0xa133d995cee5b21daf0b8923196dd9022f9c1e92644a087816c717db693fafca", + "0x706a6945f9e336a6fdedef7e5e030fe80ef85396f793e1d7186bafad5f89e895", + "0x70c5bf8c72ec8b8503be9c57b0a36fe8ab8c125b15a24478584c1a2ecaf619e8", + "0x7827ea5109deb5301adce34225d3205a960f4ef04f9947b6abbd7f15415714f8", + "0xe8a92316584f49b78aa44b4444fd929a5722e1d3c726557c4c717a95f7cf481e", + "0x6d09421c949bf4390c2d6c6311dec1e84b6e27e57f4cb58241fe4f0b398a4987", + "0x0c59b1fdd47dad0e3a0ac32e22bf62d32179c5ac549b0dcc848a6b21a1ed7731", + "0x7eb81ab843c48038d28cce0d7ed6bfc1ce54bb58e6e67c2e2902de39bd03dda1", + "0xeff68ca1e5c3636a1a99f85eac6da3ebb60fd71f60af5d56e9d74d2ebe1720be", + "0x622f2e6d4e6caec693ecc2f26636bdfd9469c0209eeada729322b877cceda9f5", + "0x75a71bafabc7493f49315e513475c1913d7f63c03f15f11c84710b6932e225d5", + "0xe95a306d2fe31703e72c78978abe2f33a2e2b53460ec3f519bb154acf3dce430", + "0x129c576ad5a6bff661ca7c6b98911f6763cbc627040b990cbd452354a9ffd206", + "0x6a4fb71bf8c14d1f71de308cae35ca4e13c98367c2b2371d81f56fbbd25518c0", + "0xff36f1a3f8f896ec0d88a709ec039e013e67d7bf6ac302635a4e030272e2bc2b", + "0x4e0cd123af26b0e68da5435b6ae38b5fbed553d93ee30118011daa6858778138", + "0x730643d8137b48f19acc99f2af0ee5d597876ce2b685f1c302f46af15e01d362", + "0xdab79a5c1b8bd67d0548e4437541643047c27afcefe17120faa5118e086aa24d", + "0xabfc7ba1e31ae0eca9f2540ad659e2398258a5bb8e4d5ac825070edb681590bc", + "0xbb99b0f3536b68335c224a145b0f529d12cb338993dc5af8470869ae70905234", + "0xac9a8b037cff1254121c961f01b4f7b930d41b1fd892820531e0842054f482e4", + "0x580081162b8af8ef1f54faf787dbeb5d37c4a2edd47373725e06faa797050bb7", + "0xc9b25d249b92ad5917db4b830f270249d546d419368207f2aa0bc290d80223c3", + "0x97e8ea15a814ca9a8d02ea199d02b697785d3aa7e73360561d37509799910ead", + "0xe62a23f04006f542b9cbb8ed97acb6bd95a232c93d98c8ec4187dcacdbcd3045", + "0xfe9e76148bd3e88593fb3b0583085f74a8745036e64fe5b55cf37dbe3c75901c", + "0x9b4ef5709b47cc3e282a4676df6c8c34b86baf7eaf518eb130dd738222e856d5", + "0x4bdc5432c63e079ca7f8659141037e5cf7b887ac766da2c107dbcc523dd14573", + "0x65f032673743dec1e5369a3e94ac2cdc3b4a0be94dd0e178bdfe5830c621d06c", + "0x214ea5319fc5d024eb2bb417e89cec35b80178d0b20bb20b42b72f070516edc6", + "0x8aa6b0b5c40e043a90a1594e47a44cc590b1f99f86a68a4919ffdbbf71565800", + "0x70f8f0b5651c40637960598a596a96cf1ed92aabb5ed9f467e0e7b7673149438", + "0xd7cc04a4b65a9680e3b4443e49079a4e94523c382937e6a343e9b989c22e235d", + "0x25f64fd9763296c6ab16d130c0edac67e4752889911b1cfd5d3f158aaab9862f", + "0x5c5fd33d8881217fe1382452e347ed82d1a94dbb4837978365646561017e5e53", + "0xa6a8927ae26d4c2f211c2ef04148010c327426e0334dcce3158683df029a24dd", + "0x40bb1f3b424aa5e99317dc741de376a80fb94542669a3feb99b40b2a6d22ec2f", + "0xc6e9eb24ce8e0c04aa42b93e141b4c3d5b138559a1dc5c5a7be956e5f05aeb2e", + "0xe617ee5f2dc435e602e1d430edf0ea2add116d4ba5e9cb32b4f643f2601aa84d", + "0x8adb3fefae75bb49316d320895a1ffd7bfc0480aa9daa5b121b40e5d56e04d33", + "0x02fb213eadf6879b9a5d15cde4e790f9105f5c3c7708d13986ef07b1847c2e1e", + "0x070b7aea86427b86acab643d7cf954154c2b32328aaa362b66e9ecca6114e2bc", + "0x94f35d87c36b0ea66d266ab78db91da34d7a20963b0df25ffb2761f5f1143775", + "0x928bb11bd6dd6279e6b76cbaad9b4b52321a5fcbbe90c3478ddb054388a89937", + "0xc90b9a430d7bdfff20b06c353bfe442fd037a498d3f014fe1c40e5f21eb19828", + "0xb75cd777e161ce99e3e5e7f5d806aec8d439013a6cf9690aa1048a1c5739b4dc", + "0x058a7e4ef26e205a882f494f494c6e7129b0fe86b876d9c00973cdc180295486", + "0xa4887c96632cb505ad3852d945d196771d0f7bd40ab9b72d2bc09238172d5846", + "0x50ab789f6752f80e682597918466fa68056a37b0c465de838a55d736ea84bdf6", + "0xbbee13312c2367e59a82c309072508746382acba41d663fe1e911afb8a482efb", + "0x28a66c81fea6102d5043803247eb0e1dd52978447fdd5b32e1e7b1768e35377b", + "0x73744419b7418b9a2be4ee3273f8821c7b9bfd56a860004a87b5c213a591afa9", + "0xf9d871c681e564861733365a3f5af1aaa1d3cf95c1710202415c88d7a1f94482", + "0x899333c6bef47acb176a06c3f14ed3b07dc15f8da60e216ebc953d6852cc43c5", + "0x4fae646dd3f8e191af1718a7ef564b7465a0edcaff7d7bab2ea072c5e9e40843", + "0x65f00d4aabceb364f0b84d182e1516ed8f52df5db636a0d1a0acd77585e74b78", + "0x68170c02bb4aa0c5397544a6cbe12096ecc220cd5dc2298dd14b36808a617a90", + "0x26cf67931d27d3c57aa5f9f3c126d06139baf2cbb6fa93be598c1b9c56377136", + "0x37e6904e1e589529ff001e2aa3b43360c15a69044fc313778091c30a82f6118e", + "0x8ebcad0d38672b49be9fc1f1c0d25ed2855c2ac2b725c3338f3590d82d5486ed", + "0xcbe274dabf2709b47d7e092f242c622ca0f6259686ddecad6b22a43a4a46bc07", + "0x3f96331d637966e39876d9b6f892e11f74fcf3f498b5dfa602a0af336d2b0a83", + "0x4ae1d1d79137bdcdd0f5b5d3ab4cd43f01e61e30c587d44d0543e785094cc851", + "0xbd44440a0d673f1882aecaf16c2327afb9df874eb2daf31adf24d449b0e728ec", + "0x3b975b689813ba2aadb8a108f19f1db664ac138e815f0d731d91f84399be21f9", + "0x1db1ce07ff17018cdd28ae30e2dfcaeb55882f3bd49b0beaf8f195f4867e1450", + "0xd5a35916b5faea1f64912a28275725beec995d669009202b5e8650809ed698d2", + "0xc129b330a4c2b6cdb5cc0cb98fd13558e0ad917ae77f04544be21368aa893996", + "0xc65b552566a173e86c9104bd7c008b93c0df8292cfb819f5901175993b7e8c43", + "0xfb596a05f4ae037bddeca195978b5e2fa06f82267bb9babb1a899cdb54994daa", + "0x71abeef5139340b5056402f9249231e0985a8573648ccaae3c1eba5f35b28719", + "0x425a029c98a7d44898a017a57f68ce4e5855b86f9420fc414066a4b6ecde63fa", + "0x297b42cd7edf7a98bc06be48f67d3c37d9b76ad56e66cd6a801102ab3da2fc97", + "0x1cb82224122cd583990e9c47891f9765ca58a18c766bd4137e22955d58c4d2a9", + "0xef28e699bd86b66dc8226ee81646cab9a72fb4cba231a1850a479c1e0dd26b62", + "0xa29cf03e433f96cf569f60ba4d9dab643ee1e2a91139a627156709a613f413e6", + "0xb2415cad444d14d55961acb12d4a865b7a842b1053c5e49afb99688e5c860b12", + "0x95b76af4f8adcaaf9db4538c7eb2c363ee2f81b35e59cf87837e47d6f65f8a2b", + "0xd21316c66ff394c5b5c68ab58f58d3ddb2bd7dd69d95f1f0a60d96af431e87f3", + "0x1e51a49b0dbfa32ec21b5e8deab7e77c538b12a85b7f4fc52835a63190f19bf4", + "0xe7a409a75e6f15b1aafe1f7e21e3e748f739052aee29330c5596fc93812d6215", + "0x04dc2eec1265e13c7cf4d30e4a9b5651ac3877bcf23cf0739e7acc7d2ada04e7", + "0x295ae29c936f69548ad8d4bb0e1eff47053e6a91a5e8a0c7feb46fd27163cb5d", + "0xa00802d28c986489fb853f552288839649f8ef12931917e9d9c6ffc3a1882613", + "0xd6b0528cacd65e282bb430f7cd85f8618b149bd7af5f7954d2153c843f30f5d5", + "0x845fcb6340daad5a17b4c593eb7e8be51aeb293c3175cd64e75721a6eff21132", + "0x75861ecbe5acf9ef5ede44780f48246aa41d066cd3648d96f047c99a29326ffb", + "0xbe7ad3308b03d4efe4064f3e410b5679b945eece14ae88b17fa8a6f1851b9adf", + "0xb2480065dbf650792e751b31292a5b5b4d3741c4953fa9453bfb13b9b301e1d0", + "0x8ad00c6223281317266cd8ad55dcd787a83ffbf7b06e1ca140ac6c9df1ec3d4d", + "0x769613ab817f33ad8e850edc3ce134c433a78d5621400db68b2d329093071cba", + "0xda7ceaf48d05b365dc5f0dd8e7e99dd2c936b6d56b4f5206913f5b4d0204b6e4", + "0x22f37954e5fac57d4be50165bdbb2d5dcf6cc3e408a00082395dab4062362df4", + "0x4171311ce9e6861edd0b7cf23f6985b842db3533ac8742672c7057ecf2af422f", + "0x1dfdec887f9a8afd6c1aa5d3873eb75757c78fc4059749336cc436a0813a882e", + "0x1b06e12f2b08761337c327dd042211d150a56447b3ac862764c1bf1099c76acc", + "0x840538edcc20e749c6e54911ed935feea5fe3ddcedd053893f9ec5c2d883e430", + "0x65e02a556f7081cbbbb6b330ed515f49d33ad333fd08fbea316eef6f9f1e1bc5", + "0x0259ac911da531b69612380ed23b76722db0db69825b62dde584258796c20f2a", + "0xf474319ef1006ad4b71c252c716fce6c86ce3eda4a85e9a9a429d52847eac60e", + "0x57589ba25ed4dd7ba73a2eddd699330e45c41215e58a32f0d90c2df38e304314", + "0xbf48f75427f0599d90b71a1a4ff9793f160280551c68f4926d3fbefe29a1c269", + "0x75702a49d856e21181e941afe8c06f0b9f0ea75df42ed42488d378290ebe385b", + "0xecf8efab88d554d2b23c6e2fe655439a2ef500b2281e94fb594ee052bc14fcbf", + "0xc6abed44a3d6b9d472d5a70f3c94c919e1a83f989d5e0c5e014d057d0a0a4afa", + "0xb39f873d565515cb0df952b13d6c1032e1b9f15467e35c63a6dd178e384d078b", + "0xc1a1462a79fa154936dfed0bac9ab1d97e43337d91aa8c62552b7e369a2885ff", + "0x83f9c5eccade7bd48532e222f47438e6355f6e0f996d81b87ba4e5221d06b320", + "0x062fc493ef0afc47456bb4bd210930ac486c9ebcc7266583c3fa1e8dfa59a628", + "0x500cb212e4723a40afea27078d27a0a37f4731d33116c7a184ae60a1398e2636", + "0x67d8cb5704920651f1d9b6d72561debd109dfcdfca4e0ecddae4f09c65fbaf83", + "0x3f3cb63f47a39f133a225100630675d7368eea9fd6e7690d739dbe751631fe75", + "0xccc7ecee542d88a7f38d527b4e442d42fcddce3c9d74d35f6fd33e135500f3b2", + "0x695005da9ea891913e1bec5f6d97c9552169247f1a22533d26404458e4dbbcf5", + "0xcea875ff006a32d8dad269f55669f8cd955697c7f7fd7b07226136043b52a4bb", + "0xfbe09841656a3c65a4d831c0927957584099acf699fdaa00e71b9de26f34525b", + "0xdc8b42886fa76307307d4edb923b42cc6eb67d3e25e195e7e05f8aa0eb967af2", + "0x3a3d8e27197099a63e09c23840148874acf9567e5fe8d88ca6a2d99e3f116145", + "0x74c4e73dc04859a08ae7bf7d469299093cb8401e6beb720f534ed01a30dbc0c7", + "0x84787f46bb75471c391717109fbb4a92c4f4c161537adf1e9661cde296918b12", + "0xebce6d93d882b8eeda6f9348f3e8d572cbcf2e6df88fa127e8e1a614dab1b0f7", + "0x1fbac072344ca14c05930fc19aad195dae3c25ffe29a4a8475b0b64b218a33cb", + "0x381b4df5a1d717ad98041480122b6023fa792c6148de5db58bbea7e40cd41d20", + "0xc87bfc610476d389c81fed1d2a1b3d9bc5535f69974dc5643c1535fe8c10f985", + "0xced86f4ad4ff19d8a1ea486e4bd5fa6c206e0b6db21f8fa438a5a22c6cb1e250", + "0x7e65fde194082e34c06d646c6f1d21ec7706e458e7faea03e54a0baafd7556cb", + "0x3179342dea037d102b7f1f74e769de04c449cec68dde436a2fab0585b566f3fc", + "0x441c3bf395e8bd203257174a71d5524d7156f568c5383c62d958067d5f340a3b", + "0x082b814f46a74d13db3f6ac1e52c925891c7aca430ca8e89a88cab883d2cc24f", + "0x9a764446ec809034dfa3d413661ec5c3aec7bc5710e199286e588e70cb176da3", + "0x62b23721832be3b0c4538ad6fe1c5bb7c3b92abe578b1b7ffbfde944a80c200d", + "0xf52a79b71d2252e98418bc07ef73f2ea4bb8cb5a995877f9a61521453f7e3450", + "0x5659dd8fa8b8753b813198fa296b156e643cf922180d38cf1bac91d8bca5ad9d", + "0x09e3afd7d44b0b539271b0b870a92c3221d2f7f743b9ba02d4323dac307ea139", + "0xd72486d95617ff5f5dc361b9b2d728e04578e30851dd0729316946d95fbd9cd0", + "0xca6a9a0ec9a63e06d7da875764e68778456b1c98bb4c0d3fc2c986493dc73c72", + "0xb16eb7bb1564fb7d2d49e6f2f97f26a2c5df622f5b9c68e955c5205735cff001", + "0xd6c65001ff49b50505603ea0f2d34279b48d8ca298359736eb7034626ee4c317", + "0xcd5ba2623df896bf8b43d1c3386425fa940ecbd3629547b051de0aed4322c2d4", + "0x0fad5d5af8aeebb6f5e858c34d51a714f51f8e3d747bcabc286fb07b2f61308c", + "0x93f62cfc4585256a380af952edcbefcc02511cbd55d70e98b6ed7aa5dc0de993", + "0x9093289e66a8f346c84ea4682ebb419716305b7f45d8360b233a3abd9e7a2c05", + "0x62da3d62467bb7469641feac39db85acf269ecdce7bc0addb89f1ddc78f2d3de", + "0xafd6af93bea2e77e7043af55205aba278f729273ff21cbaf00d3ff9ff6e8b8f6", + "0x3051aaa4803fa6f80dc36b435b4c3a5bb8cb9f348e51e7e152a27b4a683c7c8e", + "0x373f6231a73364404bb65305c7a89094013f6a8ae98ca2a75c4230cc1b8d12ad", + "0x3890eaaffc80003294d3797f70881598e7f198fb71dad62cbde054178b5a3ef8", + "0x538faf4c2d6ed3b97821245a38b47695655363bf211d241ff089c52ba6f61bbe", + "0x29548e5c68a65811c8c1eea9cbbd8760d69bf06e93a2fbf1b514bfac0a6282ff", + "0xc4afd9fce4c32c098b6ee5986dd352cf9dd09801ba7c29506cc2a274eb1bb2a3", + "0x933d6dc350acc540c0f95ac6677f927ba7975b650a8ea9c78f1fd73f7483de66", + "0xd14d5991e05ce14fe2bcbd654746fed2ee3baff27689bd83c44ca7a4a43b0650", + "0x973e65b2331d4626ebcc97626b3e54141652363ae890fa79d390cb805b268196", + "0x97b95a0144bba045308021f8a44e34d79f36f6fa7a7504c10fdd090519d98c4e", + "0x6e54a6b12db8f6d74e7c06cd180c9d2a8cb73bdd53f09eb024e107834c054f8d", + "0x29c7b35aeed09d15805c83619c530357262513a712a6baafb75d28c68283a7ad", + "0xd242050949baaa9803b167527cabc4894b314af2ad089d83c5c4cc3f2168038a", + "0xa9c6b7ed7e270b42446895024efc73360a3dd2e5c83c188fb0e428c197e0382b", + "0x3ba79a736c20063395df402cf936221780b586c558eb7199bddc5f951c8a6138", + "0xcaadfa54cfe198b8facfe562bee3d5f5181a4874dbce9fd832efe2c442e97601", + "0xe63a5c0e4963019c6ca9be2df546d4cf6eda4dcdd5b4cc59063ef37d5caaee3c", + "0x11cb204ac6c475b46b330e5188a97506d31ee514fb5423c5cdf7b4ff3f8c2dd3", + "0xec67432c6a36b4f860496173a545fd9501dfb1d35d5d56b9c7e436e85d23eecc", + "0x0905f798d8dcdf854ac0081555b2baff032b1757896813d60bb97fae91fd0a41", + "0xbe28fba21b4f0a161609edfd58c681c69501d25ff2bd93cff4fad72e2c1403a0", + "0x9d68038eb2cec9f0a25466e9a92e512f71f1d3f42baa0fe0a9ace9581721ef59", + "0xe303ef36737f887993b33a55fd72128171c4b10a8af0f2e9d65037b2fd5b0bf4", + "0x69695054a9d422100f001f80a78cdb7d68a160fb735c833e3e29b463151c671d", + "0x3422a23d87658ce8f3496057288e5d82c773c608a5ccea7a2e9db79867147ed2", + "0xd7f7d77b2046684c584f05cf2b9f053a09de702b01e236d14c5d7171ae90277c", + "0x72a1118ec0450001756141d860e1cd0554e711598238901b2ee8f281c427de70", + "0xd19be6dcb740c15351e0d802859a13ac418fa296cee788a2e88696281886d57e", + "0xd3a04e9d3943a1ec817dfc862c34ea20bec6703f20b59a5131e14175624b9f57", + "0xe53093925106f3ab9b0e5104a6cb9833e84c81eeb32525dbf198da95bb0a692e", + "0xf614510acc1dc376c2f9ec0cdabe185c5387ae57e1e7dc2b21e8c9af15e7b0dd", + "0x5397cc3e5ce518f68d40a0371eba89166eb691c85394d2782b87187e5fba95a5", + "0x9156e924006cd6f0e75e5f1b6c6b67d2aa5cd329485633a1f8c81542c6ad73fe", + "0x51947014d3658dc93561abfdf5e59c5545bff2006be70d20752fd0041b4c4993", + "0x17960456465e1fe23d9212dc7379f88de6839d76fd34e328c714109068d1d79d", + "0x71a004f35328853ace7ae57ceaea04ca0ff40a638e2a422d9a77a442f9f8594d", + "0xedb821e436a29e2304c4e582b1edaeab4fa4ce815e327140d34dea1b28eb3cfd", + "0x0fef692f940b1040a8f06dfdd345a509d0d50a47026cb8d76f1137cb0cd172ca", + "0x20df1d7b21fa8f3aa4ae122c90444959ffce4b3bf91bbd12ede4a730cd5281f1", + "0x5a77441704fb00b4e37cd7d992e419cf03c9db67855682b5dc9cc2ec5642d1af", + "0x70e572d6816a924ba8059f7d80ac3dd2da6e378235d9b13f9f75c3bba7358fa6", + "0x820a5912370c8911460bcaf34800c9aa0442c5f6f6346778eb8d0881f0c8bb0c", + "0x03a7ba58c25e37f3eb4632575cd5043335a93256a0df25d4a40054771ae2f1f9", + "0xecd2166fba2cf74b9c39fbff60e390b719cd89d944a2a279fce7548b0449c0cc", + "0x4084df94d1c481f270ec12d24021c2c617c57266c84e5c3c7110f435a23c1f88", + "0x3e3bfdec73b4a43f78177843d0800856eea15d6e4f3421cbd416e30415438090", + "0x9e1b68d2c1da24388da8866036cc9fd41ab619ed4fee244409294690550ded0d", + "0x7fa35eea26c1b7565d773a13519b56788df9d552da0eb31f5f932cf16698cc4a", + "0x6a5327f7999fd0f13d92990c9de4de4326ea7c36b2886c10851e7d8eb6725500", + "0xc43b78bb69ba7948d95bbe6fa417d48c50563d1a299dfc055a45a9ab99463f40", + "0xffeff6f990e8db57d4982faa0ecd50acbd56a0eb408e20e28037b1a7a5da5b59", + "0xc2334f59cd63c7ff3fc656ddc1be9267cabfa0775a2c1d0b6aa031ca0f6d509a", + "0x1e78eeaba6416f172197e83af9d7cffabebc1a7965b7efcc5d81fba214214ba4", + "0xf8af478a5f4950e0f14c533ad42f0fb678d5a4133dd6c24cc99a0325bebcb6d1", + "0x893b2cac08a72a47a50688703bbfa59354d3178ba6edffefe12c1b19fec00764", + "0x14aa1633a0b52136d59bead586a4efafbcc8b39a380979b33c319c1b4eb3c8ac", + "0x7a449e7d7349bed91d4969b6c2930bfd651389b18e6fd95e166a5f3b3dfd6a9e", + "0xc013d618ec1fe221e7542266573294f6a14b03a492c764bd8f9b086a43319c77", + "0x5ae106689e13a32cd3469bb7bffd9650d626088ef3fb6f0efc73cfe53134ff5b", + "0xf64afb533a3e37a80f7edd723cec317d7102d2443d43046a1c7aa961ff961493", + "0x6ae14b675f46a21a82a1a3c159cd776ca3f38a964eaf732a5ac741488de4e00e", + "0xba7cc771fddf1d827ff2e29bbffc15902567a1f1e4b480d44f67031d8ed63793", + "0x40a627652cf9735a888f09dda1d706b98c957eaf01519338eb84a8453e8c753e", + "0x845f31cc82334bf7065a3dc2f567b1ceb1b4ffb2271dc6c53f881c6ab95dba64", + "0xd12c514ff09de9f213b56724dbec8bb105d4460adba79916ff6a1a172d3e263f", + "0x2327c4236f51735b982dd05887d2c80fef76d4024eed66994ab1580052e4d7fb", + "0x05e136fef4858eef97a056a210373a067874a3c9a9f0de31a6723098b5d717c7", + "0xd0e32a96ae165e2d61f1b483b22532f25bfe32aa45f94c6be43a9cbb724c202e", + "0x7b8776f0cb373249d0a55518716efd1e85052e758e19f543c241aa1eff158ca1", + "0xafa4f1c453ce6de8b39979692eda55a9cf5be39ff3cd730d8d5221ea21dc9f28", + "0x54795f6c31496ad41286c5f6c3e52115ef3497d59b926d0594a21907d816988f", + "0xffc48e89cbd6b8368439f57924835d36aec456015a9a3caed6bcc19686c69b51", + "0xcb3c516accb4ffe4e5035f84729c0e26c58a84b86fa6dd454ff6e1071dc402b3", + "0x51a67409c5d05ef1af96dd6c1e3646e0406b3e35baea5d632d8f4038778ca27d", + "0xf094d57aaa807bb6f4e8134467460e8753b50364df56717197e6f627f737906e", + "0x86cb75940bf6be0c4bb3d3cdb88159918afae4c55d26a279402cea6f8d2ccfd0", + "0x85d528f7078e70e3fa3d04fe4ac0e2487960c1e06fefb5f5d5c768f8fde829f8", + "0x7c18f5c8a9f1762cc7cee964d36d0d12e9e64132b9d64708afe614b03fcf2e1f", + "0x8fe9e91f40f64f2a393cd135296f2bd1048d59459f5f6aa92a339349dbc61999", + "0xa61ea3415cf5e47a3da59d7acc939466c1d20c48756ad135bcf544d38824076b", + "0x9d890bb7aed350295e4d0257d9fff826581c80395c5526a97300a6980061822f", + "0x0a677a540c74223bede5ac77d6b53e40cd061841f5ec2acbc1f7875c9569fc53", + "0x82bd62cfa2cfc52bda9d99a2c31ca2ee4b70a4dfc50d08f0dca514bf5005482f", + "0xb26d15256ce584284d73f5b0af2c8ee200d16e40e30110f7b7823869b95eae86", + "0xe586127218814e8feb2f9906ffa74f04bc01c1bb0d685e4b70f37b078e8a2ddf", + "0x63d60bdcd23ea605099aa7f5e46cafff74d271ae3614b7b24c89a3d693422068", + "0x07dd6971aa0e032c8562eeb4299e41c74f5afab19613fef8d976bdf7892e6462", + "0x68d630ba083be8fef27f9846d35b271314448cb2e9f34bbcd4f61cef2db80653", + "0xd40eafd8c080c71f7d7940f0da435be6127051223c9052c383ac02dc3049a7eb", + "0x3a3eaccf11c9648c05656827eb8cbd18905d5795e7cd6ddec682572ba6fc3b20", + "0x6190aa5fe42aeb259a6830672b1968870301cacce8ef21fb6dbf9eef3ace773d", + "0x239bbcbcd51c6aff9f9efa6ff5cc614f72e6df3aed121756006b1187f4d86c79", + "0x123d4c2f434d1a8d59111830fddce85d7b4f64f1e62f30deee3f97de0162bac5", + "0x3e730ce7ba743b7ca91f3acd93b30bfb824722d1f72b2ee584b151ff3c3bea19", + "0x3def4dbaf973b8f612dd400e45a33b193ea77e4a75df97180ec9537d7957f87e", + "0x6a4b4d6b96521f22ce56ae384def1428aa7bb6ca4cd0b1116cb6b9ecf73c9af0", + "0x0e7af6af3a0805046f1e02469d0921ed3128fc5201d773f0979d33d2f336cae7", + "0x21bbf154d3e704b1078b32b0d4a97c468a3d00a2efa1d4a7c0ebbe2b2f572e07", + "0x809330ad07a6a897e5f4d3e88f9c0e8b2b3d7883219afbc37af062f215cc7b92", + "0x928710a7c75346c6a7984b55057cbba2e05cd4d3d185c763769db4130f24105b", + "0xde04fe66a27a785d28e871dcd26f21b57e916cf1793f4584e4e969e7bc2c37b1", + "0x5af449491866d210bfaf3c47e45ea0954a131aad4d7637ddfd7cc5ad3425f8fd", + "0xbf383c8d01735d77b6207bbd9eba88e0d7c8a916610d86be263cb4032c13fde1", + "0xb93c0e248ff221aac5c090475c777975d8bb9d5c93d44fe073fd29f465ef25d4", + "0x3d16452b3cf0109768630044086b7f5f9949b60acf4b007d323ef476bc3f0855", + "0x1ccf023ff32b0751eacdcb7a0e6af68fbd5e7dd6d71db40dfe2f5f0b4c031bc3", + "0x061f48dbae0f5b0eb2ed1536f5f494ea6ca560a2c833b1dc9cc3804b429d01de", + "0x37ad2c019ce57c0ad520940199a304d84277bb68c6921103a8ed05e9e92350c8", + "0xa00a8323f032589d2d2bcee02c844b6c121144a17d5cd980718cb4365ef52680", + "0x21392973724ba280fd1aaa9bd9af4a39492d05dd26b9859fdeb3dc2de94850ca", + "0xa52bddb394523970d8483c93ebd1587d19bf41d91db4478a3d59e04688923ee7", + "0xa9a5ec6db281726f1e29d847510f454caa79ad70655e05ff37b396cd07f8943d", + "0xddb529c1dc9e915a1138822ba9856f11f1a2cd6ee396b435264910a7b8a3822d", + "0x16837c1968a89f8b06f81fb6d762a176da0f76a6e33702c874b827f53acf2cec", + "0x22c6a11cb8b4c6abd624a097eef3afbddfc20b19b0a28cc2342bc527edc81eeb", + "0x1fca7e93a1c9a9a194e177c3e61ce180e1c555908127ab751afd128de00ca934", + "0xbc8c239ad0f1241d35e3ce0a0b76f9e1cd3648932f59a45e1cd7ed431941d43f", + "0xb05d13ed67183420496de5beb3e70796e97e324a4917f646808b37a071a420ba", + "0x27832944c1d8257a21c7ca3ef09c0d2da2a6adc231a1d3cc1f05326c523ce5e4", + "0x16bd1db9f272fb09880fc56d0d479ea83bb7d3fed115be5148ea567731ead1ce", + "0xa9f4f3e273a684e3ebe1d4c2c5c3e99690dc9b0be6c998270d2dcf88392daced", + "0xa541cffed5ee8f0ed241e164443df8bb8d86d4bf709848f082067a15048dfefc", + "0xa0018276c51bab875d0604f0ce4a742f172a3e2966ea532131896b6016c5f117", + "0xe39f2c1d9c1e787738c97ddb7a572bf68a3caaa8770ba29bfa19a7bb07523f3d", + "0x7bcad3b97bd9cf53d62907a328c8a3afc2299b7803ee49d51b48195362f4cd0e", + "0x3b2d518f0246d68a05015598478fe9699c59ca9bbb9a2407209195238511e6ea", + "0xcb67150a83c179ea6485edf64e7d048b4ee700bd4f25e58ddb39035c2de70596", + "0xf06a3f425c380c6f41b30d12b7ec84807ea8a48f847ca39c022dfee4b1d329b0", + "0x45cae9a13323cca0620866bfdd29738086d29b3f13be2d7ba37435f2d6970133", + "0xd28a77dafa38b03ef77ec931863d714c2606da08ee4650da537d37195554ff46", + "0x5654fac4aa4fdd1b9e861d60bd5c8b439ea22be1cc6a5bf8ae33f6527557c614", + "0x3b8bcd37cd5213cba8fb58766e02723a940bfc7a3bf1c2d86798fa96591dc1fd", + "0xb83158b79995fb0194b90d469bd778372fdb05f7ac73c5dee4054663915bef65", + "0xbcc57ae2d7de6e4f035199645aafa7c5a2961a2a719492e4383dc10f175a74c0", + "0x064b737e28145b5966f8e6b57a82b55aa3259394bb2d9724f56a38774c9da28b", + "0xa5603f7d9f8074cf15c38b81ecbe74d204287dd20658f1fa8defec7fd1af82e2", + "0x7f84a0cc9f7c00416c1ead9cd147b032ee331cc4b8f8a50286a3c0490f3e3ae3", + "0xcafa7be96bd0eec075b24e104c7a45984fc485b465ddd07c605196773d1d2c8b", + "0x1df7d26ff663b82de2e8b61508c6f2d4a887780bc352adc8de04757bf893482e", + "0x1aa8dc5bcab34596fdeace8239cfc0e276338870e93f98729a186ed79f31367b", + "0x843fb16c8c27cbb4939e7866d5c85fe520af6837edf73623216e775bf20f06d9", + "0xb71ecf25beb948644b41ccc6d5757fe79ce134b04d57cd7c926784fcdaf7b5fb", + "0xc537fa771675139a050e2bfa006aa11f57f004073c194c35d651f6121a30f6b2", + "0xf255d36d2bf6820b49cb24eb73cbb8c47ccab618de312ff7eb6cfc7937611fc1", + "0xd49dd620f0d4a4f987815d31cfc3b560005a069f3e83443fd33f46f091f4c506", + "0x6dcc0592f053243a8350705a0dc97507216dfdb4176c0738d5a355ac7e3045cc", + "0x60640bf7d73e49e213734edb953cd4a013cb8a5b69c29aa0ce02233c9ddd1233", + "0x786951be5c53fccec94f014d4e27806f5cc7d3392f1358fd8e11c27beb2b4183", + "0x4c66f28fd5c9990332a4887662dbc99ed5367cfc3ce10acbeed6e55f2efad9a4", + "0x54b2a8eed380430a9ef311ff8540089080fb7925a2d2251ddec3b8afef8234ad", + "0x84a6a38cb3e78edf671ae775997414ee25e61f2729c54c91efdb66df630742de", + "0x9c49abf630b8fb3d73d063a189cad528c0abc4b8c0278687da74b649a2ddceca", + "0x29b1704440ab5d6e9c0d33b73743ecadac8d4bcc266c41f65c698f0cb5a7f63b", + "0x6e674e7459e87c76259ec1a2043ba85d813491afb80beb4f52cbce2a0094f12b", + "0x8041a526aa1b7902848007e195d12226b1bb6bc6edb4f6908f9f8280641925cb", + "0xe61ad33e75f8be18a12d3e19d9d21c3cd025e7cddf471ca81afc5ffff037e6f3", + "0x966df4d98827b298391c2ddc42020d616317c3fada2b2669624df77eb094e8f9", + "0xda2d77843ab5d4d04bc2f969052ff2e9ca5a37bb337d5cb88c4e6586bbd68d7f", + "0x5138cbf64fc819e065e2747648615b4e885638b63e7559c4ab48038d79b5d736", + "0x4135daf130280c035422841f66801a1d5a47d1a6ff0ce369001f1e69d56efb36", + "0x211e30168bd1511b45f627506892a09590e5fc8c9445a083a2de9ce19abfbb90", + "0x15d35f6144c6a7efbd7ff31a5e74fac71d77828cd1c7d1b8585a50a3a0470b52", + "0xe3a65c1bbac89de608a238d16fe4b731f3a1bb891aefff297a9a814c020c076d", + "0x6b451effa44e9b9a78ea9f75d6a703631597f758b6a72b09156a1f649a40a469", + "0x95b208a56b41def22bf993ffbb2b3203d2ea77c4950e400356e4a93d0e39eca7", + "0x4586ff01941a4aed359b8da7bbd781e68e389041abba7c7d4799d2c0b69a68ab", + "0xfbbfb1e0b5076d6a7b27305d49e85e753989efb8d0b60f05873aaf389e145188", + "0x4cdfe0f66e345d5e236707a630779c9d2626949105b8496c5a474372041c51b9", + "0x4009331fafcbcd51419930e20371a81a728f587fc5451064b3e30f96b92006ac", + "0x1fccb0663f77a7d8fd817e27dd23f944072f9cdd8f4db2bcb18cb25c43a44e65", + "0x8acb488d06ef20328d1e2273dc1f2b86333cf141ee45ef197a0d85b4511f71ad", + "0x6fdeb5d759d17d9a41c5c23ccce53be6a339a4281a94229605ff3a8ef0108bf3", + "0x91fae20d86ecbf24bce76f5549919e14e0c68b626b0e1029b757f6c47e6d0ccb", + "0xf94240a3835f000b16978ac341b78cf47749ee4f50b75fa604b05609a1a93480", + "0x48724b3a9fc3c561dece8290e98ca194a82303ee668986b4ab4cfda1024cbaf4", + "0x54be60b8d2cb74111a722a7701c003320f903711a28f3fd95f0595a145f549e9", + "0x3dcdb34a158e3e772ff2c59ee5445a3ca61be010275e7326cc932875709f9875", + "0xf3b121df3e45d4f19d9f4d44b129d3882383c71ae5551752d9be0686a9320bd3", + "0x2fafef8a4c9efd8d964dd837b6ecda0f96a126881ce1d49e9cdf2e87b665a6c6", + "0xed4ca0414f558cfba4da48618992dd35b8763086100d8d2b18d65a100c6b4607", + "0x97c0b83741c4e2c8f9201254f40d7f67b1a54962d02a1d578ec7eab0559b023b", + "0x81e9f38d62c67f456135450e87155eb0f71a490a06292fb582d012f287872974", + "0x38bea72de640a233cd181d16f80873b71015963a06636bdce39683f4adce850a", + "0xb0dffaab6ecd9acd3e18ecac5cff4ae6d3218630c2c92463762dc40282529dec", + "0x380555e6207cd035475dc10d8d69d49d2b6c6762f3c12fcb9dd0bc8c977dc330", + "0x57eed5f25a20f20b1fdcc4b03c29457e278ba9d854adbd0b30311aa72717393c", + "0xe66251a1f18e28afce206bd9778458a14c34799751b8dbce11a54b7a33ce5961", + "0x030c049cb797c288248def3fae9d82ac16244b1e97defe570497e85a47132534", + "0xaf32abb9a98798238af391309e8abe48d082cf20b38b85e2be433b710cf8df23", + "0x36935c94d5aaf8818c77ec5858030c547ee41a39c5d7d6cb47c728f8addefea3", + "0xec783f1d068308d0731336afca7f01a4d74319a95135a4aa7dc148516a54821f", + "0x342c01e292f2dd33e4f27caff58421da0589e8c14496d26abc6c76fccc0a50b5", + "0x2b64b35b10ec75bab483c242a1a35c943840b5c2c4b4c469afc845d7c5bba02a", + "0x34762a557170ed1a82d921c04240fe265f20908f264b670916ebbcfeb3bee59e", + "0xd566f848784e163a432c3a5de93d41b428e48710d22f27e3ce3b576977824bd7", + "0x1df1e674b2fadbbb970dcef6c13037d7688646d4ae063dcebfc6e0e2ff858898", + "0x706edfb454d513f47d290c0571b3a2cdd249928ae0ea7b06a39da05abf3aa637", + "0xa67886701eb8d0a28efebaf06acab77965595cda6970dbd26e50178ff09e6757", + "0x9dba4d0baa8c0a035e1cbb5e8e751013da8a98d8b70c2a4dc037f89d166f0180", + "0x5a5fdb3656bd50635f2a62685199c0ae135f2ad68059681219066aed079ee23e", + "0x243602e30ea061853ceb1c2dc0c39240548b656354be710cec3bb9facad8550b", + "0x97beaca9ffc0142d5bdb759b8c2ca340e60f422dab507ccb710009e49641bd79", + "0x371cca4f59c01ef18996aba60bd647df238128b58245e2fcfcd46b8ad37fe67b", + "0xd4800dafc3cf31fb7126cb750cc04c9a09c8c313ac21c4d104455bc1205cb62f", + "0x5a4540b39ad3a2b0b0628cc63cabaa95c3f380f0589ae05abf28ca7eba9bd2c7", + "0xe895260d744db389d7f4db88319fc604b6e8518837b4c74bcf306e6ff5380bb0", + "0xc59f667005ce3d53c1ffa9d20182b90a2088e10eb9283de3baae435956c48293", + "0x6d7b1f5141e279b906bac93e6ec82c701edb1a9a7e3db1bca7d164515c1251ac", + "0x1de48aee06ef7f90c4f16a553a8c142cd42212cf5dd1c68935d7a3a11cf42ee9", + "0x4d0322187e4aa50cc91fce589824e5db8542c0246a861571ecc8df118fb0f970" + ] + }, + "accounts": { + "0x0000000000000000000000000000000000000005": { + "builtin": { + "name": "modexp", + "activate_at": "0x0", + "pricing": { + "modexp": { + "divisor": 20 + } + } + } + }, + "0x0000000000000000000000000000000000000006": { + "builtin": { + "name": "alt_bn128_add", + "pricing": { + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} + } + } + } + }, + "0x0000000000000000000000000000000000000007": { + "builtin": { + "name": "alt_bn128_mul", + "pricing": { + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} + } + } + } + }, + "0x0000000000000000000000000000000000000008": { + "builtin": { + "name": "alt_bn128_pairing", + "pricing": { + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} + } + } + } + }, + "0x0000000000000000000000000000000000000001": { + "balance": "1", + "builtin": { + "name": "ecrecover", + "pricing": { + "linear": { + "base": 3000, + "word": 0 + } + } + } + }, + "0x0000000000000000000000000000000000000002": { + "balance": "1", + "builtin": { + "name": "sha256", + "pricing": { + "linear": { + "base": 60, + "word": 12 + } + } + } + }, + "0x0000000000000000000000000000000000000003": { + "balance": "1", + "builtin": { + "name": "ripemd160", + "pricing": { + "linear": { + "base": 600, + "word": 120 + } + } + } + }, + "0x0000000000000000000000000000000000000004": { + "balance": "1", + "builtin": { + "name": "identity", + "pricing": { + "linear": { + "base": 15, + "word": 3 + } + } + } + } + }, + "nodes": [ + "enode://1c19ba0a77dd663b843c33beb9020e7eb41fc34b47b98424dbc427f74692115d74c7c27b6c0aa2b59bb1d8f710650cae1090153d10b6909ca7bdcdfb183b1c59@54.39.190.172:30303", + "enode://c1c3a604950119f82d78189792b73f5a82a239017c77465e3c32fc51c1d758a9a772ffddd58436d465342f2cfa6d4a442a49e526743f4d8354d7c5ce794c3ee5@95.179.222.48:30303" + ] } + diff --git a/ethcore/res/instant_seal.json b/ethcore/res/instant_seal.json index baafeb5bdf7..b2199ebc35a 100644 --- a/ethcore/res/instant_seal.json +++ b/ethcore/res/instant_seal.json @@ -24,6 +24,9 @@ "eip211Transition": "0x0", "eip214Transition": "0x0", "eip658Transition": "0x0", + "eip145Transition": "0x0", + "eip1014Transition": "0x0", + "eip1052Transition": "0x0", "wasmActivationTransition": "0x0" }, "genesis": { @@ -47,12 +50,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_add", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -61,12 +65,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_mul", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -75,14 +80,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_pairing", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/null.json b/ethcore/res/null.json index 5128f26c59c..82062366d8d 100644 --- a/ethcore/res/null.json +++ b/ethcore/res/null.json @@ -40,12 +40,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_add", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 500, - "eip1108_transition_price": 150 + "0": { + "price": { "alt_bn128_const_operations": { "price": 500 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 150 }} } } } @@ -54,12 +55,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_mul", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_const_operations": { - "price": 40000, - "eip1108_transition_price": 6000 + "0": { + "price": { "alt_bn128_const_operations": { "price": 40000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_const_operations": { "price": 6000 }} } } } @@ -68,14 +70,13 @@ "balance": "1", "builtin": { "name": "alt_bn128_pairing", - "activate_at": 0, - "eip1108_transition": "0x7fffffffffffff", "pricing": { - "alt_bn128_pairing": { - "base": 100000, - "pair": 80000, - "eip1108_transition_base": 45000, - "eip1108_transition_pair": 34000 + "0": { + "price": { "alt_bn128_pairing": { "base": 100000, "pair": 80000 }} + }, + "0x7fffffffffffff": { + "info": "EIP 1108 transition", + "price": { "alt_bn128_pairing": { "base": 45000, "pair": 34000 }} } } } diff --git a/ethcore/res/null_morden_with_finality.json b/ethcore/res/null_morden_with_finality.json new file mode 100644 index 00000000000..ea503ed29a8 --- /dev/null +++ b/ethcore/res/null_morden_with_finality.json @@ -0,0 +1,38 @@ +{ + "name": "Morden", + "engine": { + "null": { + "params": { + "immediateFinalization": true + } + } + }, + "params": { + "gasLimitBoundDivisor": "0x0400", + "accountStartNonce": "0x0", + "maximumExtraDataSize": "0x20", + "minGasLimit": "0x1388", + "networkID" : "0x2" + }, + "genesis": { + "seal": { + "ethereum": { + "nonce": "0x00006d6f7264656e", + "mixHash": "0x00000000000000000000000000000000000000647572616c65787365646c6578" + } + }, + "difficulty": "0x20000", + "author": "0x0000000000000000000000000000000000000000", + "timestamp": "0x00", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "extraData": "0x", + "gasLimit": "0x2fefd8" + }, + "accounts": { + "0000000000000000000000000000000000000001": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } } }, + "0000000000000000000000000000000000000002": { "balance": "1", "nonce": "1048576", "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } }, + "0000000000000000000000000000000000000003": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } }, + "0000000000000000000000000000000000000004": { "balance": "1", "nonce": "1048576", "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } }, + "102e61f5d8f9bc71d0ad4a084df4e65e05ce0e1c": { "balance": "1606938044258990275541962092341162602522202993782792835301376", "nonce": "1048576" } + } +} diff --git a/ethcore/res/spec_backward_compability.json b/ethcore/res/spec_backward_compability.json new file mode 100644 index 00000000000..e8ce98a6ec4 --- /dev/null +++ b/ethcore/res/spec_backward_compability.json @@ -0,0 +1,155 @@ +{ + "name": "Volta", + "engine": { + "authorityRound": { + "params": { + "stepDuration": "5", + "validators": { + "contract": "0x1204700000000000000000000000000000000000" + }, + "maximumUncleCountTransition": "0", + "maximumUncleCount": "0", + "blockRewardContractAddress": "0x1204700000000000000000000000000000000002", + "blockRewardContractTransition": "0" + } + } + }, + "params": { + "networkID": "0x12047", + "maximumExtraDataSize": "0x20", + "gasLimitBoundDivisor": "0x400", + "minGasLimit": "0x1388", + "maxCodeSize": "0x6000", + "eip140Transition": "0x0", + "eip211Transition": "0x0", + "eip214Transition": "0x0", + "eip658Transition": "0x0", + "eip145Transition": "0x0", + "eip1014Transition": "0x0", + "eip1052Transition": "0x0", + "registrar": "0x1204700000000000000000000000000000000006" + }, + "genesis": { + "seal": { + "authorityRound": { + "step": "0x0", + "signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + } + }, + "difficulty": "0x20000", + "gasLimit": "0x5B8D80" + }, + "accounts": { + "0x0000000000000000000000000000000000000001": { + "balance": "1", + "builtin": { + "name": "ecrecover", + "activate_at": "0", + "pricing": { + "linear": { + "base": 3000, + "word": 0 + } + } + } + }, + "0x0000000000000000000000000000000000000002": { + "balance": "1", + "builtin": { + "name": "sha256", + "activate_at": "0", + "pricing": { + "linear": { + "base": 60, + "word": 12 + } + } + } + }, + "0x0000000000000000000000000000000000000003": { + "balance": "1", + "builtin": { + "name": "ripemd160", + "activate_at": "0", + "pricing": { + "linear": { + "base": 600, + "word": 120 + } + } + } + }, + "0x0000000000000000000000000000000000000004": { + "balance": "1", + "builtin": { + "name": "identity", + "activate_at": "0", + "pricing": { + "linear": { + "base": 15, + "word": 3 + } + } + } + }, + "0x0000000000000000000000000000000000000005": { + "balance": "1", + "builtin": { + "name": "modexp", + "activate_at": "0", + "pricing": { + "modexp": { + "divisor": 20 + } + } + } + }, + "0x0000000000000000000000000000000000000006": { + "balance": "1", + "builtin": { + "name": "alt_bn128_add", + "activate_at": "0", + "pricing": { + "linear": { + "base": 500, + "word": 0 + } + } + } + }, + "0x0000000000000000000000000000000000000007": { + "balance": "1", + "builtin": { + "name": "alt_bn128_mul", + "activate_at": "0", + "pricing": { + "linear": { + "base": 40000, + "word": 0 + } + } + } + }, + "0x0000000000000000000000000000000000000008": { + "balance": "1", + "builtin": { + "name": "alt_bn128_pairing", + "activate_at": "0", + "pricing": { + "alt_bn128_pairing": { + "base": 100000, + "pair": 80000 + } + } + } + } + }, + "nodes": [ + "enode://59c9250cb805409e84c9cd0038e97d8e5e4605b928663675869ebdfd4c251d80ccad76267a5eb2f4362ddceb5ec671f7595463adfc0a12e9f68dbf233072db41@54.70.158.106:30303", + "enode://e487ebacbdad3418905d2ed7f009fa5dbd17d73880854884acc604c0afc1a60a396aa90cb2741278c555a4e30ffc6ffc1c29e83840aa22009ec92fe53f81ec04@99.81.92.124:30303", + "enode://563f12602a117201b39ebeea108185abb15d9286830c074640c9fccbaaaabcc7fe2c95682cc43f95b95059f6d0dc4c9becbc1b2bd78e0c5ef5fddff07d85ba0e@54.201.62.74:30303", + "enode://5903b3acebdc4a34800f6923e5f3aec3ca7e5d1285bec4adb9f20ebb0f87a3bebdd748b1849ca1108a9f1e37ff9ced0b475292b8effc29e95d49ec438f244b02@3.121.165.10:30303", + "enode://8f8e35a6dcacfee946f46447b4703c84f4e485e478143997f86b1834e1b0bb78dab363d700dff3147442b9d3e2a1c521f79340c436eb7245a97c7fe385b89a5d@54.93.159.98:30303", + "enode://bd228aa03cf4a88491c81c5f3ab4a1437df3b463081cc93943c4d3ab37f1e4f8081c6995eca076f717d4fdf9a277c750bd0289477ac151f1e2b024747dcd1747@52.31.129.130:30303" + ] +} diff --git a/ethcore/src/client/client.rs b/ethcore/src/client/client.rs index 12372b83ee1..43cf42bbd6d 100644 --- a/ethcore/src/client/client.rs +++ b/ethcore/src/client/client.rs @@ -17,23 +17,27 @@ use std::cmp; use std::collections::{HashSet, BTreeMap, VecDeque}; use std::str::FromStr; -use std::sync::atomic::{AtomicUsize, AtomicBool, Ordering as AtomicOrdering}; +use std::str::from_utf8; +use std::convert::TryFrom; +use std::sync::atomic::{AtomicUsize, AtomicI64, AtomicBool, Ordering as AtomicOrdering}; use std::sync::{Arc, Weak}; -use std::time::{Instant, Duration}; +use std::io::{BufReader, BufRead}; +use std::time::{Duration, Instant}; use blockchain::{BlockReceipts, BlockChain, BlockChainDB, BlockProvider, TreeRoute, ImportRoute, TransactionAddress, ExtrasInsert, BlockNumberKey}; use bytes::Bytes; -use call_contract::{CallContract, RegistryInfo}; -use ethcore_miner::pool::VerifiedTransaction; -use ethereum_types::{H256, H264, Address, U256}; -use evm::Schedule; +use bytes::ToPretty; +use error::Error; +use ethereum_types::{Address, H256, H264, U256}; use hash::keccak; -use io::IoChannel; +use call_contract::CallContract; +use ethcore_miner::pool::VerifiedTransaction; use itertools::Itertools; -use journaldb; -use kvdb::{DBValue, KeyValueDB, DBTransaction}; +use kvdb::{DBTransaction, DBValue, KeyValueDB}; use parking_lot::{Mutex, RwLock}; use rand::OsRng; +use rlp::PayloadInfo; +use rustc_hex::FromHex; use types::transaction::{self, LocalizedTransaction, UnverifiedTransaction, SignedTransaction, Action}; use trie::{TrieSpec, TrieFactory, Trie}; use types::ancestry_action::AncestryAction; @@ -43,6 +47,7 @@ use types::log_entry::LocalizedLogEntry; use types::receipt::{Receipt, LocalizedReceipt}; use types::{BlockNumber, header::{Header, ExtendedHeader}}; use vm::{EnvInfo, LastHashes}; +use types::data_format::DataFormat; use block::{LockedBlock, Drain, ClosedBlock, OpenBlock, enact_verified, SealedBlock}; use client::ancient_import::AncientVerifier; @@ -51,19 +56,19 @@ use client::{ ReopenBlock, PrepareOpenBlock, ScheduleInfo, ImportSealedBlock, BroadcastProposalBlock, ImportBlock, StateOrBlock, StateInfo, StateClient, Call, AccountData, BlockChain as BlockChainTrait, BlockProducer, SealedBlockImporter, - ClientIoMessage, BlockChainReset + ClientIoMessage, BlockChainReset, ImportExportBlocks }; use client::{ BlockId, TransactionId, UncleId, TraceId, ClientConfig, BlockChainClient, TraceFilter, CallAnalytics, Mode, ChainNotify, NewBlocks, ChainRoute, PruningInfo, ProvingBlockChainClient, EngineInfo, ChainMessageType, - IoClient, BadBlocks, + IoClient, BadBlocks, traits::ForceUpdateSealing }; use client::bad_blocks; use engines::{MAX_UNCLE_AGE, EthEngine, EpochTransition, ForkChoice, EngineError}; use engines::epoch::PendingTransition; use error::{ - ImportErrorKind, ExecutionError, CallError, BlockError, + ImportErrorKind, ExecutionError, CallError, BlockError, ImportError, QueueError, QueueErrorKind, Error as EthcoreError, EthcoreResult, ErrorKind as EthcoreErrorKind }; use executive::{Executive, Executed, TransactOptions, contract_address}; @@ -80,7 +85,9 @@ use verification::queue::kind::blocks::Unverified; use verification::{PreverifiedBlock, Verifier, BlockQueue}; use verification; use ansi_term::Colour; - +use call_contract::RegistryInfo; +use io::IoChannel; +use vm::Schedule; // re-export pub use types::blockchain_info::BlockChainInfo; pub use types::block_status::BlockStatus; @@ -153,7 +160,7 @@ struct Importer { pub import_lock: Mutex<()>, // FIXME Maybe wrap the whole `Importer` instead? /// Used to verify blocks - pub verifier: Box>, + pub verifier: Box>, /// Queue containing pending blocks pub block_queue: BlockQueue, @@ -196,7 +203,7 @@ pub struct Client { pruning: journaldb::Algorithm, /// Client uses this to store blocks, traces, etc. - db: RwLock>, + db: RwLock>, state_db: RwLock, @@ -210,7 +217,7 @@ pub struct Client { io_channel: RwLock>, /// List of actors to be notified on certain chain events - notify: RwLock>>, + notify: RwLock>>, /// Queued transactions from IO queue_transactions: IoChannelQueue, @@ -232,12 +239,12 @@ pub struct Client { history: u64, /// An action to be done if a mode/spec_name change happens - on_user_defaults_change: Mutex) + 'static + Send>>>, + on_user_defaults_change: Mutex) + 'static + Send>>>, registrar_address: Option
, /// A closure to call when we want to restart the client - exit_handler: Mutex>>, + exit_handler: Mutex>>, importer: Importer, } @@ -248,8 +255,13 @@ impl Importer { engine: Arc, message_channel: IoChannel, miner: Arc, - ) -> Result { - let block_queue = BlockQueue::new(config.queue.clone(), engine.clone(), message_channel.clone(), config.verifier_type.verifying_seal()); + ) -> Result { + let block_queue = BlockQueue::new( + config.queue.clone(), + engine.clone(), + message_channel.clone(), + config.verifier_type.verifying_seal() + ); Ok(Importer { import_lock: Mutex::new(()), @@ -475,7 +487,16 @@ impl Importer { // // The header passed is from the original block data and is sealed. // TODO: should return an error if ImportRoute is none, issue #9910 - fn commit_block(&self, block: B, header: &Header, block_data: encoded::Block, pending: Option, client: &Client) -> ImportRoute where B: Drain { + fn commit_block( + &self, + block: B, + header: &Header, + block_data: encoded::Block, + pending: Option, + client: &Client + ) -> ImportRoute + where B: Drain + { let hash = &header.hash(); let number = header.number(); let parent = header.parent_hash(); @@ -1017,15 +1038,16 @@ impl Client { } /// Get a copy of the best block's state. - pub fn latest_state(&self) -> State { + pub fn latest_state_and_header(&self) -> (State, Header) { let header = self.best_block_header(); - State::from_existing( + let state = State::from_existing( self.state_db.read().boxed_clone_canon(&header.hash()), *header.state_root(), self.engine.account_start_nonce(header.number()), self.factories.clone() ) - .expect("State root of best block header always valid.") + .expect("State root of best block header always valid."); + (state, header) } /// Attempt to get a copy of a specific block's final state. @@ -1035,9 +1057,9 @@ impl Client { /// is unknown. pub fn state_at(&self, id: BlockId) -> Option> { // fast path for latest state. - match id.clone() { - BlockId::Latest => return Some(self.latest_state()), - _ => {}, + if let BlockId::Latest = id { + let (state, _) = self.latest_state_and_header(); + return Some(state) } let block_number = match self.block_number(id) { @@ -1071,8 +1093,9 @@ impl Client { } /// Get a copy of the best block's state. - pub fn state(&self) -> Box { - Box::new(self.latest_state()) as Box<_> + pub fn state(&self) -> impl StateInfo { + let (state, _) = self.latest_state_and_header(); + state } /// Get info on the cache. @@ -1525,8 +1548,8 @@ impl ImportBlock for Client { impl StateClient for Client { type State = State<::state_db::StateDB>; - fn latest_state(&self) -> Self::State { - Client::latest_state(self) + fn latest_state_and_header(&self) -> (Self::State, Header) { + Client::latest_state_and_header(self) } fn state_at(&self, id: BlockId) -> Option { @@ -2079,7 +2102,7 @@ impl BlockChainClient for Client { blocks }; - Ok(self.chain.read().logs(blocks, |entry| filter.matches(entry), filter.limit)) + Ok(chain.logs(blocks, |entry| filter.matches(entry), filter.limit)) } fn filter_traces(&self, filter: TraceFilter) -> Option> { @@ -2401,7 +2424,9 @@ impl ImportSealedBlock for Client { let raw = block.rlp_bytes(); let header = block.header.clone(); let hash = header.hash(); - self.notify(|n| n.block_pre_import(&raw, &hash, header.difficulty())); + self.notify(|n| { + n.block_pre_import(&raw, &hash, header.difficulty()) + }); let route = { // Do a super duper basic verification to detect potential bugs @@ -2489,19 +2514,22 @@ impl ::miner::TransactionVerifierClient for Client {} impl ::miner::BlockChainClient for Client {} impl super::traits::EngineClient for Client { - fn update_sealing(&self) { - self.importer.miner.update_sealing(self) + fn update_sealing(&self, force: ForceUpdateSealing) { + self.importer.miner.update_sealing(self, force) } fn submit_seal(&self, block_hash: H256, seal: Vec) { - let import = self.importer.miner.submit_seal(block_hash, seal).and_then(|block| self.import_sealed_block(block)); + let import = self.importer.miner.submit_seal(block_hash, seal) + .and_then(|block| self.import_sealed_block(block)); if let Err(err) = import { warn!(target: "poa", "Wrong internal seal submission! {:?}", err); } } fn broadcast_consensus_message(&self, message: Bytes) { - self.notify(|notify| notify.broadcast(ChainMessageType::Consensus(message.clone()))); + self.notify(|notify| { + notify.broadcast(ChainMessageType::Consensus(message.clone())) + }); } fn epoch_transition_for(&self, parent_hash: H256) -> Option<::engines::EpochTransition> { @@ -2558,13 +2586,139 @@ impl ProvingBlockChainClient for Client { impl SnapshotClient for Client {} -impl Drop for Client { - fn drop(&mut self) { - if let Some(c) = Arc::get_mut(&mut self.engine) { - c.stop() - } else { - warn!(target: "shutdown", "unable to get mut ref for engine for shutdown."); + +impl ImportExportBlocks for Client { + fn export_blocks<'a>( + &self, + mut out: Box, + from: BlockId, + to: BlockId, + format: Option + ) -> Result<(), String> { + let from = self.block_number(from).ok_or("Starting block could not be found")?; + let to = self.block_number(to).ok_or("End block could not be found")?; + let format = format.unwrap_or_default(); + + for i in from..=to { + if i % 10000 == 0 { + info!("#{}", i); + } + let b = self.block(BlockId::Number(i)) + .ok_or("Error exporting incomplete chain")? + .into_inner(); + match format { + DataFormat::Binary => { + out.write(&b) + .map_err(|e| { + format!("Couldn't write to stream. Cause: {}", e) + })?; + } + DataFormat::Hex => { + out.write_fmt(format_args!("{}\n", b.pretty())) + .map_err(|e| { + format!("Couldn't write to stream. Cause: {}", e) + })?; + } + } } + Ok(()) + } + + fn import_blocks<'a>( + &self, + mut source: Box, + format: Option + ) -> Result<(), String> { + const READAHEAD_BYTES: usize = 8; + + let mut first_bytes: Vec = vec![0; READAHEAD_BYTES]; + let mut first_read = 0; + + let format = match format { + Some(format) => format, + None => { + first_read = source.read(&mut first_bytes) + .map_err(|_| { + "Error reading from the file/stream." + })?; + match first_bytes[0] { + 0xf9 => DataFormat::Binary, + _ => DataFormat::Hex, + } + } + }; + + let do_import = |bytes: Vec| { + let block = Unverified::from_rlp(bytes).map_err(|_| "Invalid block rlp")?; + let number = block.header.number(); + while self.queue_info().is_full() { + std::thread::sleep(Duration::from_secs(1)); + } + match self.import_block(block) { + Err(Error(EthcoreErrorKind::Import(ImportErrorKind::AlreadyInChain), _)) => { + trace!("Skipping block #{}: already in chain.", number); + } + Err(e) => { + return Err(format!("Cannot import block #{}: {:?}", number, e)); + }, + Ok(_) => {}, + } + Ok(()) + }; + + match format { + DataFormat::Binary => { + loop { + let (mut bytes, n) = if first_read > 0 { + (first_bytes.clone(), first_read) + } else { + let mut bytes = vec![0; READAHEAD_BYTES]; + let n = source.read(&mut bytes) + .map_err(|err| { + format!("Error reading from the file/stream: {:?}", err) + })?; + (bytes, n) + }; + if n == 0 { break; } + first_read = 0; + let s = PayloadInfo::from(&bytes) + .map_err(|e| { + format!("Invalid RLP in the file/stream: {:?}", e) + })?.total(); + bytes.resize(s, 0); + source.read_exact(&mut bytes[n..]) + .map_err(|err| { + format!("Error reading from the file/stream: {:?}", err) + })?; + do_import(bytes)?; + } + } + DataFormat::Hex => { + for line in BufReader::new(source).lines() { + let s = line + .map_err(|err| { + format!("Error reading from the file/stream: {:?}", err) + })?; + let s = if first_read > 0 { + from_utf8(&first_bytes) + .map_err(|err| { + format!("Invalid UTF-8: {:?}", err) + })? + .to_owned() + &(s[..]) + } else { + s + }; + first_read = 0; + let bytes = s.from_hex() + .map_err(|err| { + format!("Invalid hex in file/stream: {:?}", err) + })?; + do_import(bytes)?; + } + } + }; + self.flush_queue(); + Ok(()) } } @@ -2613,8 +2767,52 @@ fn transaction_receipt( } } +/// Queue some items to be processed by IO client. +struct IoChannelQueue { + /// Using a *signed* integer for counting currently queued messages since the + /// order in which the counter is incremented and decremented is not defined. + /// Using an unsigned integer can (and will) result in integer underflow, + /// incorrectly rejecting messages and returning a FullQueue error. + currently_queued: Arc, + limit: i64, +} + +impl IoChannelQueue { + pub fn new(limit: usize) -> Self { + let limit = i64::try_from(limit).unwrap_or(i64::max_value()); + IoChannelQueue { + currently_queued: Default::default(), + limit, + } + } + + pub fn queue(&self, channel: &IoChannel, count: usize, fun: F) -> EthcoreResult<()> where + F: Fn(&Client) + Send + Sync + 'static, + { + let queue_size = self.currently_queued.load(AtomicOrdering::Relaxed); + if queue_size >= self.limit { + let err_limit = usize::try_from(self.limit).unwrap_or(usize::max_value()); + bail!("The queue is full ({})", err_limit); + }; + + let count = i64::try_from(count).unwrap_or(i64::max_value()); + + let currently_queued = self.currently_queued.clone(); + let _ok = channel.send(ClientIoMessage::execute(move |client| { + currently_queued.fetch_sub(count, AtomicOrdering::SeqCst); + fun(client); + }))?; + + self.currently_queued.fetch_add(count, AtomicOrdering::SeqCst); + Ok(()) + } +} + #[cfg(test)] mod tests { + use test_helpers::{generate_dummy_client, generate_dummy_client_with_data, generate_dummy_client_with_spec_and_data, get_good_dummy_block_hash}; + use blockchain::{BlockProvider, ExtrasInsert}; + use spec::Spec; #[test] fn should_not_cache_details_before_commit() { @@ -2626,7 +2824,6 @@ mod tests { use std::sync::Arc; use std::sync::atomic::{AtomicBool, Ordering}; use kvdb::DBTransaction; - use blockchain::ExtrasInsert; use types::encoded; let client = generate_dummy_client(0); @@ -2768,40 +2965,23 @@ mod tests { outcome: TransactionOutcome::StateRoot(state_root), }); } -} - -/// Queue some items to be processed by IO client. -struct IoChannelQueue { - currently_queued: Arc, - limit: usize, -} - -impl IoChannelQueue { - pub fn new(limit: usize) -> Self { - IoChannelQueue { - currently_queued: Default::default(), - limit, - } - } - pub fn queue(&self, channel: &IoChannel, count: usize, fun: F) -> Result<(), QueueError> where - F: Fn(&Client) + Send + Sync + 'static, - { - let queue_size = self.currently_queued.load(AtomicOrdering::Relaxed); - ensure!(queue_size < self.limit, QueueErrorKind::Full(self.limit)); - - let currently_queued = self.currently_queued.clone(); - let result = channel.send(ClientIoMessage::execute(move |client| { - currently_queued.fetch_sub(count, AtomicOrdering::SeqCst); - fun(client); - })); - - match result { - Ok(_) => { - self.currently_queued.fetch_add(count, AtomicOrdering::SeqCst); - Ok(()) - }, - Err(e) => bail!(QueueErrorKind::Channel(e)), - } + #[test] + fn should_mark_finalization_correctly_for_parent() { + let client = generate_dummy_client_with_spec_and_data(Spec::new_test_with_finality, 2, 0, &[]); + let chain = client.chain(); + + let block1_details = chain.block_hash(1).and_then(|h| chain.block_details(&h)); + assert!(block1_details.is_some()); + let block1_details = block1_details.unwrap(); + assert_eq!(block1_details.children.len(), 1); + assert!(block1_details.is_finalized); + + let block2_details = chain.block_hash(2).and_then(|h| chain.block_details(&h)); + assert!(block2_details.is_some()); + let block2_details = block2_details.unwrap(); + assert_eq!(block2_details.children.len(), 0); + assert!(!block2_details.is_finalized); } } + diff --git a/ethcore/src/client/mod.rs b/ethcore/src/client/mod.rs index d710a6b4ddb..31ec2104723 100644 --- a/ethcore/src/client/mod.rs +++ b/ethcore/src/client/mod.rs @@ -24,7 +24,7 @@ mod config; mod evm_test_client; mod io_message; #[cfg(any(test, feature = "test-helpers"))] -mod test_client; +pub mod test_client; mod trace; pub use self::client::*; @@ -38,7 +38,7 @@ pub use self::chain_notify::{ChainNotify, NewBlocks, ChainRoute, ChainRouteType, pub use self::traits::{ Nonce, Balance, ChainInfo, BlockInfo, ReopenBlock, PrepareOpenBlock, TransactionInfo, ScheduleInfo, ImportSealedBlock, BroadcastProposalBlock, ImportBlock, StateOrBlock, StateClient, Call, EngineInfo, AccountData, BlockChain, BlockProducer, SealedBlockImporter, BadBlocks, - BlockChainReset + BlockChainReset, ImportExportBlocks }; pub use state::StateInfo; pub use self::traits::{BlockChainClient, EngineClient, ProvingBlockChainClient, IoClient}; diff --git a/ethcore/src/client/test_client.rs b/ethcore/src/client/test_client.rs index 502a9ee72b4..e3ccc71fb00 100644 --- a/ethcore/src/client/test_client.rs +++ b/ethcore/src/client/test_client.rs @@ -56,7 +56,7 @@ use client::{ TransactionId, UncleId, TraceId, TraceFilter, LastHashes, CallAnalytics, ProvingBlockChainClient, ScheduleInfo, ImportSealedBlock, BroadcastProposalBlock, ImportBlock, StateOrBlock, Call, StateClient, EngineInfo, AccountData, BlockChain, BlockProducer, SealedBlockImporter, IoClient, - BadBlocks, + BadBlocks, traits::ForceUpdateSealing }; use engines::EthEngine; use error::{Error, EthcoreResult}; @@ -586,7 +586,7 @@ impl ImportBlock for TestBlockChainClient { impl Call for TestBlockChainClient { // State will not be used by test client anyway, since all methods that accept state are mocked - type State = (); + type State = TestState; fn call(&self, _t: &SignedTransaction, _analytics: CallAnalytics, _state: &mut Self::State, _header: &Header) -> Result { self.execution_result.read().clone().unwrap() @@ -605,7 +605,10 @@ impl Call for TestBlockChainClient { } } -impl StateInfo for () { +/// NewType wrapper around `()` to impersonate `State` in trait impls. State will not be used by +/// test client, since all methods that accept state are mocked. +pub struct TestState; +impl StateInfo for TestState { fn nonce(&self, _address: &Address) -> ethtrie::Result { unimplemented!() } fn balance(&self, _address: &Address) -> ethtrie::Result { unimplemented!() } fn storage_at(&self, _address: &Address, _key: &H256) -> ethtrie::Result { unimplemented!() } @@ -614,14 +617,14 @@ impl StateInfo for () { impl StateClient for TestBlockChainClient { // State will not be used by test client anyway, since all methods that accept state are mocked - type State = (); + type State = TestState; - fn latest_state(&self) -> Self::State { - () + fn latest_state_and_header(&self) -> (Self::State, Header) { + (TestState, self.best_block_header()) } fn state_at(&self, _id: BlockId) -> Option { - Some(()) + Some(TestState) } } @@ -928,8 +931,8 @@ impl ProvingBlockChainClient for TestBlockChainClient { } impl super::traits::EngineClient for TestBlockChainClient { - fn update_sealing(&self) { - self.miner.update_sealing(self) + fn update_sealing(&self, force: ForceUpdateSealing) { + self.miner.update_sealing(self, force) } fn submit_seal(&self, block_hash: H256, seal: Vec) { diff --git a/ethcore/src/client/traits.rs b/ethcore/src/client/traits.rs index 8e4abc01cde..16c185e6910 100644 --- a/ethcore/src/client/traits.rs +++ b/ethcore/src/client/traits.rs @@ -31,6 +31,7 @@ use types::basic_account::BasicAccount; use types::block_status::BlockStatus; use types::blockchain_info::BlockChainInfo; use types::call_analytics::CallAnalytics; +use types::data_format::DataFormat; use types::encoded; use types::filter::Filter; use types::header::Header; @@ -144,8 +145,8 @@ pub trait StateClient { /// Type representing chain state type State: StateInfo; - /// Get a copy of the best block's state. - fn latest_state(&self) -> Self::State; + /// Get a copy of the best block's state and header. + fn latest_state_and_header(&self) -> (Self::State, Header); /// Attempt to get a copy of a specific block's final state. /// @@ -422,10 +423,19 @@ pub trait BroadcastProposalBlock { /// Provides methods to import sealed block and broadcast a block proposal pub trait SealedBlockImporter: ImportSealedBlock + BroadcastProposalBlock {} +/// Do we want to force update sealing? +#[derive(Debug, Copy, Clone, PartialEq)] +pub enum ForceUpdateSealing { + /// Ideally you want to use `No` at all times as `Yes` skips `reseal_required` checks. + Yes, + /// Don't skip `reseal_required` checks + No +} + /// Client facilities used by internally sealing Engines. pub trait EngineClient: Sync + Send + ChainInfo { /// Make a new block and seal it. - fn update_sealing(&self); + fn update_sealing(&self, force: ForceUpdateSealing); /// Submit a seal for a block in the mining queue. fn submit_seal(&self, block_hash: H256, seal: Vec); @@ -477,3 +487,29 @@ pub trait BlockChainReset { /// reset to best_block - n fn reset(&self, num: u32) -> Result<(), String>; } + +/// Provides a method for importing/exporting blocks +pub trait ImportExportBlocks { + /// Export blocks to destination, with the given from, to and format argument. + /// destination could be a file or stdout. + /// If the format is hex, each block is written on a new line. + /// For binary exports, all block data is written to the same line. + fn export_blocks<'a>( + &self, + destination: Box, + from: BlockId, + to: BlockId, + format: Option + ) -> Result<(), String>; + + /// Import blocks from destination, with the given format argument + /// Source could be a file or stdout. + /// For hex format imports, it attempts to read the blocks on a line by line basis. + /// For binary format imports, reads the 8 byte RLP header in order to decode the block + /// length to be read. + fn import_blocks<'a>( + &self, + source: Box, + format: Option + ) -> Result<(), String>; +} diff --git a/ethcore/src/engines/authority_round/mod.rs b/ethcore/src/engines/authority_round/mod.rs index 312b58e61ce..3350498e9ec 100644 --- a/ethcore/src/engines/authority_round/mod.rs +++ b/ethcore/src/engines/authority_round/mod.rs @@ -25,7 +25,7 @@ use std::sync::{Weak, Arc}; use std::time::{UNIX_EPOCH, Duration}; use block::*; -use client::EngineClient; +use client::{EngineClient, traits::ForceUpdateSealing}; use engines::{Engine, Seal, EngineError, ConstructedVerifier}; use engines::block_reward; use engines::block_reward::{BlockRewardContract, RewardKind}; @@ -908,7 +908,7 @@ impl IoHandler<()> for TransitionHandler { self.step.can_propose.store(true, AtomicOrdering::SeqCst); if let Some(ref weak) = *self.client.read() { if let Some(c) = weak.upgrade() { - c.update_sealing(); + c.update_sealing(ForceUpdateSealing::No); } } } @@ -936,7 +936,7 @@ impl Engine for AuthorityRound { self.step.can_propose.store(true, AtomicOrdering::SeqCst); if let Some(ref weak) = *self.client.read() { if let Some(c) = weak.upgrade() { - c.update_sealing(); + c.update_sealing(ForceUpdateSealing::No); } } } diff --git a/ethcore/src/engines/clique/mod.rs b/ethcore/src/engines/clique/mod.rs index 8be54da2663..65d56fa28bf 100644 --- a/ethcore/src/engines/clique/mod.rs +++ b/ethcore/src/engines/clique/mod.rs @@ -64,11 +64,11 @@ use std::collections::VecDeque; use std::sync::{Arc, Weak}; use std::thread; use std::time; -use std::time::{Duration, SystemTime, UNIX_EPOCH}; +use std::time::{Instant, Duration, SystemTime, UNIX_EPOCH}; use block::ExecutedBlock; use bytes::Bytes; -use client::{BlockId, EngineClient}; +use client::{BlockId, EngineClient, traits::ForceUpdateSealing}; use engines::clique::util::{extract_signers, recover_creator}; use engines::{Engine, EngineError, Seal}; use error::{BlockError, Error}; @@ -88,11 +88,9 @@ use types::header::{ExtendedHeader, Header}; use self::block_state::CliqueBlockState; use self::params::CliqueParams; -use self::step_service::StepService; mod params; mod block_state; -mod step_service; mod util; // TODO(niklasad1): extract tester types into a separate mod to be shared in the code base @@ -167,7 +165,6 @@ pub struct Clique { block_state_by_hash: RwLock>, proposals: RwLock>, signer: RwLock>>, - step_service: Option>, } #[cfg(test)] @@ -180,30 +177,45 @@ pub struct Clique { pub block_state_by_hash: RwLock>, pub proposals: RwLock>, pub signer: RwLock>>, - pub step_service: Option>, } impl Clique { /// Initialize Clique engine from empty state. - pub fn new(our_params: CliqueParams, machine: EthereumMachine) -> Result, Error> { - let mut engine = Clique { - epoch_length: our_params.epoch, - period: our_params.period, + pub fn new(params: CliqueParams, machine: EthereumMachine) -> Result, Error> { + /// Step Clique at most every 2 seconds + const SEALING_FREQ: Duration = Duration::from_secs(2); + + let engine = Clique { + epoch_length: params.epoch, + period: params.period, client: Default::default(), block_state_by_hash: RwLock::new(LruCache::new(STATE_CACHE_NUM)), proposals: Default::default(), signer: Default::default(), machine, - step_service: None, }; + let engine = Arc::new(engine); + let weak_eng = Arc::downgrade(&engine); - let res = Arc::new(engine); - - if our_params.period > 0 { - engine.step_service = Some(StepService::start(Arc::downgrade(&res) as Weak>)); - } + thread::Builder::new().name("StepService".into()) + .spawn(move || { + loop { + let next_step_at = Instant::now() + SEALING_FREQ; + trace!(target: "miner", "StepService: triggering sealing"); + if let Some(eng) = weak_eng.upgrade() { + eng.step() + } else { + warn!(target: "shutdown", "StepService: engine is dropped; exiting."); + break; + } - Ok(res) + let now = Instant::now(); + if now < next_step_at { + thread::sleep(next_step_at - now); + } + } + })?; + Ok(engine) } #[cfg(test)] @@ -221,7 +233,6 @@ impl Clique { proposals: Default::default(), signer: Default::default(), machine: Spec::new_test_machine(), - step_service: None, } } @@ -695,7 +706,7 @@ impl Engine for Clique { trace!(target: "engine", "populate_from_parent in sealing"); // It's unclear how to prevent creating new blocks unless we are authorized, the best way (and geth does this too) - // it's just to ignore setting an correct difficulty here, we will check authorization in next step in generate_seal anyway. + // it's just to ignore setting a correct difficulty here, we will check authorization in next step in generate_seal anyway. if let Some(signer) = self.signer.read().as_ref() { let state = match self.state(&parent) { Err(e) => { @@ -738,20 +749,12 @@ impl Engine for Clique { if self.signer.read().is_some() { if let Some(ref weak) = *self.client.read() { if let Some(c) = weak.upgrade() { - c.update_sealing(); + c.update_sealing(ForceUpdateSealing::No); } } } } - fn stop(&mut self) { - if let Some(mut s) = self.step_service.as_mut() { - Arc::get_mut(&mut s).map(|x| x.stop()); - } else { - warn!(target: "engine", "Stopping `CliqueStepService` failed requires mutable access"); - } - } - /// Clique timestamp is set to parent + period , or current time which ever is higher. fn open_block_header_timestamp(&self, parent_timestamp: u64) -> u64 { let now = time::SystemTime::now().duration_since(time::UNIX_EPOCH).unwrap_or_default(); diff --git a/ethcore/src/engines/clique/step_service.rs b/ethcore/src/engines/clique/step_service.rs deleted file mode 100644 index 7a4b5269d2b..00000000000 --- a/ethcore/src/engines/clique/step_service.rs +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2015-2019 Parity Technologies (UK) Ltd. -// This file is part of Parity Ethereum. - -// Parity Ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity Ethereum 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 General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity Ethereum. If not, see . - - -use std::sync::Weak; -use std::sync::atomic::{AtomicBool, Ordering}; -use std::time::Duration; -use std::thread; -use std::sync::Arc; - -use engines::Engine; -use machine::Machine; - -/// Service that is managing the engine -pub struct StepService { - shutdown: Arc, - thread: Option>, -} - -impl StepService { - /// Start the `StepService` - pub fn start(engine: Weak>) -> Arc { - let shutdown = Arc::new(AtomicBool::new(false)); - let s = shutdown.clone(); - - let thread = thread::Builder::new() - .name("CliqueStepService".into()) - .spawn(move || { - // startup delay. - thread::sleep(Duration::from_secs(5)); - - loop { - // see if we are in shutdown. - if shutdown.load(Ordering::Acquire) { - trace!(target: "miner", "CliqueStepService: received shutdown signal!"); - break; - } - - trace!(target: "miner", "CliqueStepService: triggering sealing"); - - // Try sealing - engine.upgrade().map(|x| x.step()); - - // Yield - thread::sleep(Duration::from_millis(2000)); - } - trace!(target: "miner", "CliqueStepService: shutdown."); - }).expect("CliqueStepService thread failed"); - - Arc::new(StepService { - shutdown: s, - thread: Some(thread), - }) - } - - /// Stop the `StepService` - pub fn stop(&mut self) { - trace!(target: "miner", "CliqueStepService: shutting down."); - self.shutdown.store(true, Ordering::Release); - if let Some(t) = self.thread.take() { - t.join().expect("CliqueStepService thread panicked!"); - } - } -} diff --git a/ethcore/src/engines/instant_seal.rs b/ethcore/src/engines/instant_seal.rs index ec6f42bc7dc..677a8abc193 100644 --- a/ethcore/src/engines/instant_seal.rs +++ b/ethcore/src/engines/instant_seal.rs @@ -63,6 +63,13 @@ impl Engine for InstantSeal { fn seals_internally(&self) -> Option { Some(true) } + fn should_reseal_on_update(&self) -> bool { + // We would like for the miner to `update_sealing` if there are local_pending_transactions + // in the pool to prevent transactions sent in parallel from stalling in the transaction + // pool. (see #9660) + true + } + fn generate_seal(&self, block: &ExecutedBlock, _parent: &Header) -> Seal { if !block.transactions.is_empty() { let block_number = block.header.number(); diff --git a/ethcore/src/engines/mod.rs b/ethcore/src/engines/mod.rs index 5124f079db2..56e7b5d178f 100644 --- a/ethcore/src/engines/mod.rs +++ b/ethcore/src/engines/mod.rs @@ -307,6 +307,14 @@ pub trait Engine: Sync + Send { /// Some(false) means that the node might seal internally but is not qualified now. fn seals_internally(&self) -> Option { None } + /// Called in `miner.chain_new_blocks` if the engine wishes to `update_sealing` + /// after a block was recently sealed. + /// + /// returns false by default + fn should_reseal_on_update(&self) -> bool { + false + } + /// Attempt to seal the block internally. /// /// If `Some` is returned, then you get a valid seal. @@ -425,9 +433,6 @@ pub trait Engine: Sync + Send { /// Trigger next step of the consensus engine. fn step(&self) {} - /// Stops any services that the may hold the Engine and makes it safe to drop. - fn stop(&mut self) {} - /// Create a factory for building snapshot chunks and restoring from them. /// Returning `None` indicates that this engine doesn't support snapshot creation. fn snapshot_components(&self) -> Option> { diff --git a/ethcore/src/engines/null_engine.rs b/ethcore/src/engines/null_engine.rs index 27138985ad6..ae94409116f 100644 --- a/ethcore/src/engines/null_engine.rs +++ b/ethcore/src/engines/null_engine.rs @@ -20,6 +20,7 @@ use ethereum_types::U256; use machine::Machine; use types::BlockNumber; use types::header::{Header, ExtendedHeader}; +use types::ancestry_action::AncestryAction; use block::ExecutedBlock; /// Params for a null engine. @@ -27,12 +28,15 @@ use block::ExecutedBlock; pub struct NullEngineParams { /// base reward for a block. pub block_reward: U256, + /// Immediate finalization. + pub immediate_finalization: bool } impl From<::ethjson::spec::NullEngineParams> for NullEngineParams { fn from(p: ::ethjson::spec::NullEngineParams) -> Self { NullEngineParams { block_reward: p.block_reward.map_or_else(Default::default, Into::into), + immediate_finalization: p.immediate_finalization.unwrap_or(false) } } } @@ -106,4 +110,13 @@ impl Engine for NullEngine { fn fork_choice(&self, new: &ExtendedHeader, current: &ExtendedHeader) -> super::ForkChoice { super::total_difficulty_fork_choice(new, current) } + + fn ancestry_actions(&self, _header: &Header, ancestry: &mut dyn Iterator) -> Vec { + if self.params.immediate_finalization { + // always mark parent finalized + ancestry.take(1).map(|e| AncestryAction::MarkFinalized(e.header.hash())).collect() + } else { + Vec::new() + } + } } diff --git a/ethcore/src/engines/validator_set/multi.rs b/ethcore/src/engines/validator_set/multi.rs index b9ef6774784..dec6b501181 100644 --- a/ethcore/src/engines/validator_set/multi.rs +++ b/ethcore/src/engines/validator_set/multi.rs @@ -151,7 +151,7 @@ mod tests { use std::collections::BTreeMap; use hash::keccak; use accounts::AccountProvider; - use client::{BlockChainClient, ChainInfo, BlockInfo, ImportBlock}; + use client::{BlockChainClient, ChainInfo, BlockInfo, ImportBlock, traits::ForceUpdateSealing}; use engines::EpochChange; use engines::validator_set::ValidatorSet; use ethkey::Secret; @@ -181,24 +181,24 @@ mod tests { let signer = Box::new((tap.clone(), v1, "".into())); client.miner().set_author(miner::Author::Sealer(signer)); client.transact_contract(Default::default(), Default::default()).unwrap(); - ::client::EngineClient::update_sealing(&*client); + ::client::EngineClient::update_sealing(&*client, ForceUpdateSealing::No); assert_eq!(client.chain_info().best_block_number, 0); // Right signer for the first block. let signer = Box::new((tap.clone(), v0, "".into())); client.miner().set_author(miner::Author::Sealer(signer)); - ::client::EngineClient::update_sealing(&*client); + ::client::EngineClient::update_sealing(&*client, ForceUpdateSealing::No); assert_eq!(client.chain_info().best_block_number, 1); // This time v0 is wrong. client.transact_contract(Default::default(), Default::default()).unwrap(); - ::client::EngineClient::update_sealing(&*client); + ::client::EngineClient::update_sealing(&*client, ForceUpdateSealing::No); assert_eq!(client.chain_info().best_block_number, 1); let signer = Box::new((tap.clone(), v1, "".into())); client.miner().set_author(miner::Author::Sealer(signer)); - ::client::EngineClient::update_sealing(&*client); + ::client::EngineClient::update_sealing(&*client, ForceUpdateSealing::No); assert_eq!(client.chain_info().best_block_number, 2); // v1 is still good. client.transact_contract(Default::default(), Default::default()).unwrap(); - ::client::EngineClient::update_sealing(&*client); + ::client::EngineClient::update_sealing(&*client, ForceUpdateSealing::No); assert_eq!(client.chain_info().best_block_number, 3); // Check syncing. diff --git a/ethcore/src/engines/validator_set/safe_contract.rs b/ethcore/src/engines/validator_set/safe_contract.rs index 49d539df3f3..3596ff4b298 100644 --- a/ethcore/src/engines/validator_set/safe_contract.rs +++ b/ethcore/src/engines/validator_set/safe_contract.rs @@ -447,7 +447,7 @@ mod tests { use spec::Spec; use accounts::AccountProvider; use types::transaction::{Transaction, Action}; - use client::{ChainInfo, BlockInfo, ImportBlock}; + use client::{ChainInfo, BlockInfo, ImportBlock, traits::{ForceUpdateSealing, EngineClient}}; use ethkey::Secret; use miner::{self, MinerService}; use test_helpers::{generate_dummy_client_with_spec, generate_dummy_client_with_spec_and_data}; @@ -488,7 +488,7 @@ mod tests { data: "bfc708a000000000000000000000000082a978b3f5962a5b0957d9ee9eef472ee55b42f1".from_hex().unwrap(), }.sign(&s0, Some(chain_id)); client.miner().import_own_transaction(client.as_ref(), tx.into()).unwrap(); - ::client::EngineClient::update_sealing(&*client); + EngineClient::update_sealing(&*client, ForceUpdateSealing::No); assert_eq!(client.chain_info().best_block_number, 1); // Add "1" validator back in. let tx = Transaction { @@ -500,14 +500,14 @@ mod tests { data: "4d238c8e00000000000000000000000082a978b3f5962a5b0957d9ee9eef472ee55b42f1".from_hex().unwrap(), }.sign(&s0, Some(chain_id)); client.miner().import_own_transaction(client.as_ref(), tx.into()).unwrap(); - ::client::EngineClient::update_sealing(&*client); + EngineClient::update_sealing(&*client, ForceUpdateSealing::No); // The transaction is not yet included so still unable to seal. assert_eq!(client.chain_info().best_block_number, 1); // Switch to the validator that is still there. let signer = Box::new((tap.clone(), v0, "".into())); client.miner().set_author(miner::Author::Sealer(signer)); - ::client::EngineClient::update_sealing(&*client); + EngineClient::update_sealing(&*client, ForceUpdateSealing::No); assert_eq!(client.chain_info().best_block_number, 2); // Switch back to the added validator, since the state is updated. let signer = Box::new((tap.clone(), v1, "".into())); @@ -521,7 +521,7 @@ mod tests { data: Vec::new(), }.sign(&s0, Some(chain_id)); client.miner().import_own_transaction(client.as_ref(), tx.into()).unwrap(); - ::client::EngineClient::update_sealing(&*client); + EngineClient::update_sealing(&*client, ForceUpdateSealing::No); // Able to seal again. assert_eq!(client.chain_info().best_block_number, 3); diff --git a/ethcore/src/ethereum/mod.rs b/ethcore/src/ethereum/mod.rs index f66eb453ad6..5ba9c294822 100644 --- a/ethcore/src/ethereum/mod.rs +++ b/ethcore/src/ethereum/mod.rs @@ -134,6 +134,11 @@ pub fn new_sokol<'a, T: Into>>(params: T) -> Spec { load(params.into(), include_bytes!("../../res/ethereum/poasokol.json")) } +/// Create a new Morodor testnet chain spec. +pub fn new_mordor<'a, T: Into>>(params: T) -> Spec { + load(params.into(), include_bytes!("../../res/ethereum/mordor.json")) +} + // For tests /// Create a new Foundation Frontier-era chain spec as though it never changes to Homestead. diff --git a/ethcore/src/executive.rs b/ethcore/src/executive.rs index cac6dc76386..17c86bc46f5 100644 --- a/ethcore/src/executive.rs +++ b/ethcore/src/executive.rs @@ -406,7 +406,7 @@ impl<'a> CallCreateExecutive<'a> { if let Err(e) = result { state.revert_to_checkpoint(); - Err(e.into()) + Err(vm::Error::BuiltIn(e)) } else { state.discard_checkpoint(); diff --git a/ethcore/src/lib.rs b/ethcore/src/lib.rs index 4437ec68833..09896d69e86 100644 --- a/ethcore/src/lib.rs +++ b/ethcore/src/lib.rs @@ -58,7 +58,6 @@ #![recursion_limit="128"] extern crate ansi_term; -extern crate bn; extern crate byteorder; extern crate common_types as types; extern crate crossbeam_utils; @@ -67,6 +66,7 @@ extern crate ethabi; extern crate ethash; extern crate ethcore_blockchain as blockchain; extern crate ethcore_bloom_journal as bloom_journal; +extern crate ethcore_builtin as builtin; extern crate ethcore_call_contract as call_contract; extern crate ethcore_db as db; extern crate ethcore_io as io; @@ -86,10 +86,8 @@ extern crate len_caching_lock; extern crate lru_cache; extern crate memory_cache; extern crate memory_db; -extern crate num; extern crate num_cpus; extern crate parity_bytes as bytes; -extern crate parity_crypto; extern crate parity_snappy as snappy; extern crate parking_lot; extern crate trie_db as trie; @@ -154,7 +152,6 @@ extern crate fetch; extern crate parity_runtime; pub mod block; -pub mod builtin; pub mod client; pub mod engines; pub mod error; diff --git a/ethcore/src/miner/miner.rs b/ethcore/src/miner/miner.rs index f31973c13c1..1da323e30cd 100644 --- a/ethcore/src/miner/miner.rs +++ b/ethcore/src/miner/miner.rs @@ -52,7 +52,7 @@ use client::{ BlockChain, ChainInfo, BlockProducer, SealedBlockImporter, Nonce, TransactionInfo, TransactionId }; use client::{BlockId, ClientIoMessage}; -use client::traits::EngineClient; +use client::traits::{EngineClient, ForceUpdateSealing}; use engines::{EthEngine, Seal, EngineSigner}; use error::{Error, ErrorKind}; use executed::ExecutionError; @@ -276,6 +276,7 @@ impl Miner { let tx_queue_strategy = options.tx_queue_strategy; let nonce_cache_size = cmp::max(4096, limits.max_count / 4); let refuse_service_transactions = options.refuse_service_transactions; + let engine = spec.engine.clone(); Miner { sealing: Mutex::new(SealingWork { @@ -294,7 +295,7 @@ impl Miner { options, transaction_queue: Arc::new(TransactionQueue::new(limits, verifier_options, tx_queue_strategy)), accounts: Arc::new(accounts), - engine: spec.engine.clone(), + engine, io_channel: RwLock::new(None), service_transaction_checker: if refuse_service_transactions { None @@ -829,7 +830,7 @@ impl Miner { preparation_status } - /// Prepare pending block, check whether sealing is needed, and then update sealing. +/// Prepare pending block, check whether sealing is needed, and then update sealing. fn prepare_and_update_sealing(&self, chain: &C) { // Make sure to do it after transaction is imported and lock is dropped. @@ -838,7 +839,7 @@ impl Miner { // If new block has not been prepared (means we already had one) // or Engine might be able to seal internally, // we need to update sealing. - self.update_sealing(chain); + self.update_sealing(chain, ForceUpdateSealing::No); } } } @@ -1109,6 +1110,11 @@ impl miner::MinerService for Miner { let prev_gas = if index == 0 { Default::default() } else { receipts[index - 1].gas_used }; let receipt = &receipts[index]; RichReceipt { + from: tx.sender(), + to: match tx.action { + Action::Create => None, + Action::Call(ref address) => Some(*address), + }, transaction_hash: tx.hash(), transaction_index: index, cumulative_gas_used: receipt.gas_used, @@ -1131,14 +1137,16 @@ impl miner::MinerService for Miner { /// Update sealing if required. /// Prepare the block and work if the Engine does not seal internally. - fn update_sealing(&self, chain: &C) where + fn update_sealing(&self, chain: &C, force: ForceUpdateSealing) where C: BlockChain + CallContract + BlockProducer + SealedBlockImporter + Nonce + Sync, { trace!(target: "miner", "update_sealing"); - // Do nothing if reseal is not required, + // Do nothing if we don't want to force update_sealing and reseal is not required. // but note that `requires_reseal` updates internal state. - if !self.requires_reseal(chain.chain_info().best_block_number) { + if force == ForceUpdateSealing::No && + !self.requires_reseal(chain.chain_info().best_block_number) + { return; } @@ -1168,6 +1176,7 @@ impl miner::MinerService for Miner { if self.seal_and_import_block_internally(chain, block) { trace!(target: "miner", "update_sealing: imported internally sealed block"); } + return }, Some(false) => { trace!(target: "miner", "update_sealing: engine is not keen to seal internally right now"); @@ -1176,9 +1185,9 @@ impl miner::MinerService for Miner { }, None => { trace!(target: "miner", "update_sealing: engine does not seal internally, preparing work"); - self.prepare_work(block, original_work_hash) + self.prepare_work(block, original_work_hash); }, - } + }; } fn is_currently_sealing(&self) -> bool { @@ -1279,7 +1288,7 @@ impl miner::MinerService for Miner { // | NOTE Code below requires sealing locks. | // | Make sure to release the locks before calling that method. | // -------------------------------------------------------------------------- - self.update_sealing(chain); + self.update_sealing(chain, ForceUpdateSealing::No); } } @@ -1307,8 +1316,9 @@ impl miner::MinerService for Miner { service_transaction_checker.as_ref(), ); queue.cull(client); - if is_internal_import { - chain.update_sealing(); + if engine.should_reseal_on_update() { + // force update_sealing here to skip `reseal_required` checks + chain.update_sealing(ForceUpdateSealing::Yes); } }; @@ -1317,8 +1327,9 @@ impl miner::MinerService for Miner { } } else { self.transaction_queue.cull(client); - if is_internal_import { - self.update_sealing(chain); + if self.engine.should_reseal_on_update() { + // force update_sealing here to skip `reseal_required` checks + self.update_sealing(chain, ForceUpdateSealing::Yes); } } } @@ -1638,14 +1649,14 @@ mod tests { let import = miner.import_external_transactions(&*client, vec![transaction_with_chain_id(spec.chain_id()).into()]).pop().unwrap(); assert_eq!(import.unwrap(), ()); - miner.update_sealing(&*client); + miner.update_sealing(&*client, ForceUpdateSealing::No); client.flush_queue(); assert!(miner.pending_block(0).is_none()); assert_eq!(client.chain_info().best_block_number, 3 as BlockNumber); assert!(miner.import_own_transaction(&*client, PendingTransaction::new(transaction_with_chain_id(spec.chain_id()).into(), None)).is_ok()); - miner.update_sealing(&*client); + miner.update_sealing(&*client, ForceUpdateSealing::No); client.flush_queue(); assert!(miner.pending_block(0).is_none()); assert_eq!(client.chain_info().best_block_number, 4 as BlockNumber); @@ -1673,7 +1684,7 @@ mod tests { let miner = Miner::new_for_tests(&spec, None); let client = generate_dummy_client(2); - miner.update_sealing(&*client); + miner.update_sealing(&*client, ForceUpdateSealing::No); assert!(miner.is_currently_sealing()); } @@ -1684,7 +1695,7 @@ mod tests { let miner = Miner::new_for_tests(&spec, None); let client = generate_dummy_client(2); - miner.update_sealing(&*client); + miner.update_sealing(&*client, ForceUpdateSealing::No); assert!(!miner.is_currently_sealing()); } @@ -1695,7 +1706,7 @@ mod tests { let miner = Miner::new_for_tests(&spec, None); let client = generate_dummy_client(2); - miner.update_sealing(&*client); + miner.update_sealing(&*client, ForceUpdateSealing::No); assert!(!miner.is_currently_sealing()); } @@ -1714,7 +1725,7 @@ mod tests { miner.add_work_listener(Box::new(DummyNotifyWork)); let client = generate_dummy_client(2); - miner.update_sealing(&*client); + miner.update_sealing(&*client, ForceUpdateSealing::No); assert!(miner.is_currently_sealing()); } @@ -1753,6 +1764,7 @@ mod tests { }, fetch, p, + "fake_endpoint".to_owned() ) ) } diff --git a/ethcore/src/miner/mod.rs b/ethcore/src/miner/mod.rs index fd7ab96513c..12658192aa3 100644 --- a/ethcore/src/miner/mod.rs +++ b/ethcore/src/miner/mod.rs @@ -46,7 +46,7 @@ use call_contract::{CallContract, RegistryInfo}; use client::{ ScheduleInfo, BlockChain, BlockProducer, SealedBlockImporter, ChainInfo, - AccountData, Nonce, + AccountData, Nonce, traits::ForceUpdateSealing }; use error::Error; use state::StateInfo; @@ -83,7 +83,7 @@ pub trait MinerService : Send + Sync { where C: BlockChain + CallContract + BlockProducer + SealedBlockImporter + Nonce + Sync; /// Update current pending block - fn update_sealing(&self, chain: &C) + fn update_sealing(&self, chain: &C, force: ForceUpdateSealing) where C: BlockChain + CallContract + BlockProducer + SealedBlockImporter + Nonce + Sync; // Notifications diff --git a/ethcore/src/miner/stratum.rs b/ethcore/src/miner/stratum.rs index 71862225ab5..35a35fbb24e 100644 --- a/ethcore/src/miner/stratum.rs +++ b/ethcore/src/miner/stratum.rs @@ -217,8 +217,6 @@ impl NotifyWork for Stratum { self.service.push_work_all( self.dispatcher.payload(pow_hash, difficulty, number) - ).unwrap_or_else( - |e| warn!(target: "stratum", "Error while pushing work: {:?}", e) ); } } @@ -231,16 +229,13 @@ impl Stratum { let dispatcher = Arc::new(StratumJobDispatcher::new(miner, client)); - let stratum_svc = StratumService::start( + let service = StratumService::start( &SocketAddr::new(options.listen_addr.parse::()?, options.port), dispatcher.clone(), options.secret.clone(), )?; - Ok(Stratum { - dispatcher: dispatcher, - service: stratum_svc, - }) + Ok(Stratum { dispatcher, service }) } /// Start STRATUM job dispatcher and register it in the miner diff --git a/ethcore/src/spec/spec.rs b/ethcore/src/spec/spec.rs index ec3a8f4aba4..37305e4552c 100644 --- a/ethcore/src/spec/spec.rs +++ b/ethcore/src/spec/spec.rs @@ -17,6 +17,7 @@ //! Parameters for a block chain. use std::collections::BTreeMap; +use std::convert::TryFrom; use std::io::Read; use std::path::Path; use std::sync::Arc; @@ -534,19 +535,28 @@ impl From for ethjson::spec::HardcodedSync { } fn load_machine_from(s: ethjson::spec::Spec) -> EthereumMachine { - let builtins = s.accounts.builtins().into_iter().map(|p| (p.0.into(), From::from(p.1))).collect(); + let builtins = s.accounts.builtins().into_iter().map(|p| (p.0.into(), Builtin::try_from(p.1).expect("chain spec is invalid"))).collect(); let params = CommonParams::from(s.params); Spec::machine(&s.engine, params, builtins) } +fn convert_json_to_spec( + (address, builtin): (ethjson::hash::Address, ethjson::spec::builtin::Builtin), +) -> Result<(Address, Builtin), Error> { + let builtin = Builtin::try_from(builtin)?; + Ok((address.into(), builtin)) +} + /// Load from JSON object. fn load_from(spec_params: SpecParams, s: ethjson::spec::Spec) -> Result { - let builtins = s.accounts + let builtins: Result, _> = s + .accounts .builtins() .into_iter() - .map(|p| (p.0.into(), From::from(p.1))) + .map(convert_json_to_spec) .collect(); + let builtins = builtins?; let g = Genesis::from(s.genesis); let GenericSeal(seal_rlp) = g.seal.into(); let params = CommonParams::from(s.params); @@ -967,6 +977,10 @@ impl Spec { #[cfg(any(test, feature = "test-helpers"))] pub fn new_test_with_reward() -> Spec { load_bundled!("null_morden_with_reward") } + /// Create a new Spec which conforms to the Frontier-era Morden chain except that it's a NullEngine consensus with finality. + #[cfg(any(test, feature = "test-helpers"))] + pub fn new_test_with_finality() -> Spec { load_bundled!("null_morden_with_finality") } + /// Create a new Spec which is a NullEngine consensus with a premine of address whose /// secret is keccak(''). #[cfg(any(test, feature = "test-helpers"))] diff --git a/ethcore/src/tests/client.rs b/ethcore/src/tests/client.rs index 9086d07e08a..1a836e42e7b 100644 --- a/ethcore/src/tests/client.rs +++ b/ethcore/src/tests/client.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Parity Ethereum. If not, see . -use std::str::FromStr; +use std::str::{FromStr, from_utf8}; use std::sync::Arc; use ethereum_types::{U256, Address}; @@ -22,23 +22,32 @@ use ethkey::KeyPair; use hash::keccak; use io::IoChannel; use tempdir::TempDir; -use types::transaction::{PendingTransaction, Transaction, Action, Condition}; -use types::filter::Filter; -use types::view; -use types::views::BlockView; - -use client::{BlockChainClient, BlockChainReset, Client, ClientConfig, BlockId, ChainInfo, BlockInfo, PrepareOpenBlock, ImportSealedBlock, ImportBlock}; +use types::{ + data_format::DataFormat, + ids::BlockId, + transaction::{PendingTransaction, Transaction, Action, Condition}, + filter::Filter, + view, + views::BlockView, +}; +use verification::queue::kind::blocks::Unverified; +use client::{Client, ClientConfig, PrepareOpenBlock, ImportSealedBlock}; +use client::traits::{ + BlockInfo, BlockChainClient, BlockChainReset, ChainInfo, + ImportExportBlocks, ImportBlock +}; +use spec; use ethereum; use executive::{Executive, TransactOptions}; use miner::{Miner, PendingOrdering, MinerService}; use spec::Spec; -use state::{self, State, CleanupMode}; +use state::{self, State, CleanupMode, StateInfo}; use test_helpers::{ self, generate_dummy_client, push_blocks_to_client, get_test_client_with_blocks, get_good_dummy_block_seq, generate_dummy_client_with_data, get_good_dummy_block, get_bad_state_dummy_block }; -use verification::queue::kind::blocks::Unverified; +use rustc_hex::ToHex; #[test] fn imports_from_empty() { @@ -120,7 +129,7 @@ fn query_none_block() { Arc::new(Miner::new_for_tests(&spec, None)), IoChannel::disconnected(), ).unwrap(); - let non_existant = client.block_header(BlockId::Number(188)); + let non_existant = client.block_header(BlockId::Number(188)); assert!(non_existant.is_none()); } @@ -386,3 +395,79 @@ fn reset_blockchain() { assert!(client.block_header(BlockId::Number(15)).is_some()); } + +#[test] +fn import_export_hex() { + let client = get_test_client_with_blocks(get_good_dummy_block_seq(19)); + let block_rlps = (15..20) + .filter_map(|num| client.block(BlockId::Number(num))) + .map(|header| { + header.raw().to_hex() + }) + .collect::>(); + + let mut out = Vec::new(); + + client.export_blocks( + Box::new(&mut out), + BlockId::Number(15), + BlockId::Number(20), + Some(DataFormat::Hex) + ).unwrap(); + + let written = from_utf8(&out) + .unwrap() + .split("\n") + // last line is empty, ignore it. + .take(5) + .collect::>(); + assert_eq!(block_rlps, written); + + assert!(client.reset(5).is_ok()); + client.chain().clear_cache(); + + assert!(client.block_header(BlockId::Number(20)).is_none()); + assert!(client.block_header(BlockId::Number(19)).is_none()); + assert!(client.block_header(BlockId::Number(18)).is_none()); + assert!(client.block_header(BlockId::Number(17)).is_none()); + assert!(client.block_header(BlockId::Number(16)).is_none()); + + client.import_blocks(Box::new(&*out), Some(DataFormat::Hex)).unwrap(); + + assert!(client.block_header(BlockId::Number(20)).is_some()); + assert!(client.block_header(BlockId::Number(19)).is_some()); + assert!(client.block_header(BlockId::Number(18)).is_some()); + assert!(client.block_header(BlockId::Number(17)).is_some()); + assert!(client.block_header(BlockId::Number(16)).is_some()); +} + +#[test] +fn import_export_binary() { + let client = get_test_client_with_blocks(get_good_dummy_block_seq(19)); + + let mut out = Vec::new(); + + client.export_blocks( + Box::new(&mut out), + BlockId::Number(15), + BlockId::Number(20), + Some(DataFormat::Binary) + ).unwrap(); + + assert!(client.reset(5).is_ok()); + client.chain().clear_cache(); + + assert!(client.block_header(BlockId::Number(20)).is_none()); + assert!(client.block_header(BlockId::Number(19)).is_none()); + assert!(client.block_header(BlockId::Number(18)).is_none()); + assert!(client.block_header(BlockId::Number(17)).is_none()); + assert!(client.block_header(BlockId::Number(16)).is_none()); + + client.import_blocks(Box::new(&*out), Some(DataFormat::Binary)).unwrap(); + + assert!(client.block_header(BlockId::Number(19)).is_some()); + assert!(client.block_header(BlockId::Number(18)).is_some()); + assert!(client.block_header(BlockId::Number(20)).is_some()); + assert!(client.block_header(BlockId::Number(17)).is_some()); + assert!(client.block_header(BlockId::Number(16)).is_some()); +} diff --git a/ethcore/types/src/data_format.rs b/ethcore/types/src/data_format.rs new file mode 100644 index 00000000000..8cfe5cf2be3 --- /dev/null +++ b/ethcore/types/src/data_format.rs @@ -0,0 +1,43 @@ +// Copyright 2015-2019 Parity Technologies (UK) Ltd. +// This file is part of Parity Ethereum. + +// Parity Ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Parity Ethereum 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 General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Parity Ethereum. If not, see . + +//! Data format for importing/exporting blocks from disk +use std::str::FromStr; + +/// Format for importing/exporting blocks +#[derive(Debug, PartialEq)] +pub enum DataFormat { + Hex, + Binary, +} + +impl Default for DataFormat { + fn default() -> Self { + DataFormat::Binary + } +} + +impl FromStr for DataFormat { + type Err = String; + + fn from_str(s: &str) -> Result { + match s { + "binary" | "bin" => Ok(DataFormat::Binary), + "hex" => Ok(DataFormat::Hex), + x => Err(format!("Invalid format: {}", x)) + } + } +} diff --git a/ethcore/types/src/lib.rs b/ethcore/types/src/lib.rs index 3223db72206..d187704fdbc 100644 --- a/ethcore/types/src/lib.rs +++ b/ethcore/types/src/lib.rs @@ -74,6 +74,7 @@ pub mod trace_filter; pub mod transaction; pub mod tree_route; pub mod verification_queue_info; +pub mod data_format; /// Type for block number. pub type BlockNumber = u64; diff --git a/ethcore/types/src/receipt.rs b/ethcore/types/src/receipt.rs index aedb208a78b..4382966818a 100644 --- a/ethcore/types/src/receipt.rs +++ b/ethcore/types/src/receipt.rs @@ -128,6 +128,7 @@ pub struct RichReceipt { /// The gas used in the execution of the transaction. Note the difference of meaning to `Receipt::gas_used`. pub gas_used: U256, /// Contract address. + /// NOTE: It is an Option because only `Action::Create` transactions has a contract address pub contract_address: Option
, /// Logs pub logs: Vec, @@ -135,6 +136,11 @@ pub struct RichReceipt { pub log_bloom: Bloom, /// Transaction outcome. pub outcome: TransactionOutcome, + /// Receiver address + /// NOTE: It is an Option because only `Action::Call` transactions has a receiver address + pub to: Option, + /// Sender + pub from: H160 } /// Receipt with additional info. @@ -153,6 +159,7 @@ pub struct LocalizedReceipt { /// The gas used in the execution of the transaction. Note the difference of meaning to `Receipt::gas_used`. pub gas_used: U256, /// Contract address. + /// NOTE: It is an Option because only `Action::Create` transactions has a contract address pub contract_address: Option
, /// Logs pub logs: Vec, @@ -161,6 +168,7 @@ pub struct LocalizedReceipt { /// Transaction outcome. pub outcome: TransactionOutcome, /// Receiver address + /// NOTE: It is an Option because only `Action::Call` transactions has a receiver address pub to: Option, /// Sender pub from: H160 diff --git a/evmbin/Cargo.toml b/evmbin/Cargo.toml index dd6a3aad042..7605132ef53 100644 --- a/evmbin/Cargo.toml +++ b/evmbin/Cargo.toml @@ -25,6 +25,7 @@ serde_json = "1.0" vm = { path = "../ethcore/vm" } [dev-dependencies] +criterion = "0.3.0" pretty_assertions = "0.1" tempdir = "0.3" diff --git a/evmbin/benches/mod.rs b/evmbin/benches/mod.rs index d8872b5100e..0f38fc0dc56 100644 --- a/evmbin/benches/mod.rs +++ b/evmbin/benches/mod.rs @@ -17,69 +17,83 @@ //! benchmarking for EVM //! should be started with: //! ```bash -//! multirust run nightly cargo bench +//! cargo bench //! ``` -#![feature(test)] - -extern crate test; +#[macro_use] +extern crate criterion; extern crate ethcore; extern crate evm; -extern crate ethcore_util; -extern crate ethcore_bigint; +extern crate ethereum_types; extern crate rustc_hex; +extern crate vm; -use self::test::{Bencher, black_box}; +use std::sync::Arc; +use criterion::{Criterion, black_box}; -use evm::run_vm; -use ethcore::vm::ActionParams; -use ethcore_bigint::prelude::U256; +use ethereum_types::U256; +use evm::Factory; use rustc_hex::FromHex; - -#[bench] -fn simple_loop_usize(b: &mut Bencher) { - simple_loop(U256::from(::std::usize::MAX), b) +use vm::tests::FakeExt; +use vm::{ActionParams, Ext}; + +criterion_group!( + evmbin, + bench_simple_loop_usize, + bench_simple_loop_u256, + bench_rng_usize, + bench_rng_u256 +); +criterion_main!(evmbin); + +fn bench_simple_loop_usize(c: &mut Criterion) { + simple_loop(U256::from(::std::usize::MAX), c, "simple_loop_usize") } -#[bench] -fn simple_loop_u256(b: &mut Bencher) { - simple_loop(!U256::zero(), b) +fn bench_simple_loop_u256(c: &mut Criterion) { + simple_loop(!U256::zero(), c, "simple_loop_u256") } -fn simple_loop(gas: U256, b: &mut Bencher) { +fn simple_loop(gas: U256, c: &mut Criterion, bench_id: &str) { let code = black_box( "606060405260005b620042408112156019575b6001016007565b600081905550600680602b6000396000f3606060405200".from_hex().unwrap() ); - b.iter(|| { - let mut params = ActionParams::default(); - params.gas = gas; - params.code = Some(code.clone()); + c.bench_function(bench_id, move |b| { + b.iter(|| { + let mut params = ActionParams::default(); + params.gas = gas; + params.code = Some(Arc::new(code.clone())); - run_vm(params) + let mut ext = FakeExt::new(); + let evm = Factory::default().create(params, ext.schedule(), ext.depth()); + let _ = evm.exec(&mut ext); + }) }); } -#[bench] -fn rng_usize(b: &mut Bencher) { - rng(U256::from(::std::usize::MAX), b) +fn bench_rng_usize(c: &mut Criterion) { + rng(U256::from(::std::usize::MAX), c, "rng_usize") } -#[bench] -fn rng_u256(b: &mut Bencher) { - rng(!U256::zero(), b) +fn bench_rng_u256(c: &mut Criterion) { + rng(!U256::zero(), c, "rng_u256") } -fn rng(gas: U256, b: &mut Bencher) { +fn rng(gas: U256, c: &mut Criterion, bench_id: &str) { let code = black_box( "6060604052600360056007600b60005b62004240811215607f5767ffe7649d5eca84179490940267f47ed85c4b9a6379019367f8e5dd9a5c994bba9390930267f91d87e4b8b74e55019267ff97f6f3b29cda529290920267f393ada8dd75c938019167fe8d437c45bb3735830267f47d9a7b5428ffec019150600101600f565b838518831882186000555050505050600680609a6000396000f3606060405200".from_hex().unwrap() ); - b.iter(|| { - let mut params = ActionParams::default(); - params.gas = gas; - params.code = Some(code.clone()); + c.bench_function(bench_id, move |b| { + b.iter(|| { + let mut params = ActionParams::default(); + params.gas = gas; + params.code = Some(Arc::new(code.clone())); - run_vm(params) + let mut ext = FakeExt::new(); + let evm = Factory::default().create(params, ext.schedule(), ext.depth()); + let _ = evm.exec(&mut ext); + }) }); } diff --git a/ipfs/Cargo.toml b/ipfs/Cargo.toml index 3c0fcd7947c..67a165c7fef 100644 --- a/ipfs/Cargo.toml +++ b/ipfs/Cargo.toml @@ -9,8 +9,8 @@ authors = ["Parity Technologies "] ethcore = { path = "../ethcore" } parity-bytes = "0.1" ethereum-types = "0.4" -jsonrpc-core = "10.0.1" -jsonrpc-http-server = "10.0.1" +jsonrpc-core = "14.0.3" +jsonrpc-http-server = "14.0.3" rlp = { version = "0.3.0", features = ["ethereum"] } cid = "0.3" multihash = "0.8" diff --git a/json/Cargo.toml b/json/Cargo.toml index 164ee6bce46..2ec487209eb 100644 --- a/json/Cargo.toml +++ b/json/Cargo.toml @@ -11,3 +11,5 @@ serde = "1.0" serde_json = "1.0" serde_derive = "1.0" +[dev-dependencies] +macros = { path = "../util/macros" } diff --git a/json/src/lib.rs b/json/src/lib.rs index af5d93edfa6..d6857d19858 100644 --- a/json/src/lib.rs +++ b/json/src/lib.rs @@ -20,6 +20,9 @@ extern crate serde_json; extern crate ethereum_types; #[macro_use] extern crate serde_derive; +#[cfg(test)] +extern crate macros; + pub mod hash; pub mod uint; pub mod bytes; diff --git a/json/src/spec/account.rs b/json/src/spec/account.rs index 3d18ecd6c24..0b32a44a447 100644 --- a/json/src/spec/account.rs +++ b/json/src/spec/account.rs @@ -17,16 +17,18 @@ //! Spec account deserialization. use std::collections::BTreeMap; + use uint::Uint; use bytes::Bytes; -use spec::builtin::Builtin; +use spec::builtin::BuiltinCompat; /// Spec account. #[derive(Debug, PartialEq, Deserialize)] #[serde(deny_unknown_fields)] +#[serde(rename_all = "camelCase")] pub struct Account { /// Builtin contract. - pub builtin: Option, + pub builtin: Option, /// Balance. pub balance: Option, /// Nonce. @@ -102,7 +104,15 @@ mod tests { #[test] fn account_empty() { let s = r#"{ - "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } } + "builtin": { + "name": "ecrecover", + "pricing": { + "linear": { + "base": 3000, + "word": 0 + } + } + } }"#; let deserialized: Account = serde_json::from_str(s).unwrap(); assert!(deserialized.is_empty()); @@ -113,8 +123,16 @@ mod tests { let s = r#"{ "balance": "1", "nonce": "0", - "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } }, - "code": "1234" + "code": "1234", + "builtin": { + "name": "ecrecover", + "pricing": { + "linear": { + "base": 3000, + "word": 0 + } + } + } }"#; let deserialized: Account = serde_json::from_str(s).unwrap(); assert!(!deserialized.is_empty()); diff --git a/json/src/spec/builtin.rs b/json/src/spec/builtin.rs index c4f9f4e1ec8..19ddfc2c635 100644 --- a/json/src/spec/builtin.rs +++ b/json/src/spec/builtin.rs @@ -17,16 +17,16 @@ //! Spec builtin deserialization. use uint::Uint; - +use std::collections::BTreeMap; /// Linear pricing. #[derive(Debug, PartialEq, Deserialize, Clone)] #[serde(deny_unknown_fields)] pub struct Linear { /// Base price. - pub base: usize, + pub base: u64, /// Price for word. - pub word: usize, + pub word: u64, } /// Pricing for modular exponentiation. @@ -34,7 +34,7 @@ pub struct Linear { #[serde(deny_unknown_fields)] pub struct Modexp { /// Price divisor. - pub divisor: usize, + pub divisor: u64, } /// Pricing for constant alt_bn128 operations (ECADD and ECMUL) @@ -42,9 +42,7 @@ pub struct Modexp { #[serde(deny_unknown_fields)] pub struct AltBn128ConstOperations { /// price - pub price: usize, - /// EIP 1108 transition price - pub eip1108_transition_price: usize, + pub price: u64, } /// Pricing for alt_bn128_pairing. @@ -52,13 +50,9 @@ pub struct AltBn128ConstOperations { #[serde(deny_unknown_fields)] pub struct AltBn128Pairing { /// Base price. - pub base: usize, + pub base: u64, /// Price per point pair. - pub pair: usize, - /// EIP 1108 transition base price - pub eip1108_transition_base: usize, - /// EIP 1108 transition price per point pair - pub eip1108_transition_pair: usize, + pub pair: u64, } /// Pricing variants. @@ -81,25 +75,72 @@ pub enum Pricing { AltBn128ConstOperations(AltBn128ConstOperations), } -/// Spec builtin. +/// Builtin compability layer #[derive(Debug, PartialEq, Deserialize, Clone)] #[serde(deny_unknown_fields)] +pub struct BuiltinCompat { + /// Builtin name. + name: String, + /// Builtin pricing. + pricing: PricingCompat, + /// Activation block. + activate_at: Option, +} + +/// Spec builtin. +#[derive(Debug, PartialEq, Clone)] pub struct Builtin { /// Builtin name. pub name: String, /// Builtin pricing. - pub pricing: Pricing, - /// Activation block. - pub activate_at: Option, - /// EIP 1108 - pub eip1108_transition: Option, + pub pricing: BTreeMap, +} + +impl From for Builtin { + fn from(legacy: BuiltinCompat) -> Self { + let pricing = match legacy.pricing { + PricingCompat::Single(pricing) => { + let mut map = BTreeMap::new(); + let activate_at: u64 = legacy.activate_at.map_or(0, Into::into); + map.insert(activate_at, PricingAt { info: None, price: pricing }); + map + } + PricingCompat::Multi(pricings) => { + pricings.into_iter().map(|(a, p)| (a.into(), p)).collect() + } + }; + Self { name: legacy.name, pricing } + } +} + +/// Compability layer for different pricings +#[derive(Debug, PartialEq, Deserialize, Clone)] +#[serde(rename_all = "snake_case")] +#[serde(deny_unknown_fields)] +#[serde(untagged)] +enum PricingCompat { + /// Single builtin + Single(Pricing), + /// Multiple builtins + Multi(BTreeMap), +} + +/// Price for a builtin, with the block number to activate it on +#[derive(Debug, PartialEq, Deserialize, Clone)] +#[serde(deny_unknown_fields)] +pub struct PricingAt { + /// Description of the activation, e.g. "PunyPony HF, March 12, 2025". + pub info: Option, + /// Builtin pricing. + pub price: Pricing, } #[cfg(test)] mod tests { use serde_json; - use spec::builtin::{Builtin, Pricing, Linear, Modexp}; use uint::Uint; + use super::{Builtin, BuiltinCompat, BTreeMap, Pricing, PricingAt, Linear, Modexp, AltBn128ConstOperations}; + use macros::map; #[test] fn builtin_deserialization() { @@ -107,10 +148,42 @@ mod tests { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } }"#; - let deserialized: Builtin = serde_json::from_str(s).unwrap(); - assert_eq!(deserialized.name, "ecrecover"); - assert_eq!(deserialized.pricing, Pricing::Linear(Linear { base: 3000, word: 0 })); - assert!(deserialized.activate_at.is_none()); + let builtin: Builtin = serde_json::from_str::(s).unwrap().into(); + assert_eq!(builtin.name, "ecrecover"); + assert_eq!(builtin.pricing, map![ + 0 => PricingAt { + info: None, + price: Pricing::Linear(Linear { base: 3000, word: 0 }) + } + ]); + } + + #[test] + fn deserialize_multiple_pricings() { + let s = r#"{ + "name": "ecrecover", + "pricing": { + "0": { + "price": {"linear": { "base": 3000, "word": 0 }} + }, + "500": { + "info": "enable fake EIP at block 500", + "price": {"linear": { "base": 10, "word": 0 }} + } + } + }"#; + let builtin: Builtin = serde_json::from_str::(s).unwrap().into(); + assert_eq!(builtin.name, "ecrecover"); + assert_eq!(builtin.pricing, map![ + 0 => PricingAt { + info: None, + price: Pricing::Linear(Linear { base: 3000, word: 0 }) + }, + 500 => PricingAt { + info: Some(String::from("enable fake EIP at block 500")), + price: Pricing::Linear(Linear { base: 10, word: 0 }) + } + ]); } #[test] @@ -120,10 +193,14 @@ mod tests { "activate_at": "0xffffff", "pricing": { "blake2_f": { "gas_per_round": 123 } } }"#; - let deserialized: Builtin = serde_json::from_str(s).unwrap(); - assert_eq!(deserialized.name, "blake2_f"); - assert_eq!(deserialized.pricing, Pricing::Blake2F { gas_per_round: 123 }); - assert!(deserialized.activate_at.is_some()); + let builtin: Builtin = serde_json::from_str::(s).unwrap().into(); + assert_eq!(builtin.name, "blake2_f"); + assert_eq!(builtin.pricing, map![ + 0xffffff => PricingAt { + info: None, + price: Pricing::Blake2F { gas_per_round: 123 } + } + ]); } #[test] @@ -134,9 +211,13 @@ mod tests { "pricing": { "modexp": { "divisor": 5 } } }"#; - let deserialized: Builtin = serde_json::from_str(s).unwrap(); - assert_eq!(deserialized.name, "late_start"); - assert_eq!(deserialized.pricing, Pricing::Modexp(Modexp { divisor: 5 })); - assert_eq!(deserialized.activate_at, Some(Uint(100000.into()))); + let builtin: Builtin = serde_json::from_str::(s).unwrap().into(); + assert_eq!(builtin.name, "late_start"); + assert_eq!(builtin.pricing, map![ + 100_000 => PricingAt { + info: None, + price: Pricing::Modexp(Modexp { divisor: 5 }) + } + ]); } } diff --git a/json/src/spec/null_engine.rs b/json/src/spec/null_engine.rs index bf75749808c..37ade47832f 100644 --- a/json/src/spec/null_engine.rs +++ b/json/src/spec/null_engine.rs @@ -25,6 +25,8 @@ use uint::Uint; pub struct NullEngineParams { /// Block reward. pub block_reward: Option, + /// Immediate finalization. + pub immediate_finalization: Option } /// Null engine descriptor diff --git a/json/src/spec/spec.rs b/json/src/spec/spec.rs index 013320c27db..bdd8bdb302a 100644 --- a/json/src/spec/spec.rs +++ b/json/src/spec/spec.rs @@ -76,63 +76,63 @@ mod tests { #[test] fn should_error_on_unknown_fields() { let s = r#"{ - "name": "Morden", - "dataDir": "morden", - "engine": { - "Ethash": { - "params": { - "minimumDifficulty": "0x020000", - "difficultyBoundDivisor": "0x0800", - "durationLimit": "0x0d", - "homesteadTransition" : "0x", - "daoHardforkTransition": "0xffffffffffffffff", - "daoHardforkBeneficiary": "0x0000000000000000000000000000000000000000", - "daoHardforkAccounts": [] - } - } - }, - "params": { - "accountStartNonce": "0x0100000", - "maximumExtraDataSize": "0x20", - "minGasLimit": "0x1388", - "networkID" : "0x2", - "forkBlock": "0xffffffffffffffff", - "forkCanonHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "gasLimitBoundDivisor": "0x20", - "unknownField": "0x0" - }, - "genesis": { - "seal": { - "ethereum": { - "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x00006d6f7264656e" + "name": "Morden", + "dataDir": "morden", + "engine": { + "Ethash": { + "params": { + "minimumDifficulty": "0x020000", + "difficultyBoundDivisor": "0x0800", + "durationLimit": "0x0d", + "homesteadTransition" : "0x", + "daoHardforkTransition": "0xffffffffffffffff", + "daoHardforkBeneficiary": "0x0000000000000000000000000000000000000000", + "daoHardforkAccounts": [] + } } }, - "difficulty": "0x20000", - "author": "0x0000000000000000000000000000000000000000", - "timestamp": "0x00", - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x", - "gasLimit": "0x2fefd8" - }, - "nodes": [ - "enode://b1217cbaa440e35ed471157123fe468e19e8b5ad5bedb4b1fdbcbdab6fb2f5ed3e95dd9c24a22a79fdb2352204cea207df27d92bfd21bfd41545e8b16f637499@104.44.138.37:30303" - ], - "accounts": { - "0000000000000000000000000000000000000001": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } } }, - "0000000000000000000000000000000000000002": { "balance": "1", "nonce": "1048576", "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } }, - "0000000000000000000000000000000000000003": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } }, - "0000000000000000000000000000000000000004": { "balance": "1", "nonce": "1048576", "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } }, - "102e61f5d8f9bc71d0ad4a084df4e65e05ce0e1c": { "balance": "1606938044258990275541962092341162602522202993782792835301376", "nonce": "1048576" } - }, - "hardcodedSync": { - "header": "f901f9a0d405da4e66f1445d455195229624e133f5baafe72b5cf7b3c36c12c8146e98b7a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a05fb2b4bfdef7b314451cb138a534d225c922fc0e5fbe25e451142732c3e25c25a088d2ec6b9860aae1a2c3b299f72b6a5d70d7f7ba4722c78f2c49ba96273c2158a007c6fdfa8eea7e86b81f5b0fc0f78f90cc19f4aa60d323151e0cac660199e9a1b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302008003832fefba82524d84568e932a80a0a0349d8c3df71f1a48a9df7d03fd5f14aeee7d91332c009ecaff0a71ead405bd88ab4e252a7e8c2a23", - "totalDifficulty": "0x400000000", - "CHTs": [ + "params": { + "accountStartNonce": "0x0100000", + "maximumExtraDataSize": "0x20", + "minGasLimit": "0x1388", + "networkID" : "0x2", + "forkBlock": "0xffffffffffffffff", + "forkCanonHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "gasLimitBoundDivisor": "0x20", + "unknownField": "0x0" + }, + "genesis": { + "seal": { + "ethereum": { + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x00006d6f7264656e" + } + }, + "difficulty": "0x20000", + "author": "0x0000000000000000000000000000000000000000", + "timestamp": "0x00", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "extraData": "0x", + "gasLimit": "0x2fefd8" + }, + "nodes": [ + "enode://b1217cbaa440e35ed471157123fe468e19e8b5ad5bedb4b1fdbcbdab6fb2f5ed3e95dd9c24a22a79fdb2352204cea207df27d92bfd21bfd41545e8b16f637499@104.44.138.37:30303" + ], + "accounts": { + "0000000000000000000000000000000000000001": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } } }, + "0000000000000000000000000000000000000002": { "balance": "1", "nonce": "1048576", "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } }, + "0000000000000000000000000000000000000003": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } }, + "0000000000000000000000000000000000000004": { "balance": "1", "nonce": "1048576", "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } }, + "102e61f5d8f9bc71d0ad4a084df4e65e05ce0e1c": { "balance": "1606938044258990275541962092341162602522202993782792835301376", "nonce": "1048576" } + }, + "hardcodedSync": { + "header": "f901f9a0d405da4e66f1445d455195229624e133f5baafe72b5cf7b3c36c12c8146e98b7a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a05fb2b4bfdef7b314451cb138a534d225c922fc0e5fbe25e451142732c3e25c25a088d2ec6b9860aae1a2c3b299f72b6a5d70d7f7ba4722c78f2c49ba96273c2158a007c6fdfa8eea7e86b81f5b0fc0f78f90cc19f4aa60d323151e0cac660199e9a1b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302008003832fefba82524d84568e932a80a0a0349d8c3df71f1a48a9df7d03fd5f14aeee7d91332c009ecaff0a71ead405bd88ab4e252a7e8c2a23", + "totalDifficulty": "0x400000000", + "CHTs": [ "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", "0xd7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544" - ] - } + ] + } }"#; let result: Result = serde_json::from_str(s); assert!(result.is_err()); @@ -141,62 +141,110 @@ mod tests { #[test] fn spec_deserialization() { let s = r#"{ - "name": "Morden", - "dataDir": "morden", - "engine": { - "Ethash": { - "params": { - "minimumDifficulty": "0x020000", - "difficultyBoundDivisor": "0x0800", - "durationLimit": "0x0d", - "homesteadTransition" : "0x", - "daoHardforkTransition": "0xffffffffffffffff", - "daoHardforkBeneficiary": "0x0000000000000000000000000000000000000000", - "daoHardforkAccounts": [] - } - } - }, - "params": { - "accountStartNonce": "0x0100000", - "maximumExtraDataSize": "0x20", - "minGasLimit": "0x1388", - "networkID" : "0x2", - "forkBlock": "0xffffffffffffffff", - "forkCanonHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "gasLimitBoundDivisor": "0x20" - }, - "genesis": { - "seal": { - "ethereum": { - "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x00006d6f7264656e" + "name": "Morden", + "dataDir": "morden", + "engine": { + "Ethash": { + "params": { + "minimumDifficulty": "0x020000", + "difficultyBoundDivisor": "0x0800", + "durationLimit": "0x0d", + "homesteadTransition" : "0x", + "daoHardforkTransition": "0xffffffffffffffff", + "daoHardforkBeneficiary": "0x0000000000000000000000000000000000000000", + "daoHardforkAccounts": [] + } } }, - "difficulty": "0x20000", - "author": "0x0000000000000000000000000000000000000000", - "timestamp": "0x00", - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "extraData": "0x", - "gasLimit": "0x2fefd8" - }, - "nodes": [ - "enode://b1217cbaa440e35ed471157123fe468e19e8b5ad5bedb4b1fdbcbdab6fb2f5ed3e95dd9c24a22a79fdb2352204cea207df27d92bfd21bfd41545e8b16f637499@104.44.138.37:30303" - ], - "accounts": { - "0000000000000000000000000000000000000001": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ecrecover", "pricing": { "linear": { "base": 3000, "word": 0 } } } }, - "0000000000000000000000000000000000000002": { "balance": "1", "nonce": "1048576", "builtin": { "name": "sha256", "pricing": { "linear": { "base": 60, "word": 12 } } } }, - "0000000000000000000000000000000000000003": { "balance": "1", "nonce": "1048576", "builtin": { "name": "ripemd160", "pricing": { "linear": { "base": 600, "word": 120 } } } }, - "0000000000000000000000000000000000000004": { "balance": "1", "nonce": "1048576", "builtin": { "name": "identity", "pricing": { "linear": { "base": 15, "word": 3 } } } }, - "102e61f5d8f9bc71d0ad4a084df4e65e05ce0e1c": { "balance": "1606938044258990275541962092341162602522202993782792835301376", "nonce": "1048576" } - }, - "hardcodedSync": { - "header": "f901f9a0d405da4e66f1445d455195229624e133f5baafe72b5cf7b3c36c12c8146e98b7a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a05fb2b4bfdef7b314451cb138a534d225c922fc0e5fbe25e451142732c3e25c25a088d2ec6b9860aae1a2c3b299f72b6a5d70d7f7ba4722c78f2c49ba96273c2158a007c6fdfa8eea7e86b81f5b0fc0f78f90cc19f4aa60d323151e0cac660199e9a1b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302008003832fefba82524d84568e932a80a0a0349d8c3df71f1a48a9df7d03fd5f14aeee7d91332c009ecaff0a71ead405bd88ab4e252a7e8c2a23", - "totalDifficulty": "0x400000000", - "CHTs": [ - "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", - "0xd7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544" - ] - } + "params": { + "accountStartNonce": "0x0100000", + "maximumExtraDataSize": "0x20", + "minGasLimit": "0x1388", + "networkID" : "0x2", + "forkBlock": "0xffffffffffffffff", + "forkCanonHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "gasLimitBoundDivisor": "0x20" + }, + "genesis": { + "seal": { + "ethereum": { + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x00006d6f7264656e" + } + }, + "difficulty": "0x20000", + "author": "0x0000000000000000000000000000000000000000", + "timestamp": "0x00", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "extraData": "0x", + "gasLimit": "0x2fefd8" + }, + "nodes": [ + "enode://b1217cbaa440e35ed471157123fe468e19e8b5ad5bedb4b1fdbcbdab6fb2f5ed3e95dd9c24a22a79fdb2352204cea207df27d92bfd21bfd41545e8b16f637499@104.44.138.37:30303" + ], + "accounts": { + "0000000000000000000000000000000000000001": { + "balance": "1", + "nonce": "1048576", + "builtin": { + "name": "ecrecover", + "pricing": { + "linear": { + "base": 3000, + "word": 0 + } + } + } + }, + "0000000000000000000000000000000000000002": { + "balance": "1", + "nonce": "1048576", + "builtin": { + "name": "sha256", + "pricing": { + "linear": { + "base": 60, + "word": 12 + } + } + } + }, + "0000000000000000000000000000000000000003": { + "balance": "1", + "nonce": "1048576", + "builtin": { + "name": "ripemd160", + "pricing": { + "linear": { + "base": 600, + "word": 120 + } + } + } + }, + "0000000000000000000000000000000000000004": { + "balance": "1", + "nonce": "1048576", + "builtin": { + "name": "identity", + "pricing": { + "linear": { + "base": 15, + "word": 3 + } + } + } + }, + "102e61f5d8f9bc71d0ad4a084df4e65e05ce0e1c": { "balance": "1606938044258990275541962092341162602522202993782792835301376", "nonce": "1048576" } + }, + "hardcodedSync": { + "header": "f901f9a0d405da4e66f1445d455195229624e133f5baafe72b5cf7b3c36c12c8146e98b7a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948888f1f195afa192cfee860698584c030f4c9db1a05fb2b4bfdef7b314451cb138a534d225c922fc0e5fbe25e451142732c3e25c25a088d2ec6b9860aae1a2c3b299f72b6a5d70d7f7ba4722c78f2c49ba96273c2158a007c6fdfa8eea7e86b81f5b0fc0f78f90cc19f4aa60d323151e0cac660199e9a1b90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302008003832fefba82524d84568e932a80a0a0349d8c3df71f1a48a9df7d03fd5f14aeee7d91332c009ecaff0a71ead405bd88ab4e252a7e8c2a23", + "totalDifficulty": "0x400000000", + "CHTs": [ + "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", + "0xd7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544" + ] + } }"#; let _deserialized: Spec = serde_json::from_str(s).unwrap(); // TODO: validate all fields diff --git a/json/src/spec/state.rs b/json/src/spec/state.rs index e8a8663672e..95b13fea400 100644 --- a/json/src/spec/state.rs +++ b/json/src/spec/state.rs @@ -31,7 +31,7 @@ impl State { pub fn builtins(&self) -> BTreeMap { self.0 .iter() - .filter_map(|(add, ref acc)| acc.builtin.clone().map(|b| (add.clone(), b))) + .filter_map(|(add, ref acc)| acc.builtin.clone().map(|b| (add.clone(), b.into()))) .collect() } diff --git a/miner/Cargo.toml b/miner/Cargo.toml index 7432b10512b..e7a2fed4fd7 100644 --- a/miner/Cargo.toml +++ b/miner/Cargo.toml @@ -11,7 +11,7 @@ authors = ["Parity Technologies "] ethash = { path = "../ethash", optional = true } fetch = { path = "../util/fetch", optional = true } hyper = { version = "0.12", optional = true } -url = { version = "1", optional = true } +url = { version = "2", optional = true } # Miner ansi_term = "0.10" diff --git a/miner/price-info/src/lib.rs b/miner/price-info/src/lib.rs index 4117f84c525..3745ef12e7e 100644 --- a/miner/price-info/src/lib.rs +++ b/miner/price-info/src/lib.rs @@ -92,8 +92,7 @@ impl cmp::PartialEq for Client { impl Client { /// Creates a new instance of the `Client` given a `fetch::Client`. - pub fn new(fetch: F, pool: Executor) -> Client { - let api_endpoint = "https://api.etherscan.io/api?module=stats&action=ethprice".to_owned(); + pub fn new(fetch: F, pool: Executor, api_endpoint: String) -> Client { Client { pool, api_endpoint, fetch } } @@ -142,11 +141,11 @@ mod test { use fake_fetch::FakeFetch; fn price_info_ok(response: &str, executor: Executor) -> Client> { - Client::new(FakeFetch::new(Some(response.to_owned())), executor) + Client::new(FakeFetch::new(Some(response.to_owned())), executor, "fake_endpoint".to_owned()) } fn price_info_not_found(executor: Executor) -> Client> { - Client::new(FakeFetch::new(None::), executor) + Client::new(FakeFetch::new(None::), executor, "fake_endpoint".to_owned()) } #[test] diff --git a/miner/src/gas_price_calibrator.rs b/miner/src/gas_price_calibrator.rs index 7a0943640cf..e91b880fadd 100644 --- a/miner/src/gas_price_calibrator.rs +++ b/miner/src/gas_price_calibrator.rs @@ -43,11 +43,11 @@ pub struct GasPriceCalibrator { impl GasPriceCalibrator { /// Create a new gas price calibrator. - pub fn new(options: GasPriceCalibratorOptions, fetch: FetchClient, p: Executor) -> GasPriceCalibrator { + pub fn new(options: GasPriceCalibratorOptions, fetch: FetchClient, p: Executor, api_endpoint: String) -> GasPriceCalibrator { GasPriceCalibrator { options: options, next_calibration: Instant::now(), - price_info: PriceInfoClient::new(fetch, p), + price_info: PriceInfoClient::new(fetch, p, api_endpoint), } } diff --git a/miner/stratum/Cargo.toml b/miner/stratum/Cargo.toml index a7e13ef681c..e2599cf5f1b 100644 --- a/miner/stratum/Cargo.toml +++ b/miner/stratum/Cargo.toml @@ -8,8 +8,8 @@ authors = ["Parity Technologies "] [dependencies] ethereum-types = "0.4" keccak-hash = "0.1" -jsonrpc-core = "10.0.1" -jsonrpc-tcp-server = "10.0.1" +jsonrpc-core = "14.0.3" +jsonrpc-tcp-server = "14.0.3" log = "0.4" parking_lot = "0.7" diff --git a/miner/stratum/src/lib.rs b/miner/stratum/src/lib.rs index 5ee0296dacf..05a7dfb6dc0 100644 --- a/miner/stratum/src/lib.rs +++ b/miner/stratum/src/lib.rs @@ -76,7 +76,7 @@ impl Stratum { let implementation = Arc::new(StratumImpl { subscribers: RwLock::default(), - job_que: RwLock::default(), + job_queue: RwLock::default(), dispatcher, workers: Arc::new(RwLock::default()), secret, @@ -106,13 +106,9 @@ impl Stratum { } impl PushWorkHandler for Stratum { - fn push_work_all(&self, payload: String) -> Result<(), Error> { + fn push_work_all(&self, payload: String) { self.implementation.push_work_all(payload, &self.tcp_dispatcher) } - - fn push_work(&self, payloads: Vec) -> Result<(), Error> { - self.implementation.push_work(payloads, &self.tcp_dispatcher) - } } impl Drop for Stratum { @@ -126,14 +122,14 @@ struct StratumImpl { /// Subscribed clients subscribers: RwLock>, /// List of workers supposed to receive job update - job_que: RwLock>, + job_queue: RwLock>, /// Payload manager dispatcher: Arc, /// Authorized workers (socket - worker_id) workers: Arc>>, /// Secret if any secret: Option, - /// Dispatch notify couinter + /// Dispatch notify counter notify_counter: RwLock, } @@ -143,7 +139,7 @@ impl StratumImpl { use std::str::FromStr; self.subscribers.write().push(meta.addr().clone()); - self.job_que.write().insert(meta.addr().clone()); + self.job_queue.write().insert(meta.addr().clone()); trace!(target: "stratum", "Subscription request from {:?}", meta.addr()); Ok(match self.dispatcher.initial() { @@ -160,7 +156,7 @@ impl StratumImpl { /// rpc method `mining.authorize` fn authorize(&self, params: Params, meta: SocketMetadata) -> RpcResult { - params.parse::<(String, String)>().map(|(worker_id, secret)|{ + params.parse::<(String, String)>().map(|(worker_id, secret)| { if let Some(valid_secret) = self.secret { let hash = keccak(secret); if hash != valid_secret { @@ -184,15 +180,15 @@ impl StratumImpl { _ => None }) .collect::>()) { - Ok(()) => { - self.update_peers(&meta.tcp_dispatcher.expect("tcp_dispatcher is always initialized; qed")); - to_value(true) - }, - Err(submit_err) => { - warn!("Error while submitting share: {:?}", submit_err); - to_value(false) - } + Ok(()) => { + self.update_peers(&meta.tcp_dispatcher.expect("tcp_dispatcher is always initialized; qed")); + to_value(true) + }, + Err(submit_err) => { + warn!("Error while submitting share: {:?}", submit_err); + to_value(false) } + } }, _ => { trace!(target: "stratum", "Invalid submit work format {:?}", params); @@ -204,36 +200,37 @@ impl StratumImpl { /// Helper method fn update_peers(&self, tcp_dispatcher: &Dispatcher) { if let Some(job) = self.dispatcher.job() { - if let Err(e) = self.push_work_all(job, tcp_dispatcher) { - warn!("Failed to update some of the peers: {:?}", e); - } + self.push_work_all(job, tcp_dispatcher) } } - fn push_work_all(&self, payload: String, tcp_dispatcher: &Dispatcher) -> Result<(), Error> { + fn push_work_all(&self, payload: String, tcp_dispatcher: &Dispatcher) { let hup_peers = { let workers = self.workers.read(); let next_request_id = { let mut counter = self.notify_counter.write(); - if *counter == ::std::u32::MAX { *counter = NOTIFY_COUNTER_INITIAL; } - else { *counter = *counter + 1 } + if *counter == ::std::u32::MAX { + *counter = NOTIFY_COUNTER_INITIAL; + } else { + *counter = *counter + 1 + } *counter }; - let mut hup_peers = HashSet::with_capacity(0); // most of the cases won't be needed, hence avoid allocation + let mut hup_peers = HashSet::new(); let workers_msg = format!("{{ \"id\": {}, \"method\": \"mining.notify\", \"params\": {} }}", next_request_id, payload); trace!(target: "stratum", "pushing work for {} workers (payload: '{}')", workers.len(), &workers_msg); - for (ref addr, _) in workers.iter() { + for (addr, _) in workers.iter() { trace!(target: "stratum", "pusing work to {}", addr); match tcp_dispatcher.push_message(addr, workers_msg.clone()) { Err(PushMessageError::NoSuchPeer) => { - trace!(target: "stratum", "Worker no longer connected: {}", &addr); - hup_peers.insert(*addr.clone()); + trace!(target: "stratum", "Worker no longer connected: {}", addr); + hup_peers.insert(addr.clone()); }, Err(e) => { warn!(target: "stratum", "Unexpected transport error: {:?}", e); }, - Ok(_) => { }, + Ok(_) => {}, } } hup_peers @@ -241,33 +238,10 @@ impl StratumImpl { if !hup_peers.is_empty() { let mut workers = self.workers.write(); - for hup_peer in hup_peers { workers.remove(&hup_peer); } - } - - Ok(()) - } - - fn push_work(&self, payloads: Vec, tcp_dispatcher: &Dispatcher) -> Result<(), Error> { - if !payloads.len() > 0 { - return Err(Error::NoWork); - } - let workers = self.workers.read(); - let addrs = workers.keys().collect::>(); - if !workers.len() > 0 { - return Err(Error::NoWorkers); - } - let mut que = payloads; - let mut addr_index = 0; - while que.len() > 0 { - let next_worker = addrs[addr_index]; - let mut next_payload = que.drain(0..1); - tcp_dispatcher.push_message( - next_worker, - next_payload.nth(0).expect("drained successfully of 0..1, so 0-th element should exist") - )?; - addr_index = addr_index + 1; + for hup_peer in hup_peers { + workers.remove(&hup_peer); + } } - Ok(()) } } @@ -475,8 +449,7 @@ mod tests { .map_err(|err: timeout::Error<()>| panic!("Timeout: {:?}", err)) .and_then(move |stream| { trace!(target: "stratum", "Pusing work to peers"); - stratum.push_work_all(r#"{ "00040008", "100500" }"#.to_owned()) - .expect("Pushing work should produce no errors"); + stratum.push_work_all(r#"{ "00040008", "100500" }"#.to_owned()); Timeout::new(future::ok(stream), ::std::time::Duration::from_millis(100)) }) .map_err(|err: timeout::Error<()>| panic!("Timeout: {:?}", err)) @@ -497,4 +470,11 @@ mod tests { "{ \"id\": 17, \"method\": \"mining.notify\", \"params\": { \"00040008\", \"100500\" } }\n", response); } + + #[test] + fn jsonprc_server_is_send_and_sync() { + fn is_send_and_sync() {} + + is_send_and_sync::(); + } } diff --git a/miner/stratum/src/traits.rs b/miner/stratum/src/traits.rs index 36b95a0169e..d71af1feedc 100644 --- a/miner/stratum/src/traits.rs +++ b/miner/stratum/src/traits.rs @@ -55,10 +55,7 @@ pub trait JobDispatcher: Send + Sync { /// Interface that can handle requests to push job for workers pub trait PushWorkHandler: Send + Sync { /// push the same work package for all workers (`payload`: json of pow-specific set of work specification) - fn push_work_all(&self, payload: String) -> Result<(), Error>; - - /// push the work packages worker-wise (`payload`: json of pow-specific set of work specification) - fn push_work(&self, payloads: Vec) -> Result<(), Error>; + fn push_work_all(&self, payload: String); } pub struct ServiceConfiguration { diff --git a/parity-clib/Cargo.toml b/parity-clib/Cargo.toml index f57e503dea6..ad8a5249a2d 100644 --- a/parity-clib/Cargo.toml +++ b/parity-clib/Cargo.toml @@ -14,7 +14,7 @@ futures = "0.1.6" jni = { version = "0.11", optional = true } panic_hook = { path = "../util/panic-hook" } parity-ethereum = { path = "../", default-features = false } -tokio = "0.1.11" +tokio = "0.1.22" tokio-current-thread = "0.1.3" [features] diff --git a/parity/account_utils.rs b/parity/account_utils.rs index 6c11ae23b34..20285ad83e2 100644 --- a/parity/account_utils.rs +++ b/parity/account_utils.rs @@ -81,7 +81,7 @@ mod accounts { hardware_wallet_classic_key: spec == &SpecType::Classic, unlock_keep_secret: cfg.enable_fast_unlock, blacklisted_accounts: match *spec { - SpecType::Morden | SpecType::Ropsten | SpecType::Kovan | SpecType::Sokol | SpecType::Dev => vec![], + SpecType::Morden | SpecType::Mordor | SpecType::Ropsten | SpecType::Kovan | SpecType::Goerli | SpecType::Kotti | SpecType::Sokol | SpecType::Dev => vec![], _ => vec![ "00a329c0648769a73afac7f9381e08fb43dbea72".into() ], diff --git a/parity/blockchain.rs b/parity/blockchain.rs index 262b98ae2c5..6fdd92b0a8a 100644 --- a/parity/blockchain.rs +++ b/parity/blockchain.rs @@ -14,20 +14,22 @@ // You should have received a copy of the GNU General Public License // along with Parity Ethereum. If not, see . -use std::str::{FromStr, from_utf8}; +use std::str::from_utf8; use std::{io, fs}; use std::io::{BufReader, BufRead}; use std::time::{Instant, Duration}; use std::thread::sleep; use std::sync::Arc; + use rustc_hex::FromHex; use hash::{keccak, KECCAK_NULL_RLP}; use ethereum_types::{U256, H256, Address}; use bytes::ToPretty; use rlp::PayloadInfo; use ethcore::client::{ - Mode, DatabaseCompactionProfile, VMType, Nonce, Balance, BlockChainClient, BlockId, BlockInfo, ImportBlock, BlockChainReset + Mode, DatabaseCompactionProfile, VMType, Nonce, Balance, BlockChainClient, BlockId, BlockInfo, ImportBlock, BlockChainReset, ImportExportBlocks }; +use types::data_format::DataFormat; use ethcore::error::{ImportErrorKind, ErrorKind as EthcoreErrorKind, Error as EthcoreError}; use ethcore::miner::Miner; use ethcore::verification::queue::VerifierSettings; @@ -43,30 +45,6 @@ use ethcore_private_tx; use db; use ansi_term::Colour; -#[derive(Debug, PartialEq)] -pub enum DataFormat { - Hex, - Binary, -} - -impl Default for DataFormat { - fn default() -> Self { - DataFormat::Binary - } -} - -impl FromStr for DataFormat { - type Err = String; - - fn from_str(s: &str) -> Result { - match s { - "binary" | "bin" => Ok(DataFormat::Binary), - "hex" => Ok(DataFormat::Hex), - x => Err(format!("Invalid format: {}", x)) - } - } -} - #[derive(Debug, PartialEq)] pub enum BlockchainCmd { Kill(KillBlockchain), @@ -228,7 +206,7 @@ fn execute_import_light(cmd: ImportBlockchain) -> Result<(), String> { &cmd.cache_config, &cmd.compaction).map_err(|e| format!("Failed to open database: {:?}", e))?; - // TODO: could epoch signals be avilable at the end of the file? + // TODO: could epoch signals be available at the end of the file? let fetch = ::light::client::fetch::unavailable(); let service = LightClientService::start(config, &spec, fetch, db, cache) .map_err(|e| format!("Failed to start client: {}", e))?; @@ -238,7 +216,7 @@ fn execute_import_light(cmd: ImportBlockchain) -> Result<(), String> { let client = service.client(); - let mut instream: Box = match cmd.file_path { + let mut instream: Box = match cmd.file_path { Some(f) => Box::new(fs::File::open(&f).map_err(|_| format!("Cannot open given file: {}", f))?), None => Box::new(io::stdin()), }; @@ -406,27 +384,11 @@ fn execute_import(cmd: ImportBlockchain) -> Result<(), String> { let client = service.client(); - let mut instream: Box = match cmd.file_path { + let instream: Box = match cmd.file_path { Some(f) => Box::new(fs::File::open(&f).map_err(|_| format!("Cannot open given file: {}", f))?), None => Box::new(io::stdin()), }; - const READAHEAD_BYTES: usize = 8; - - let mut first_bytes: Vec = vec![0; READAHEAD_BYTES]; - let mut first_read = 0; - - let format = match cmd.format { - Some(format) => format, - None => { - first_read = instream.read(&mut first_bytes).map_err(|_| "Error reading from the file/stream.")?; - match first_bytes[0] { - 0xf9 => DataFormat::Binary, - _ => DataFormat::Hex, - } - } - }; - let informant = Arc::new(Informant::new( FullNodeInformantData { client: client.clone(), @@ -440,49 +402,7 @@ fn execute_import(cmd: ImportBlockchain) -> Result<(), String> { service.register_io_handler(informant).map_err(|_| "Unable to register informant handler".to_owned())?; - let do_import = |bytes| { - let block = Unverified::from_rlp(bytes).map_err(|_| "Invalid block rlp")?; - while client.queue_info().is_full() { sleep(Duration::from_secs(1)); } - match client.import_block(block) { - Err(EthcoreError(EthcoreErrorKind::Import(ImportErrorKind::AlreadyInChain), _)) => { - trace!("Skipping block already in chain."); - } - Err(e) => { - return Err(format!("Cannot import block: {:?}", e)); - }, - Ok(_) => {}, - } - Ok(()) - }; - - match format { - DataFormat::Binary => { - loop { - let mut bytes = if first_read > 0 {first_bytes.clone()} else {vec![0; READAHEAD_BYTES]}; - let n = if first_read > 0 { - first_read - } else { - instream.read(&mut bytes).map_err(|_| "Error reading from the file/stream.")? - }; - if n == 0 { break; } - first_read = 0; - let s = PayloadInfo::from(&bytes).map_err(|e| format!("Invalid RLP in the file/stream: {:?}", e))?.total(); - bytes.resize(s, 0); - instream.read_exact(&mut bytes[n..]).map_err(|_| "Error reading from the file/stream.")?; - do_import(bytes)?; - } - } - DataFormat::Hex => { - for line in BufReader::new(instream).lines() { - let s = line.map_err(|_| "Error reading from the file/stream.")?; - let s = if first_read > 0 {from_utf8(&first_bytes).unwrap().to_owned() + &(s[..])} else {s}; - first_read = 0; - let bytes = s.from_hex().map_err(|_| "Invalid hex in file/stream.")?; - do_import(bytes)?; - } - } - } - client.flush_queue(); + client.import_blocks(instream, cmd.format)?; // save user defaults user_defaults.pruning = algorithm; @@ -611,32 +531,14 @@ fn execute_export(cmd: ExportBlockchain) -> Result<(), String> { false, cmd.max_round_blocks_to_import, )?; - let format = cmd.format.unwrap_or_default(); - let client = service.client(); - let mut out: Box = match cmd.file_path { + let out: Box = match cmd.file_path { Some(f) => Box::new(fs::File::create(&f).map_err(|_| format!("Cannot write to file given: {}", f))?), None => Box::new(io::stdout()), }; - let from = client.block_number(cmd.from_block).ok_or("From block could not be found")?; - let to = client.block_number(cmd.to_block).ok_or("To block could not be found")?; - - for i in from..(to + 1) { - if i % 10000 == 0 { - info!("#{}", i); - } - let b = client.block(BlockId::Number(i)).ok_or("Error exporting incomplete chain")?.into_inner(); - match format { - DataFormat::Binary => { - out.write(&b).map_err(|e| format!("Couldn't write to stream. Cause: {}", e))?; - } - DataFormat::Hex => { - out.write_fmt(format_args!("{}", b.pretty())).map_err(|e| format!("Couldn't write to stream. Cause: {}", e))?; - } - } - } + client.export_blocks(out, cmd.from_block, cmd.to_block, cmd.format)?; info!("Export completed."); Ok(()) @@ -659,7 +561,7 @@ fn execute_export_state(cmd: ExportState) -> Result<(), String> { let client = service.client(); - let mut out: Box = match cmd.file_path { + let mut out: Box = match cmd.file_path { Some(f) => Box::new(fs::File::create(&f).map_err(|_| format!("Cannot write to file given: {}", f))?), None => Box::new(io::stdout()), }; diff --git a/parity/cli/mod.rs b/parity/cli/mod.rs index adcdf7e36fd..0e8c692cce3 100644 --- a/parity/cli/mod.rs +++ b/parity/cli/mod.rs @@ -300,7 +300,7 @@ usage! { ARG arg_chain: (String) = "foundation", or |c: &Config| c.parity.as_ref()?.chain.clone(), "--chain=[CHAIN]", - "Specify the blockchain type. CHAIN may be either a JSON chain specification file or ethereum, classic, poacore, xdai, volta, ewc, expanse, musicoin, ellaism, mix, callisto, morden, ropsten, kovan, rinkeby, goerli, kotti, poasokol, testnet, or dev.", + "Specify the blockchain type. CHAIN may be either a JSON chain specification file or ethereum, classic, poacore, xdai, volta, ewc, musicoin, ellaism, mix, callisto, morden, mordor, ropsten, kovan, rinkeby, goerli, kotti, poasokol, testnet, or dev.", ARG arg_keys_path: (String) = "$BASE/keys", or |c: &Config| c.parity.as_ref()?.keys_path.clone(), "--keys-path=[PATH]", @@ -1556,14 +1556,14 @@ mod tests { // given let mut config = Config::default(); let mut operating = Operating::default(); - operating.chain = Some("morden".into()); + operating.chain = Some("mordor".into()); config.parity = Some(operating); // when let args = Args::parse_with_config(&["parity"], config).unwrap(); // then - assert_eq!(args.arg_chain, "morden".to_owned()); + assert_eq!(args.arg_chain, "mordor".to_owned()); } #[test] @@ -1571,7 +1571,7 @@ mod tests { // given let mut config = Config::default(); let mut operating = Operating::default(); - operating.chain = Some("morden".into()); + operating.chain = Some("mordor".into()); config.parity = Some(operating); // when diff --git a/parity/configuration.rs b/parity/configuration.rs index c2f18150b20..17f6d05a099 100644 --- a/parity/configuration.rs +++ b/parity/configuration.rs @@ -50,7 +50,8 @@ use ethcore_private_tx::{ProviderConfig, EncryptorConfig}; use secretstore::{NodeSecretKey, Configuration as SecretStoreConfiguration, ContractAddress as SecretStoreContractAddress}; use updater::{UpdatePolicy, UpdateFilter, ReleaseTrack}; use run::RunCmd; -use blockchain::{BlockchainCmd, ImportBlockchain, ExportBlockchain, KillBlockchain, ExportState, DataFormat, ResetBlockchain}; +use types::data_format::DataFormat; +use blockchain::{BlockchainCmd, ImportBlockchain, ExportBlockchain, KillBlockchain, ExportState, ResetBlockchain}; use export_hardcoded_sync::ExportHsyncCmd; use presale::ImportWallet; use account::{AccountCmd, NewAccount, ListAccounts, ImportAccounts, ImportFromGethAccounts}; @@ -59,6 +60,7 @@ use network::{IpFilter}; const DEFAULT_MAX_PEERS: u16 = 50; const DEFAULT_MIN_PEERS: u16 = 25; +pub const ETHERSCAN_ETH_PRICE_ENDPOINT: &str = "https://api.etherscan.io/api?module=stats&action=ethprice"; #[derive(Debug, PartialEq)] pub enum Cmd { @@ -668,23 +670,30 @@ impl Configuration { } let usd_per_tx = to_price(&self.args.arg_usd_per_tx)?; - if "auto" == self.args.arg_usd_per_eth.as_str() { - return Ok(GasPricerConfig::Calibrated { + + if "auto" == self.args.arg_usd_per_eth { + Ok(GasPricerConfig::Calibrated { usd_per_tx: usd_per_tx, recalibration_period: to_duration(self.args.arg_price_update_period.as_str())?, - }); - } - - let usd_per_eth = to_price(&self.args.arg_usd_per_eth)?; - let wei_per_gas = wei_per_gas(usd_per_tx, usd_per_eth); + api_endpoint: ETHERSCAN_ETH_PRICE_ENDPOINT.to_string(), + }) + } else if let Ok(usd_per_eth_parsed) = to_price(&self.args.arg_usd_per_eth) { + let wei_per_gas = wei_per_gas(usd_per_tx, usd_per_eth_parsed); - info!( - "Using a fixed conversion rate of Ξ1 = {} ({} wei/gas)", - Colour::White.bold().paint(format!("US${:.2}", usd_per_eth)), - Colour::Yellow.bold().paint(format!("{}", wei_per_gas)) - ); + info!( + "Using a fixed conversion rate of Ξ1 = {} ({} wei/gas)", + Colour::White.bold().paint(format!("US${:.2}", usd_per_eth_parsed)), + Colour::Yellow.bold().paint(format!("{}", wei_per_gas)) + ); - Ok(GasPricerConfig::Fixed(wei_per_gas)) + Ok(GasPricerConfig::Fixed(wei_per_gas)) + } else { + Ok(GasPricerConfig::Calibrated { + usd_per_tx: usd_per_tx, + recalibration_period: to_duration(self.args.arg_price_update_period.as_str())?, + api_endpoint: self.args.arg_usd_per_eth.clone(), + }) + } } fn extra_data(&self) -> Result { @@ -1195,14 +1204,15 @@ mod tests { use std::str::FromStr; use tempdir::TempDir; - use ethcore::client::{VMType, BlockId}; + use ethcore::client::VMType; use ethcore::miner::MinerOptions; use miner::pool::PrioritizationStrategy; use parity_rpc::NetworkSettings; use updater::{UpdatePolicy, UpdateFilter, ReleaseTrack}; - + use types::ids::BlockId; + use types::data_format::DataFormat; use account::{AccountCmd, NewAccount, ImportAccounts, ListAccounts}; - use blockchain::{BlockchainCmd, ImportBlockchain, ExportBlockchain, DataFormat, ExportState}; + use blockchain::{BlockchainCmd, ImportBlockchain, ExportBlockchain, ExportState}; use cli::Args; use dir::{Directories, default_hypervisor_path}; use helpers::{default_network_config}; @@ -1564,7 +1574,7 @@ mod tests { // then assert_eq!(conf.network_settings(), Ok(NetworkSettings { name: "testname".to_owned(), - chain: "kovan".to_owned(), + chain: "goerli".to_owned(), is_dev_chain: false, network_port: 30303, rpc_enabled: true, diff --git a/parity/helpers.rs b/parity/helpers.rs index b68d854d1a9..6ebfc991bd8 100644 --- a/parity/helpers.rs +++ b/parity/helpers.rs @@ -132,7 +132,7 @@ pub fn to_addresses(s: &Option) -> Result, String> { /// Tries to parse string as a price. pub fn to_price(s: &str) -> Result { - s.parse::().map_err(|_| format!("Invalid transaciton price 's' given. Must be a decimal number.")) + s.parse::().map_err(|_| format!("Invalid transaction price {:?} given. Must be a decimal number.", s)) } pub fn join_set(set: Option<&HashSet>) -> Option { diff --git a/parity/main.rs b/parity/main.rs index 066061cbafd..60ad8cad613 100644 --- a/parity/main.rs +++ b/parity/main.rs @@ -285,6 +285,7 @@ fn main_direct(force_can_restart: bool) -> i32 { let e = exit.clone(); let exiting = exiting.clone(); move |panic_msg| { + warn!("Panic occured, see stderr for details"); eprintln!("{}", panic_msg); if !exiting.swap(true, Ordering::SeqCst) { *e.0.lock() = ExitStatus { diff --git a/parity/params.rs b/parity/params.rs index f17cae2c575..7e99adbac2f 100644 --- a/parity/params.rs +++ b/parity/params.rs @@ -31,6 +31,8 @@ use miner::gas_price_calibrator::{GasPriceCalibratorOptions, GasPriceCalibrator} use parity_version::version_data; use user_defaults::UserDefaults; +use crate::configuration; + #[derive(Debug, PartialEq)] pub enum SpecType { Foundation, @@ -45,6 +47,7 @@ pub enum SpecType { Mix, Callisto, Morden, + Mordor, Ropsten, Kovan, Rinkeby, @@ -66,8 +69,8 @@ impl str::FromStr for SpecType { fn from_str(s: &str) -> Result { let spec = match s { - "ethereum" | "frontier" | "homestead" | "byzantium" | "foundation" | "mainnet" => SpecType::Foundation, - "classic" | "frontier-dogmatic" | "homestead-dogmatic" => SpecType::Classic, + "eth" | "ethereum" | "foundation" | "mainnet" => SpecType::Foundation, + "etc" | "classic" => SpecType::Classic, "poanet" | "poacore" => SpecType::Poanet, "xdai" => SpecType::Xdai, "volta" => SpecType::Volta, @@ -77,11 +80,12 @@ impl str::FromStr for SpecType { "ellaism" => SpecType::Ellaism, "mix" => SpecType::Mix, "callisto" => SpecType::Callisto, - "morden" | "classic-testnet" => SpecType::Morden, + "morden" => SpecType::Morden, + "mordor" | "classic-testnet" => SpecType::Mordor, "ropsten" => SpecType::Ropsten, - "kovan" | "testnet" => SpecType::Kovan, + "kovan" => SpecType::Kovan, "rinkeby" => SpecType::Rinkeby, - "goerli" | "görli" => SpecType::Goerli, + "goerli" | "görli" | "testnet" => SpecType::Goerli, "kotti" => SpecType::Kotti, "sokol" | "poasokol" => SpecType::Sokol, "dev" => SpecType::Dev, @@ -106,6 +110,7 @@ impl fmt::Display for SpecType { SpecType::Mix => "mix", SpecType::Callisto => "callisto", SpecType::Morden => "morden", + SpecType::Mordor => "mordor", SpecType::Ropsten => "ropsten", SpecType::Kovan => "kovan", SpecType::Rinkeby => "rinkeby", @@ -134,6 +139,7 @@ impl SpecType { SpecType::Mix => Ok(ethereum::new_mix(params)), SpecType::Callisto => Ok(ethereum::new_callisto(params)), SpecType::Morden => Ok(ethereum::new_morden(params)), + SpecType::Mordor => Ok(ethereum::new_mordor(params)), SpecType::Ropsten => Ok(ethereum::new_ropsten(params)), SpecType::Kovan => Ok(ethereum::new_kovan(params)), SpecType::Rinkeby => Ok(ethereum::new_rinkeby(params)), @@ -257,6 +263,7 @@ pub enum GasPricerConfig { Calibrated { usd_per_tx: f32, recalibration_period: Duration, + api_endpoint: String } } @@ -265,6 +272,7 @@ impl Default for GasPricerConfig { GasPricerConfig::Calibrated { usd_per_tx: 0.0001f32, recalibration_period: Duration::from_secs(3600), + api_endpoint: configuration::ETHERSCAN_ETH_PRICE_ENDPOINT.to_string(), } } } @@ -273,7 +281,7 @@ impl GasPricerConfig { pub fn to_gas_pricer(&self, fetch: FetchClient, p: Executor) -> GasPricer { match *self { GasPricerConfig::Fixed(u) => GasPricer::Fixed(u), - GasPricerConfig::Calibrated { usd_per_tx, recalibration_period, .. } => { + GasPricerConfig::Calibrated { usd_per_tx, recalibration_period, ref api_endpoint } => { GasPricer::new_calibrated( GasPriceCalibrator::new( GasPriceCalibratorOptions { @@ -282,6 +290,7 @@ impl GasPricerConfig { }, fetch, p, + api_endpoint.clone(), ) ) } @@ -373,15 +382,12 @@ mod tests { #[test] fn test_spec_type_parsing() { + assert_eq!(SpecType::Foundation, "eth".parse().unwrap()); + assert_eq!(SpecType::Foundation, "ethereum".parse().unwrap()); assert_eq!(SpecType::Foundation, "foundation".parse().unwrap()); - assert_eq!(SpecType::Foundation, "frontier".parse().unwrap()); - assert_eq!(SpecType::Foundation, "homestead".parse().unwrap()); - assert_eq!(SpecType::Foundation, "byzantium".parse().unwrap()); assert_eq!(SpecType::Foundation, "mainnet".parse().unwrap()); - assert_eq!(SpecType::Foundation, "ethereum".parse().unwrap()); + assert_eq!(SpecType::Classic, "etc".parse().unwrap()); assert_eq!(SpecType::Classic, "classic".parse().unwrap()); - assert_eq!(SpecType::Classic, "frontier-dogmatic".parse().unwrap()); - assert_eq!(SpecType::Classic, "homestead-dogmatic".parse().unwrap()); assert_eq!(SpecType::Poanet, "poanet".parse().unwrap()); assert_eq!(SpecType::Poanet, "poacore".parse().unwrap()); assert_eq!(SpecType::Xdai, "xdai".parse().unwrap()); @@ -394,13 +400,14 @@ mod tests { assert_eq!(SpecType::Mix, "mix".parse().unwrap()); assert_eq!(SpecType::Callisto, "callisto".parse().unwrap()); assert_eq!(SpecType::Morden, "morden".parse().unwrap()); - assert_eq!(SpecType::Morden, "classic-testnet".parse().unwrap()); + assert_eq!(SpecType::Mordor, "mordor".parse().unwrap()); + assert_eq!(SpecType::Mordor, "classic-testnet".parse().unwrap()); assert_eq!(SpecType::Ropsten, "ropsten".parse().unwrap()); assert_eq!(SpecType::Kovan, "kovan".parse().unwrap()); - assert_eq!(SpecType::Kovan, "testnet".parse().unwrap()); assert_eq!(SpecType::Rinkeby, "rinkeby".parse().unwrap()); assert_eq!(SpecType::Goerli, "goerli".parse().unwrap()); assert_eq!(SpecType::Goerli, "görli".parse().unwrap()); + assert_eq!(SpecType::Goerli, "testnet".parse().unwrap()); assert_eq!(SpecType::Kotti, "kotti".parse().unwrap()); assert_eq!(SpecType::Sokol, "sokol".parse().unwrap()); assert_eq!(SpecType::Sokol, "poasokol".parse().unwrap()); @@ -425,6 +432,7 @@ mod tests { assert_eq!(format!("{}", SpecType::Mix), "mix"); assert_eq!(format!("{}", SpecType::Callisto), "callisto"); assert_eq!(format!("{}", SpecType::Morden), "morden"); + assert_eq!(format!("{}", SpecType::Mordor), "mordor"); assert_eq!(format!("{}", SpecType::Ropsten), "ropsten"); assert_eq!(format!("{}", SpecType::Kovan), "kovan"); assert_eq!(format!("{}", SpecType::Rinkeby), "rinkeby"); diff --git a/parity/rpc.rs b/parity/rpc.rs index b07ca3f3e48..4a5b0a20501 100644 --- a/parity/rpc.rs +++ b/parity/rpc.rs @@ -29,7 +29,8 @@ use parity_rpc::{self as rpc, Metadata, DomainsValidation}; use rpc_apis::{self, ApiSet}; pub use parity_rpc::{IpcServer, HttpServer, RequestMiddleware}; -pub use parity_rpc::ws::Server as WsServer; +//pub use parity_rpc::ws::Server as WsServer; +pub use parity_rpc::ws::{Server as WsServer, ws}; pub const DAPPS_DOMAIN: &'static str = "web3.site"; @@ -185,9 +186,18 @@ pub fn new_ws( rpc::WsStats::new(deps.stats.clone()), ); +// match start_result { +// Ok(server) => Ok(Some(server)), +// Err(rpc::ws::Error::Io(rpc::ws::ErrorKind::Io(ref err), _)) if err.kind() == io::ErrorKind::AddrInUse => Err( +// format!("WebSockets address {} is already in use, make sure that another instance of an Ethereum client is not running or change the address using the --ws-port and --ws-interface options.", url) +// ), +// Err(e) => Err(format!("WebSockets error: {:?}", e)), +// } match start_result { Ok(server) => Ok(Some(server)), - Err(rpc::ws::Error(rpc::ws::ErrorKind::Io(ref err), _)) if err.kind() == io::ErrorKind::AddrInUse => Err( + Err(rpc::ws::Error::WsError(ws::Error { + kind: ws::ErrorKind::Io(ref err), .. + })) if err.kind() == io::ErrorKind::AddrInUse => Err( format!("WebSockets address {} is already in use, make sure that another instance of an Ethereum client is not running or change the address using the --ws-port and --ws-interface options.", url) ), Err(e) => Err(format!("WebSockets error: {:?}", e)), diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index e95c48cb96b..c696401e634 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -27,12 +27,12 @@ tokio-timer = "0.1" transient-hashmap = "0.4" itertools = "0.5" -jsonrpc-core = "10.0.1" -jsonrpc-derive = "10.0.2" -jsonrpc-http-server = "10.0.1" -jsonrpc-ws-server = "10.0.1" -jsonrpc-ipc-server = "10.0.1" -jsonrpc-pubsub = "10.0.1" +jsonrpc-core = "14.0.3" +jsonrpc-derive = "14.0.3" +jsonrpc-http-server = "14.0.3" +jsonrpc-ws-server = "14.0.3" +jsonrpc-ipc-server = "14.0.3" +jsonrpc-pubsub = "14.0.3" common-types = { path = "../ethcore/types" } ethash = { path = "../ethash" } diff --git a/rpc/src/v1/impls/eth.rs b/rpc/src/v1/impls/eth.rs index 734e70a61c1..9a3e2ee24ef 100644 --- a/rpc/src/v1/impls/eth.rs +++ b/rpc/src/v1/impls/eth.rs @@ -35,6 +35,7 @@ use types::transaction::{SignedTransaction, LocalizedTransaction}; use types::BlockNumber as EthBlockNumber; use types::encoded; use types::filter::Filter as EthcoreFilter; +use types::header::Header; use jsonrpc_core::{BoxFuture, Result}; use jsonrpc_core::futures::future; @@ -432,23 +433,48 @@ impl EthClient StateOrBlock { match number { BlockNumber::Num(num) => BlockId::Number(num).into(), BlockNumber::Earliest => BlockId::Earliest.into(), BlockNumber::Latest => BlockId::Latest.into(), - BlockNumber::Pending => { let info = self.client.chain_info(); self.miner .pending_state(info.best_block_number) - .map(|s| Box::new(s) as Box) - .unwrap_or(Box::new(self.client.latest_state()) as Box) + .map(|s| Box::new(s) as Box) + .unwrap_or_else(|| { + warn!("Asked for best pending state, but none found. Falling back to latest state"); + let (state, _) = self.client.latest_state_and_header(); + Box::new(state) as Box + }) .into() } } } + + /// Get the state and header of best pending block. On failure, fall back to the best imported + /// blocks state&header. + fn pending_state_and_header_with_fallback(&self) -> (T, Header) { + let best_block_number = self.client.chain_info().best_block_number; + let (maybe_state, maybe_header) = + self.miner.pending_state(best_block_number).map_or_else(|| (None, None),|s| { + (Some(s), self.miner.pending_block_header(best_block_number)) + }); + + match (maybe_state, maybe_header) { + (Some(state), Some(header)) => (state, header), + _ => { + warn!("Falling back to \"Latest\""); + self.client.latest_state_and_header() + } + } + } } pub fn pending_logs(miner: &M, best_block: EthBlockNumber, filter: &EthcoreFilter) -> Vec where M: MinerService { @@ -473,7 +499,6 @@ fn check_known(client: &C, number: BlockNumber) -> Result<()> where C: BlockC let id = match number { BlockNumber::Pending => return Ok(()), - BlockNumber::Num(n) => BlockId::Number(n), BlockNumber::Latest => BlockId::Latest, BlockNumber::Earliest => BlockId::Earliest, @@ -916,25 +941,25 @@ impl Eth for EthClient< let num = num.unwrap_or_default(); - let (mut state, header) = if num == BlockNumber::Pending { - let info = self.client.chain_info(); - let state = try_bf!(self.miner.pending_state(info.best_block_number).ok_or_else(errors::state_pruned)); - let header = try_bf!(self.miner.pending_block_header(info.best_block_number).ok_or_else(errors::state_pruned)); - - (state, header) - } else { - let id = match num { - BlockNumber::Num(num) => BlockId::Number(num), - BlockNumber::Earliest => BlockId::Earliest, - BlockNumber::Latest => BlockId::Latest, - BlockNumber::Pending => unreachable!(), // Already covered - }; + let (mut state, header) = + if num == BlockNumber::Pending { + self.pending_state_and_header_with_fallback() + } else { + let id = match num { + BlockNumber::Num(num) => BlockId::Number(num), + BlockNumber::Earliest => BlockId::Earliest, + BlockNumber::Latest => BlockId::Latest, + BlockNumber::Pending => unreachable!(), // Already covered + }; - let state = try_bf!(self.client.state_at(id).ok_or_else(errors::state_pruned)); - let header = try_bf!(self.client.block_header(id).ok_or_else(errors::state_pruned).and_then(|h| h.decode().map_err(errors::decode))); + let state = try_bf!(self.client.state_at(id).ok_or_else(errors::state_pruned)); + let header = try_bf!( + self.client.block_header(id).ok_or_else(errors::state_pruned) + .and_then(|h| h.decode().map_err(errors::decode)) + ); - (state, header) - }; + (state, header) + }; let result = self.client.call(&signed, Default::default(), &mut state, &header); @@ -956,13 +981,7 @@ impl Eth for EthClient< let num = num.unwrap_or_default(); let (state, header) = if num == BlockNumber::Pending { - let info = self.client.chain_info(); - let state = try_bf!(self.miner.pending_state(info.best_block_number) - .ok_or_else(errors::state_pruned)); - let header = try_bf!(self.miner.pending_block_header(info.best_block_number) - .ok_or_else(errors::state_pruned)); - - (state, header) + self.pending_state_and_header_with_fallback() } else { let id = match num { BlockNumber::Num(num) => BlockId::Number(num), diff --git a/rpc/src/v1/tests/helpers/miner_service.rs b/rpc/src/v1/tests/helpers/miner_service.rs index b16651bd9c5..86239be1a62 100644 --- a/rpc/src/v1/tests/helpers/miner_service.rs +++ b/rpc/src/v1/tests/helpers/miner_service.rs @@ -21,10 +21,11 @@ use std::collections::{BTreeMap, BTreeSet, HashMap}; use bytes::Bytes; use ethcore::block::SealedBlock; -use ethcore::client::{Nonce, PrepareOpenBlock, StateClient, EngineInfo}; +use ethcore::client::{Nonce, PrepareOpenBlock, StateClient, EngineInfo, traits::ForceUpdateSealing}; use ethcore::engines::{EthEngine, signer::EngineSigner}; use ethcore::error::Error; use ethcore::miner::{self, MinerService, AuthoringParams}; +use ethcore::client::test_client::TestState; use ethereum_types::{H256, U256, Address}; use miner::pool::local_transactions::Status as LocalTransactionStatus; use miner::pool::{verifier, VerifiedTransaction, QueueStatus}; @@ -87,14 +88,14 @@ impl TestMinerService { impl StateClient for TestMinerService { // State will not be used by test client anyway, since all methods that accept state are mocked - type State = (); + type State = TestState; - fn latest_state(&self) -> Self::State { - () + fn latest_state_and_header(&self) -> (Self::State, Header) { + (TestState, Header::default()) } fn state_at(&self, _id: BlockId) -> Option { - Some(()) + Some(TestState) } } @@ -105,7 +106,7 @@ impl EngineInfo for TestMinerService { } impl MinerService for TestMinerService { - type State = (); + type State = TestState; fn pending_state(&self, _latest_block_number: BlockNumber) -> Option { None @@ -185,7 +186,7 @@ impl MinerService for TestMinerService { } /// New chain head event. Restart mining operation. - fn update_sealing(&self, _chain: &C) { + fn update_sealing(&self, _chain: &C, _force: ForceUpdateSealing) { unimplemented!(); } diff --git a/rpc/src/v1/tests/mocked/eth.rs b/rpc/src/v1/tests/mocked/eth.rs index 75e05ce4674..2323e5ac0df 100644 --- a/rpc/src/v1/tests/mocked/eth.rs +++ b/rpc/src/v1/tests/mocked/eth.rs @@ -20,18 +20,21 @@ use std::sync::Arc; use std::time::{Instant, Duration, SystemTime, UNIX_EPOCH}; use accounts::AccountProvider; -use ethcore::client::{BlockChainClient, BlockId, EachBlockWith, Executed, TestBlockChainClient, TransactionId}; +use ethcore::client::{BlockChainClient, EachBlockWith, Executed, TestBlockChainClient}; use ethcore::miner::{self, MinerService}; -use ethereum_types::{H160, H256, U256, Address}; +use ethereum_types::{H160, H256, U256, Address, Bloom}; use miner::external::ExternalMiner; use parity_runtime::Runtime; use parking_lot::Mutex; use rlp; use rustc_hex::{FromHex, ToHex}; use sync::SyncState; -use types::transaction::{Transaction, Action}; -use types::log_entry::{LocalizedLogEntry, LogEntry}; -use types::receipt::{LocalizedReceipt, TransactionOutcome}; +use types::{ + ids::{BlockId, TransactionId}, + transaction::{Transaction, Action}, + log_entry::{LocalizedLogEntry, LogEntry}, + receipt::{LocalizedReceipt, RichReceipt, TransactionOutcome}, +}; use jsonrpc_core::IoHandler; use v1::{Eth, EthClient, EthClientOptions, EthFilter, EthFilterClient}; @@ -100,13 +103,13 @@ impl EthTester { EthTester { runtime, - client: client, - sync: sync, + client, + sync, accounts_provider: ap, - miner: miner, - snapshot: snapshot, - io: io, - hashrates: hashrates, + miner, + snapshot, + io, + hashrates, } } @@ -653,6 +656,43 @@ fn rpc_eth_call_latest() { assert_eq!(tester.io.handle_request_sync(request), Some(response.to_owned())); } +#[test] +fn rpc_eth_call_pending() { + let tester = EthTester::default(); + tester.client.set_execution_result(Ok(Executed { + exception: None, + gas: U256::zero(), + gas_used: U256::from(0xff30), + refunded: U256::from(0x5), + cumulative_gas_used: U256::zero(), + logs: vec![], + contracts_created: vec![], + output: vec![0x12, 0x34, 0xff], + trace: vec![], + vm_trace: None, + state_diff: None, + })); + + let request = r#"{ + "jsonrpc": "2.0", + "method": "eth_call", + "params": [{ + "from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155", + "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567", + "gas": "0x76c0", + "gasPrice": "0x9184e72a000", + "value": "0x9184e72a", + "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675" + }, + "pending"], + "id": 1 + }"#; + // Falls back to "Latest" and gives the same result. + let response = r#"{"jsonrpc":"2.0","result":"0x1234ff","id":1}"#; + + assert_eq!(tester.io.handle_request_sync(request), Some(response.to_owned())); +} + #[test] fn rpc_eth_call() { let tester = EthTester::default(); @@ -760,6 +800,43 @@ fn rpc_eth_estimate_gas() { assert_eq!(tester.io.handle_request_sync(request), Some(response.to_owned())); } +#[test] +fn rpc_eth_estimate_gas_pending() { + let tester = EthTester::default(); + tester.client.set_execution_result(Ok(Executed { + exception: None, + gas: U256::zero(), + gas_used: U256::from(0xff30), + refunded: U256::from(0x5), + cumulative_gas_used: U256::zero(), + logs: vec![], + contracts_created: vec![], + output: vec![0x12, 0x34, 0xff], + trace: vec![], + vm_trace: None, + state_diff: None, + })); + + let request = r#"{ + "jsonrpc": "2.0", + "method": "eth_estimateGas", + "params": [{ + "from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155", + "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567", + "gas": "0x76c0", + "gasPrice": "0x9184e72a000", + "value": "0x9184e72a", + "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675" + }, + "pending"], + "id": 1 + }"#; + // Falls back to "Latest" so the result is the same + let response = r#"{"jsonrpc":"2.0","result":"0x5208","id":1}"#; + + assert_eq!(tester.io.handle_request_sync(request), Some(response.to_owned())); +} + #[test] fn rpc_eth_estimate_gas_default_block() { let tester = EthTester::default(); @@ -887,7 +964,7 @@ fn rpc_eth_transaction_receipt() { "params": ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"], "id": 1 }"#; - let response = r#"{"jsonrpc":"2.0","result":{"blockHash":"0xed76641c68a1c641aee09a94b3b471f4dc0316efe5ac19cf488e2674cf8d05b5","blockNumber":"0x4510c","contractAddress":null,"cumulativeGasUsed":"0x20","from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","gasUsed":"0x10","logs":[{"address":"0x33990122638b9132ca29c723bdf037f1a891a70c","blockHash":"0xed76641c68a1c641aee09a94b3b471f4dc0316efe5ac19cf488e2674cf8d05b5","blockNumber":"0x4510c","data":"0x","logIndex":"0x1","removed":false,"topics":["0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc","0x4861736852656700000000000000000000000000000000000000000000000000"],"transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionIndex":"0x0","transactionLogIndex":"0x0","type":"mined"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","root":"0x0000000000000000000000000000000000000000000000000000000000000000","status":null,"to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionIndex":"0x0"},"id":1}"#; + let response = r#"{"jsonrpc":"2.0","result":{"blockHash":"0xed76641c68a1c641aee09a94b3b471f4dc0316efe5ac19cf488e2674cf8d05b5","blockNumber":"0x4510c","contractAddress":null,"cumulativeGasUsed":"0x20","from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","gasUsed":"0x10","logs":[{"address":"0x33990122638b9132ca29c723bdf037f1a891a70c","blockHash":"0xed76641c68a1c641aee09a94b3b471f4dc0316efe5ac19cf488e2674cf8d05b5","blockNumber":"0x4510c","data":"0x","logIndex":"0x1","removed":false,"topics":["0xa6697e974e6a320f454390be03f74955e8978f1a6971ea6730542e37b66179bc","0x4861736852656700000000000000000000000000000000000000000000000000"],"transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionIndex":"0x0","transactionLogIndex":"0x0","type":"mined"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","root":"0x0000000000000000000000000000000000000000000000000000000000000000","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionIndex":"0x0"},"id":1}"#; assert_eq!(tester.io.handle_request_sync(request), Some(response.to_owned())); } @@ -907,6 +984,34 @@ fn rpc_eth_transaction_receipt_null() { assert_eq!(tester.io.handle_request_sync(request), Some(response.to_owned())); } +#[test] +fn rpc_eth_pending_receipt() { + let pending = RichReceipt { + from: H160::from_str("b60e8dd61c5d32be8058bb8eb970870f07233155").unwrap(), + to: Some(H160::from_str("d46e8dd67c5d32be8058bb8eb970870f07244567").unwrap()), + transaction_hash: H256::from_str("b903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238").unwrap(), + transaction_index: 0, + cumulative_gas_used: U256::from(0x20), + gas_used: U256::from(0x10), + contract_address: None, + logs: Vec::new(), + log_bloom: Bloom::zero(), + outcome: TransactionOutcome::Unknown, + }; + let tester = EthTester::default(); + + tester.miner.pending_receipts.lock().push(pending); + + let request = r#"{ + "jsonrpc": "2.0", + "method": "eth_getTransactionReceipt", + "params": ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"], + "id": 1 + }"#; + let response = r#"{"jsonrpc":"2.0","result":{"blockHash":null,"blockNumber":null,"contractAddress":null,"cumulativeGasUsed":"0x20","from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","gasUsed":"0x10","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","transactionHash":"0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238","transactionIndex":"0x0"},"id":1}"#; + assert_eq!(tester.io.handle_request_sync(request), Some(response.to_owned())); +} + // These tests are incorrect: their output is undefined as long as eth_getCompilers is []. // Will ignore for now, but should probably be replaced by more substantial tests which check // the output of eth_getCompilers to determine whether to test. CI systems can then be preinstalled diff --git a/rpc/src/v1/tests/mocked/parity.rs b/rpc/src/v1/tests/mocked/parity.rs index 6608589f557..c0144a4bd06 100644 --- a/rpc/src/v1/tests/mocked/parity.rs +++ b/rpc/src/v1/tests/mocked/parity.rs @@ -506,7 +506,7 @@ fn rpc_parity_block_receipts() { "params": [], "id": 1 }"#; - let response = r#"{"jsonrpc":"2.0","result":[{"blockHash":"0x0000000000000000000000000000000000000000000000000000000000000003","blockNumber":"0x0","contractAddress":null,"cumulativeGasUsed":"0x5208","from":"0x0000000000000000000000000000000000000009","gasUsed":"0x5208","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001","root":null,"status":null,"to":null,"transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000001","transactionIndex":"0x0"}],"id":1}"#; + let response = r#"{"jsonrpc":"2.0","result":[{"blockHash":"0x0000000000000000000000000000000000000000000000000000000000000003","blockNumber":"0x0","contractAddress":null,"cumulativeGasUsed":"0x5208","from":"0x0000000000000000000000000000000000000009","gasUsed":"0x5208","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001","to":null,"transactionHash":"0x0000000000000000000000000000000000000000000000000000000000000001","transactionIndex":"0x0"}],"id":1}"#; assert_eq!(io.handle_request_sync(request), Some(response.to_owned())); } diff --git a/rpc/src/v1/traits/debug.rs b/rpc/src/v1/traits/debug.rs index 5d332d434ad..373717ea6da 100644 --- a/rpc/src/v1/traits/debug.rs +++ b/rpc/src/v1/traits/debug.rs @@ -22,7 +22,7 @@ use jsonrpc_derive::rpc; use v1::types::RichBlock; /// Debug RPC interface. -#[rpc] +#[rpc(server)] pub trait Debug { /// Returns recently seen bad blocks. #[rpc(name = "debug_getBadBlocks")] diff --git a/rpc/src/v1/traits/eth.rs b/rpc/src/v1/traits/eth.rs index 69a37ae5264..6add37b3f3d 100644 --- a/rpc/src/v1/traits/eth.rs +++ b/rpc/src/v1/traits/eth.rs @@ -23,7 +23,7 @@ use v1::types::{RichBlock, BlockNumber, Bytes, CallRequest, Filter, FilterChange use v1::types::{Log, Receipt, SyncStatus, Transaction, Work}; /// Eth rpc interface. -#[rpc] +#[rpc(server)] pub trait Eth { /// RPC Metadata type Metadata; @@ -68,87 +68,87 @@ pub trait Eth { /// Returns balance of the given account. #[rpc(name = "eth_getBalance")] - fn balance(&self, H160, Option) -> BoxFuture; + fn balance(&self, _: H160, _: Option) -> BoxFuture; /// Returns the account- and storage-values of the specified account including the Merkle-proof #[rpc(name = "eth_getProof")] - fn proof(&self, H160, Vec, Option) -> BoxFuture; + fn proof(&self, _: H160, _: Vec, _: Option) -> BoxFuture; /// Returns content of the storage at given address. #[rpc(name = "eth_getStorageAt")] - fn storage_at(&self, H160, U256, Option) -> BoxFuture; + fn storage_at(&self, _: H160, _: U256, _: Option) -> BoxFuture; /// Returns block with given hash. #[rpc(name = "eth_getBlockByHash")] - fn block_by_hash(&self, H256, bool) -> BoxFuture>; + fn block_by_hash(&self, _: H256, _: bool) -> BoxFuture>; /// Returns block with given number. #[rpc(name = "eth_getBlockByNumber")] - fn block_by_number(&self, BlockNumber, bool) -> BoxFuture>; + fn block_by_number(&self, _: BlockNumber, _: bool) -> BoxFuture>; /// Returns the number of transactions sent from given address at given time (block number). #[rpc(name = "eth_getTransactionCount")] - fn transaction_count(&self, H160, Option) -> BoxFuture; + fn transaction_count(&self, _: H160, _: Option) -> BoxFuture; /// Returns the number of transactions in a block with given hash. #[rpc(name = "eth_getBlockTransactionCountByHash")] - fn block_transaction_count_by_hash(&self, H256) -> BoxFuture>; + fn block_transaction_count_by_hash(&self, _: H256) -> BoxFuture>; /// Returns the number of transactions in a block with given block number. #[rpc(name = "eth_getBlockTransactionCountByNumber")] - fn block_transaction_count_by_number(&self, BlockNumber) -> BoxFuture>; + fn block_transaction_count_by_number(&self, _: BlockNumber) -> BoxFuture>; /// Returns the number of uncles in a block with given hash. #[rpc(name = "eth_getUncleCountByBlockHash")] - fn block_uncles_count_by_hash(&self, H256) -> BoxFuture>; + fn block_uncles_count_by_hash(&self, _: H256) -> BoxFuture>; /// Returns the number of uncles in a block with given block number. #[rpc(name = "eth_getUncleCountByBlockNumber")] - fn block_uncles_count_by_number(&self, BlockNumber) -> BoxFuture>; + fn block_uncles_count_by_number(&self, _: BlockNumber) -> BoxFuture>; /// Returns the code at given address at given time (block number). #[rpc(name = "eth_getCode")] - fn code_at(&self, H160, Option) -> BoxFuture; + fn code_at(&self, _: H160, _: Option) -> BoxFuture; /// Sends signed transaction, returning its hash. #[rpc(name = "eth_sendRawTransaction")] - fn send_raw_transaction(&self, Bytes) -> Result; + fn send_raw_transaction(&self, _: Bytes) -> Result; /// @alias of `eth_sendRawTransaction`. #[rpc(name = "eth_submitTransaction")] - fn submit_transaction(&self, Bytes) -> Result; + fn submit_transaction(&self, _: Bytes) -> Result; /// Call contract, returning the output data. #[rpc(name = "eth_call")] - fn call(&self, CallRequest, Option) -> BoxFuture; + fn call(&self, _: CallRequest, _: Option) -> BoxFuture; /// Estimate gas needed for execution of given contract. #[rpc(name = "eth_estimateGas")] - fn estimate_gas(&self, CallRequest, Option) -> BoxFuture; + fn estimate_gas(&self, _: CallRequest, _: Option) -> BoxFuture; /// Get transaction by its hash. #[rpc(name = "eth_getTransactionByHash")] - fn transaction_by_hash(&self, H256) -> BoxFuture>; + fn transaction_by_hash(&self, _: H256) -> BoxFuture>; /// Returns transaction at given block hash and index. #[rpc(name = "eth_getTransactionByBlockHashAndIndex")] - fn transaction_by_block_hash_and_index(&self, H256, Index) -> BoxFuture>; + fn transaction_by_block_hash_and_index(&self, _: H256, _: Index) -> BoxFuture>; /// Returns transaction by given block number and index. #[rpc(name = "eth_getTransactionByBlockNumberAndIndex")] - fn transaction_by_block_number_and_index(&self, BlockNumber, Index) -> BoxFuture>; + fn transaction_by_block_number_and_index(&self, _: BlockNumber, _: Index) -> BoxFuture>; /// Returns transaction receipt by transaction hash. #[rpc(name = "eth_getTransactionReceipt")] - fn transaction_receipt(&self, H256) -> BoxFuture>; + fn transaction_receipt(&self, _: H256) -> BoxFuture>; /// Returns an uncles at given block and index. #[rpc(name = "eth_getUncleByBlockHashAndIndex")] - fn uncle_by_block_hash_and_index(&self, H256, Index) -> BoxFuture>; + fn uncle_by_block_hash_and_index(&self, _: H256, _: Index) -> BoxFuture>; /// Returns an uncles at given block and index. #[rpc(name = "eth_getUncleByBlockNumberAndIndex")] - fn uncle_by_block_number_and_index(&self, BlockNumber, Index) -> BoxFuture>; + fn uncle_by_block_number_and_index(&self, _: BlockNumber, _: Index) -> BoxFuture>; /// Returns available compilers. /// @deprecated @@ -158,42 +158,42 @@ pub trait Eth { /// Compiles lll code. /// @deprecated #[rpc(name = "eth_compileLLL")] - fn compile_lll(&self, String) -> Result; + fn compile_lll(&self, _: String) -> Result; /// Compiles solidity. /// @deprecated #[rpc(name = "eth_compileSolidity")] - fn compile_solidity(&self, String) -> Result; + fn compile_solidity(&self, _: String) -> Result; /// Compiles serpent. /// @deprecated #[rpc(name = "eth_compileSerpent")] - fn compile_serpent(&self, String) -> Result; + fn compile_serpent(&self, _: String) -> Result; /// Returns logs matching given filter object. #[rpc(name = "eth_getLogs")] - fn logs(&self, Filter) -> BoxFuture>; + fn logs(&self, _: Filter) -> BoxFuture>; /// Returns the hash of the current block, the seedHash, and the boundary condition to be met. #[rpc(name = "eth_getWork")] - fn work(&self, Option) -> Result; + fn work(&self, _: Option) -> Result; /// Used for submitting a proof-of-work solution. #[rpc(name = "eth_submitWork")] - fn submit_work(&self, H64, H256, H256) -> Result; + fn submit_work(&self, _: H64, _: H256, _: H256) -> Result; /// Used for submitting mining hashrate. #[rpc(name = "eth_submitHashrate")] - fn submit_hashrate(&self, U256, H256) -> Result; + fn submit_hashrate(&self, _: U256, _: H256) -> Result; } /// Eth filters rpc api (polling). // TODO: do filters api properly -#[rpc] +#[rpc(server)] pub trait EthFilter { /// Returns id of new filter. #[rpc(name = "eth_newFilter")] - fn new_filter(&self, Filter) -> Result; + fn new_filter(&self, _: Filter) -> Result; /// Returns id of new block filter. #[rpc(name = "eth_newBlockFilter")] @@ -205,13 +205,13 @@ pub trait EthFilter { /// Returns filter changes since last poll. #[rpc(name = "eth_getFilterChanges")] - fn filter_changes(&self, Index) -> BoxFuture; + fn filter_changes(&self, _: Index) -> BoxFuture; /// Returns all logs matching given filter (in a range 'from' - 'to'). #[rpc(name = "eth_getFilterLogs")] - fn filter_logs(&self, Index) -> BoxFuture>; + fn filter_logs(&self, _: Index) -> BoxFuture>; /// Uninstalls filter. #[rpc(name = "eth_uninstallFilter")] - fn uninstall_filter(&self, Index) -> Result; + fn uninstall_filter(&self, _: Index) -> Result; } diff --git a/rpc/src/v1/traits/eth_pubsub.rs b/rpc/src/v1/traits/eth_pubsub.rs index 06287813921..e58cebebb8d 100644 --- a/rpc/src/v1/traits/eth_pubsub.rs +++ b/rpc/src/v1/traits/eth_pubsub.rs @@ -23,16 +23,16 @@ use jsonrpc_pubsub::{typed, SubscriptionId}; use v1::types::pubsub; /// Eth PUB-SUB rpc interface. -#[rpc] +#[rpc(server)] pub trait EthPubSub { /// RPC Metadata type Metadata; /// Subscribe to Eth subscription. #[pubsub(subscription = "eth_subscription", subscribe, name = "eth_subscribe")] - fn subscribe(&self, Self::Metadata, typed::Subscriber, pubsub::Kind, Option); + fn subscribe(&self, _: Self::Metadata, _: typed::Subscriber, _: pubsub::Kind, _: Option); /// Unsubscribe from existing Eth subscription. #[pubsub(subscription = "eth_subscription", unsubscribe, name = "eth_unsubscribe")] - fn unsubscribe(&self, Option, SubscriptionId) -> Result; + fn unsubscribe(&self, _: Option, _: SubscriptionId) -> Result; } diff --git a/rpc/src/v1/traits/eth_signing.rs b/rpc/src/v1/traits/eth_signing.rs index 72e13ddabe6..5dc5c37d920 100644 --- a/rpc/src/v1/traits/eth_signing.rs +++ b/rpc/src/v1/traits/eth_signing.rs @@ -23,24 +23,24 @@ use ethereum_types::{H160, H256, H520}; use v1::types::{Bytes, TransactionRequest, RichRawTransaction}; /// Signing methods implementation relying on unlocked accounts. -#[rpc] +#[rpc(server)] pub trait EthSigning { /// RPC Metadata type Metadata; /// Signs the hash of data with given address signature. #[rpc(meta, name = "eth_sign")] - fn sign(&self, Self::Metadata, H160, Bytes) -> BoxFuture; + fn sign(&self, _: Self::Metadata, _: H160, _: Bytes) -> BoxFuture; /// Sends transaction; will block waiting for signer to return the /// transaction hash. /// If Signer is disable it will require the account to be unlocked. #[rpc(meta, name = "eth_sendTransaction")] - fn send_transaction(&self, Self::Metadata, TransactionRequest) -> BoxFuture; + fn send_transaction(&self, _: Self::Metadata, _: TransactionRequest) -> BoxFuture; /// Signs transactions without dispatching it to the network. /// Returns signed transaction RLP representation and the transaction itself. /// It can be later submitted using `eth_sendRawTransaction/eth_submitTransaction`. #[rpc(meta, name = "eth_signTransaction")] - fn sign_transaction(&self, Self::Metadata, TransactionRequest) -> BoxFuture; + fn sign_transaction(&self, _: Self::Metadata, _: TransactionRequest) -> BoxFuture; } diff --git a/rpc/src/v1/traits/net.rs b/rpc/src/v1/traits/net.rs index a16729294d7..68cd2356670 100644 --- a/rpc/src/v1/traits/net.rs +++ b/rpc/src/v1/traits/net.rs @@ -19,7 +19,7 @@ use jsonrpc_core::Result; use jsonrpc_derive::rpc; /// Net rpc interface. -#[rpc] +#[rpc(server)] pub trait Net { /// Returns protocol version. #[rpc(name = "net_version")] diff --git a/rpc/src/v1/traits/parity.rs b/rpc/src/v1/traits/parity.rs index e3821355eee..72dbb73d47e 100644 --- a/rpc/src/v1/traits/parity.rs +++ b/rpc/src/v1/traits/parity.rs @@ -31,7 +31,7 @@ use v1::types::{ }; /// Parity-specific rpc interface. -#[rpc] +#[rpc(server)] pub trait Parity { /// RPC Metadata type Metadata; @@ -103,7 +103,7 @@ pub trait Parity { /// Returns whatever address would be derived from the given phrase if it were to seed a brainwallet. #[rpc(name = "parity_phraseToAddress")] - fn phrase_to_address(&self, String) -> Result; + fn phrase_to_address(&self, _: String) -> Result; /// Returns the value of the registrar for this network. #[rpc(name = "parity_registryAddress")] @@ -111,21 +111,21 @@ pub trait Parity { /// Returns all addresses if Fat DB is enabled (`--fat-db`), or null if not. #[rpc(name = "parity_listAccounts")] - fn list_accounts(&self, u64, Option, Option) -> Result>>; + fn list_accounts(&self, _: u64, _: Option, _: Option) -> Result>>; /// Returns all storage keys of the given address (first parameter) if Fat DB is enabled (`--fat-db`), /// or null if not. #[rpc(name = "parity_listStorageKeys")] - fn list_storage_keys(&self, H160, u64, Option, Option) -> Result>>; + fn list_storage_keys(&self, _: H160, _: u64, _: Option, _: Option) -> Result>>; /// Encrypt some data with a public key under ECIES. /// First parameter is the 512-byte destination public key, second is the message. #[rpc(name = "parity_encryptMessage")] - fn encrypt_message(&self, H512, Bytes) -> Result; + fn encrypt_message(&self, _: H512, _: Bytes) -> Result; /// Returns all pending transactions from transaction queue. #[rpc(name = "parity_pendingTransactions")] - fn pending_transactions(&self, Option) -> Result>; + fn pending_transactions(&self, _: Option) -> Result>; /// Returns all transactions from transaction queue. /// @@ -155,7 +155,7 @@ pub trait Parity { /// Returns next nonce for particular sender. Should include all transactions in the queue. #[rpc(name = "parity_nextNonce")] - fn next_nonce(&self, H160) -> BoxFuture; + fn next_nonce(&self, _: H160) -> BoxFuture; /// Get the mode. Returns one of: "active", "passive", "dark", "offline". #[rpc(name = "parity_mode")] @@ -192,26 +192,26 @@ pub trait Parity { /// Get block header. /// Same as `eth_getBlockByNumber` but without uncles and transactions. #[rpc(name = "parity_getBlockHeaderByNumber")] - fn block_header(&self, Option) -> BoxFuture; + fn block_header(&self, _: Option) -> BoxFuture; /// Get block receipts. /// Allows you to fetch receipts from the entire block at once. /// If no parameter is provided defaults to `latest`. #[rpc(name = "parity_getBlockReceipts")] - fn block_receipts(&self, Option) -> BoxFuture>; + fn block_receipts(&self, _: Option) -> BoxFuture>; /// Get IPFS CIDv0 given protobuf encoded bytes. #[rpc(name = "parity_cidV0")] - fn ipfs_cid(&self, Bytes) -> Result; + fn ipfs_cid(&self, _: Bytes) -> Result; /// Call contract, returning the output data. #[rpc(name = "parity_call")] - fn call(&self, Vec, Option) -> Result>; + fn call(&self, _: Vec, _: Option) -> Result>; /// Used for submitting a proof-of-work solution (similar to `eth_submitWork`, /// but returns block hash on success, and returns an explicit error message on failure). #[rpc(name = "parity_submitWorkDetail")] - fn submit_work_detail(&self, H64, H256, H256) -> Result; + fn submit_work_detail(&self, _: H64, _: H256, _: H256) -> Result; /// Returns the status of the node. Used as the health endpoint. /// @@ -226,10 +226,10 @@ pub trait Parity { /// Extracts Address and public key from signature using the r, s and v params. Equivalent to Solidity erecover /// as well as checks the signature for chain replay protection #[rpc(name = "parity_verifySignature")] - fn verify_signature(&self, bool, Bytes, H256, H256, U64) -> Result; + fn verify_signature(&self, _: bool, _: Bytes, _: H256, _: H256, _: U64) -> Result; /// Returns logs matching given filter object. /// Is allowed to skip filling transaction hash for faster query. #[rpc(name = "parity_getLogsNoTransactionHash")] - fn logs_no_tx_hash(&self, Filter) -> BoxFuture>; + fn logs_no_tx_hash(&self, _: Filter) -> BoxFuture>; } diff --git a/rpc/src/v1/traits/parity_accounts.rs b/rpc/src/v1/traits/parity_accounts.rs index eaffac78850..4293df6bd38 100644 --- a/rpc/src/v1/traits/parity_accounts.rs +++ b/rpc/src/v1/traits/parity_accounts.rs @@ -26,7 +26,7 @@ use v1::types::{DeriveHash, DeriveHierarchical, ExtAccountInfo}; use v1::types::{AccountInfo, HwAccountInfo}; /// Parity-specific read-only accounts rpc interface. -#[rpc] +#[rpc(server)] pub trait ParityAccountsInfo { /// Returns accounts information. #[rpc(name = "parity_accountsInfo")] @@ -46,7 +46,7 @@ pub trait ParityAccountsInfo { } /// Personal Parity rpc interface. -#[rpc] +#[rpc(server)] pub trait ParityAccounts { /// Returns accounts information. #[rpc(name = "parity_allAccountsInfo")] @@ -55,49 +55,49 @@ pub trait ParityAccounts { /// Creates new account from the given phrase using standard brainwallet mechanism. /// Second parameter is password for the new account. #[rpc(name = "parity_newAccountFromPhrase")] - fn new_account_from_phrase(&self, String, Password) -> Result; + fn new_account_from_phrase(&self, _: String, _: Password) -> Result; /// Creates new account from the given JSON wallet. /// Second parameter is password for the wallet and the new account. #[rpc(name = "parity_newAccountFromWallet")] - fn new_account_from_wallet(&self, String, Password) -> Result; + fn new_account_from_wallet(&self, _: String, _: Password) -> Result; /// Creates new account from the given raw secret. /// Second parameter is password for the new account. #[rpc(name = "parity_newAccountFromSecret")] - fn new_account_from_secret(&self, H256, Password) -> Result; + fn new_account_from_secret(&self, _: H256, _: Password) -> Result; /// Returns true if given `password` would unlock given `account`. /// Arguments: `account`, `password`. #[rpc(name = "parity_testPassword")] - fn test_password(&self, H160, Password) -> Result; + fn test_password(&self, _: H160, _: Password) -> Result; /// Changes an account's password. /// Arguments: `account`, `password`, `new_password`. #[rpc(name = "parity_changePassword")] - fn change_password(&self, H160, Password, Password) -> Result; + fn change_password(&self, _: H160, _: Password, _: Password) -> Result; /// Permanently deletes an account. /// Arguments: `account`, `password`. #[rpc(name = "parity_killAccount")] - fn kill_account(&self, H160, Password) -> Result; + fn kill_account(&self, _: H160, _: Password) -> Result; /// Permanently deletes an address from the addressbook /// Arguments: `address` #[rpc(name = "parity_removeAddress")] - fn remove_address(&self, H160) -> Result; + fn remove_address(&self, _: H160) -> Result; /// Set an account's name. #[rpc(name = "parity_setAccountName")] - fn set_account_name(&self, H160, String) -> Result; + fn set_account_name(&self, _: H160, _: String) -> Result; /// Set an account's metadata string. #[rpc(name = "parity_setAccountMeta")] - fn set_account_meta(&self, H160, String) -> Result; + fn set_account_meta(&self, _: H160, _: String) -> Result; /// Imports a number of Geth accounts, with the list provided as the argument. #[rpc(name = "parity_importGethAccounts")] - fn import_geth_accounts(&self, Vec) -> Result>; + fn import_geth_accounts(&self, _: Vec) -> Result>; /// Returns the accounts available for importing from Geth. #[rpc(name = "parity_listGethAccounts")] @@ -105,15 +105,15 @@ pub trait ParityAccounts { /// Create new vault. #[rpc(name = "parity_newVault")] - fn create_vault(&self, String, Password) -> Result; + fn create_vault(&self, _: String, _: Password) -> Result; /// Open existing vault. #[rpc(name = "parity_openVault")] - fn open_vault(&self, String, Password) -> Result; + fn open_vault(&self, _: String, _: Password) -> Result; /// Close previously opened vault. #[rpc(name = "parity_closeVault")] - fn close_vault(&self, String) -> Result; + fn close_vault(&self, _: String) -> Result; /// List all vaults. #[rpc(name = "parity_listVaults")] @@ -125,40 +125,40 @@ pub trait ParityAccounts { /// Change vault password. #[rpc(name = "parity_changeVaultPassword")] - fn change_vault_password(&self, String, Password) -> Result; + fn change_vault_password(&self, _: String, _: Password) -> Result; /// Change vault of the given address. #[rpc(name = "parity_changeVault")] - fn change_vault(&self, H160, String) -> Result; + fn change_vault(&self, _: H160, _: String) -> Result; /// Get vault metadata string. #[rpc(name = "parity_getVaultMeta")] - fn get_vault_meta(&self, String) -> Result; + fn get_vault_meta(&self, _: String) -> Result; /// Set vault metadata string. #[rpc(name = "parity_setVaultMeta")] - fn set_vault_meta(&self, String, String) -> Result; + fn set_vault_meta(&self, _: String, _: String) -> Result; /// Derive new address from given account address using specific hash. /// Resulting address can be either saved as a new account (with the same password). #[rpc(name = "parity_deriveAddressHash")] - fn derive_key_hash(&self, H160, Password, DeriveHash, bool) -> Result; + fn derive_key_hash(&self, _: H160, _: Password, _: DeriveHash, _: bool) -> Result; /// Derive new address from given account address using /// hierarchical derivation (sequence of 32-bit integer indices). /// Resulting address can be either saved as a new account (with the same password). #[rpc(name = "parity_deriveAddressIndex")] - fn derive_key_index(&self, H160, Password, DeriveHierarchical, bool) -> Result; + fn derive_key_index(&self, _: H160, _: Password, _: DeriveHierarchical, _: bool) -> Result; /// Exports an account with given address if provided password matches. #[rpc(name = "parity_exportAccount")] - fn export_account(&self, H160, Password) -> Result; + fn export_account(&self, _: H160, _: Password) -> Result; /// Sign raw hash with the key corresponding to address and password. #[rpc(name = "parity_signMessage")] - fn sign_message(&self, H160, Password, H256) -> Result; + fn sign_message(&self, _: H160, _: Password, _: H256) -> Result; /// Send a PinMatrixAck to a hardware wallet, unlocking it #[rpc(name = "parity_hardwarePinMatrixAck")] - fn hardware_pin_matrix_ack(&self, String, String) -> Result; + fn hardware_pin_matrix_ack(&self, _: String, _: String) -> Result; } diff --git a/rpc/src/v1/traits/parity_set.rs b/rpc/src/v1/traits/parity_set.rs index c7c23387900..c9b25f03d12 100644 --- a/rpc/src/v1/traits/parity_set.rs +++ b/rpc/src/v1/traits/parity_set.rs @@ -23,55 +23,55 @@ use jsonrpc_derive::rpc; use v1::types::{Bytes, ReleaseInfo, Transaction}; /// Parity-specific rpc interface for operations altering the account-related settings. -#[rpc] +#[rpc(server)] pub trait ParitySetAccounts { /// Sets account for signing consensus messages. #[rpc(name = "parity_setEngineSigner")] - fn set_engine_signer(&self, H160, String) -> Result; + fn set_engine_signer(&self, _: H160, _: String) -> Result; } /// Parity-specific rpc interface for operations altering the settings. -#[rpc] +#[rpc(server)] pub trait ParitySet { /// Sets new minimal gas price for mined blocks. #[rpc(name = "parity_setMinGasPrice")] - fn set_min_gas_price(&self, U256) -> Result; + fn set_min_gas_price(&self, _: U256) -> Result; /// Sets new gas floor target for mined blocks. #[rpc(name = "parity_setGasFloorTarget")] - fn set_gas_floor_target(&self, U256) -> Result; + fn set_gas_floor_target(&self, _: U256) -> Result; /// Sets new gas ceiling target for mined blocks. #[rpc(name = "parity_setGasCeilTarget")] - fn set_gas_ceil_target(&self, U256) -> Result; + fn set_gas_ceil_target(&self, _: U256) -> Result; /// Sets new extra data for mined blocks. #[rpc(name = "parity_setExtraData")] - fn set_extra_data(&self, Bytes) -> Result; + fn set_extra_data(&self, _: Bytes) -> Result; /// Sets new author for mined block. #[rpc(name = "parity_setAuthor")] - fn set_author(&self, H160) -> Result; + fn set_author(&self, _: H160) -> Result; /// Sets the secret of engine signer account. #[rpc(name = "parity_setEngineSignerSecret")] - fn set_engine_signer_secret(&self, H256) -> Result; + fn set_engine_signer_secret(&self, _: H256) -> Result; /// Sets the limits for transaction queue. #[rpc(name = "parity_setTransactionsLimit")] - fn set_transactions_limit(&self, usize) -> Result; + fn set_transactions_limit(&self, _: usize) -> Result; /// Sets the maximum amount of gas a single transaction may consume. #[rpc(name = "parity_setMaxTransactionGas")] - fn set_tx_gas_limit(&self, U256) -> Result; + fn set_tx_gas_limit(&self, _: U256) -> Result; /// Add a reserved peer. #[rpc(name = "parity_addReservedPeer")] - fn add_reserved_peer(&self, String) -> Result; + fn add_reserved_peer(&self, _: String) -> Result; /// Remove a reserved peer. #[rpc(name = "parity_removeReservedPeer")] - fn remove_reserved_peer(&self, String) -> Result; + fn remove_reserved_peer(&self, _: String) -> Result; /// Drop all non-reserved peers. #[rpc(name = "parity_dropNonReservedPeers")] @@ -95,15 +95,15 @@ pub trait ParitySet { /// Set the mode. Argument must be one of: "active", "passive", "dark", "offline". #[rpc(name = "parity_setMode")] - fn set_mode(&self, String) -> Result; + fn set_mode(&self, _: String) -> Result; /// Set the network spec. Argument must be one of pre-configured chains or a filename. #[rpc(name = "parity_setChain")] - fn set_spec_name(&self, String) -> Result; + fn set_spec_name(&self, _: String) -> Result; /// Hash a file content under given URL. #[rpc(name = "parity_hashContent")] - fn hash_content(&self, String) -> BoxFuture; + fn hash_content(&self, _: String) -> BoxFuture; /// Is there a release ready for install? #[rpc(name = "parity_upgradeReady")] @@ -120,5 +120,5 @@ pub trait ParitySet { /// or excessive gas limit that are not accepted by other peers whp. /// Returns `true` when transaction was removed, `false` if it was not found. #[rpc(name = "parity_removeTransaction")] - fn remove_transaction(&self, H256) -> Result>; + fn remove_transaction(&self, _: H256) -> Result>; } diff --git a/rpc/src/v1/traits/parity_signing.rs b/rpc/src/v1/traits/parity_signing.rs index acd9e8cd686..941ff08ba6b 100644 --- a/rpc/src/v1/traits/parity_signing.rs +++ b/rpc/src/v1/traits/parity_signing.rs @@ -22,7 +22,7 @@ use ethereum_types::{H160, U256}; use v1::types::{Bytes, ConfirmationResponse, TransactionRequest, Either}; /// Signing methods implementation. -#[rpc] +#[rpc(server)] pub trait ParitySigning { /// RPC Metadata type Metadata; @@ -30,25 +30,25 @@ pub trait ParitySigning { /// Given partial transaction request produces transaction with all fields filled in. /// Such transaction can be then signed externally. #[rpc(meta, name = "parity_composeTransaction")] - fn compose_transaction(&self, Self::Metadata, TransactionRequest) -> BoxFuture; + fn compose_transaction(&self, _: Self::Metadata, _: TransactionRequest) -> BoxFuture; /// Posts sign request asynchronously. /// Will return a confirmation ID for later use with check_transaction. #[rpc(meta, name = "parity_postSign")] - fn post_sign(&self, Self::Metadata, H160, Bytes) -> BoxFuture>; + fn post_sign(&self, _: Self::Metadata, _: H160, _: Bytes) -> BoxFuture>; /// Posts transaction asynchronously. /// Will return a transaction ID for later use with check_transaction. #[rpc(meta, name = "parity_postTransaction")] - fn post_transaction(&self, Self::Metadata, TransactionRequest) -> BoxFuture>; + fn post_transaction(&self, _: Self::Metadata, _: TransactionRequest) -> BoxFuture>; /// Checks the progress of a previously posted request (transaction/sign). /// Should be given a valid send_transaction ID. #[rpc(name = "parity_checkRequest")] - fn check_request(&self, U256) -> Result>; + fn check_request(&self, _: U256) -> Result>; /// Decrypt some ECIES-encrypted message. /// First parameter is the address with which it is encrypted, second is the ciphertext. #[rpc(meta, name = "parity_decryptMessage")] - fn decrypt_message(&self, Self::Metadata, H160, Bytes) -> BoxFuture; + fn decrypt_message(&self, _: Self::Metadata, _: H160, _: Bytes) -> BoxFuture; } diff --git a/rpc/src/v1/traits/personal.rs b/rpc/src/v1/traits/personal.rs index e3632731fa5..3e06c02cb17 100644 --- a/rpc/src/v1/traits/personal.rs +++ b/rpc/src/v1/traits/personal.rs @@ -23,7 +23,7 @@ use jsonrpc_derive::rpc; use v1::types::{Bytes, TransactionRequest, RichRawTransaction as RpcRichRawTransaction, EIP191Version}; /// Personal rpc interface. Safe (read-only) functions. -#[rpc] +#[rpc(server)] pub trait Personal { /// RPC Metadata type Metadata; @@ -35,40 +35,40 @@ pub trait Personal { /// Creates new account (it becomes new current unlocked account) /// Param is the password for the account. #[rpc(name = "personal_newAccount")] - fn new_account(&self, String) -> Result; + fn new_account(&self, _: String) -> Result; /// Unlocks specified account for use (can only be one unlocked account at one moment) #[rpc(name = "personal_unlockAccount")] - fn unlock_account(&self, H160, String, Option) -> Result; + fn unlock_account(&self, _: H160, _: String, _: Option) -> Result; /// Signs the hash of data with given account signature using the given password to unlock the account during /// the request. #[rpc(name = "personal_sign")] - fn sign(&self, Bytes, H160, String) -> BoxFuture; + fn sign(&self, _: Bytes, _: H160, _: String) -> BoxFuture; /// Produces an EIP-712 compliant signature with given account using the given password to unlock the /// account during the request. #[rpc(name = "personal_signTypedData")] - fn sign_typed_data(&self, EIP712, H160, String) -> BoxFuture; + fn sign_typed_data(&self, _: EIP712, _: H160, _: String) -> BoxFuture; /// Signs an arbitrary message based on the version specified #[rpc(name = "personal_sign191")] - fn sign_191(&self, EIP191Version, Value, H160, String) -> BoxFuture; + fn sign_191(&self, _: EIP191Version, _: Value, _: H160, _: String) -> BoxFuture; /// Returns the account associated with the private key that was used to calculate the signature in /// `personal_sign`. #[rpc(name = "personal_ecRecover")] - fn ec_recover(&self, Bytes, H520) -> BoxFuture; + fn ec_recover(&self, _: Bytes, _: H520) -> BoxFuture; /// Signs transaction. The account is not unlocked in such case. #[rpc(meta, name = "personal_signTransaction")] - fn sign_transaction(&self, Self::Metadata, TransactionRequest, String) -> BoxFuture; + fn sign_transaction(&self, _: Self::Metadata, _: TransactionRequest, _: String) -> BoxFuture; /// Sends transaction and signs it in single call. The account is not unlocked in such case. #[rpc(meta, name = "personal_sendTransaction")] - fn send_transaction(&self, Self::Metadata, TransactionRequest, String) -> BoxFuture; + fn send_transaction(&self, _: Self::Metadata, _: TransactionRequest, _: String) -> BoxFuture; /// @deprecated alias for `personal_sendTransaction`. #[rpc(meta, name = "personal_signAndSendTransaction")] - fn sign_and_send_transaction(&self, Self::Metadata, TransactionRequest, String) -> BoxFuture; + fn sign_and_send_transaction(&self, _: Self::Metadata, _: TransactionRequest, _: String) -> BoxFuture; } diff --git a/rpc/src/v1/traits/private.rs b/rpc/src/v1/traits/private.rs index 732e3914bda..0dedbf3743e 100644 --- a/rpc/src/v1/traits/private.rs +++ b/rpc/src/v1/traits/private.rs @@ -24,24 +24,24 @@ use v1::types::{Bytes, PrivateTransactionReceipt, BlockNumber, PrivateTransactionReceiptAndTransaction, CallRequest}; /// Private transaction management RPC interface. -#[rpc] +#[rpc(server)] pub trait Private { /// RPC Metadata type Metadata; /// Sends private transaction; Transaction will be added to the validation queue and sent out when ready. #[rpc(name = "private_sendTransaction")] - fn send_transaction(&self, Bytes) -> Result; + fn send_transaction(&self, _: Bytes) -> Result; /// Creates a transaction for contract's deployment from origin (signed transaction) #[rpc(name = "private_composeDeploymentTransaction")] - fn compose_deployment_transaction(&self, BlockNumber, Bytes, Vec, U256) -> Result; + fn compose_deployment_transaction(&self, _: BlockNumber, _: Bytes, _: Vec, _: U256) -> Result; /// Make a call to the private contract #[rpc(name = "private_call")] - fn private_call(&self, BlockNumber, CallRequest) -> Result; + fn private_call(&self, _: BlockNumber, _: CallRequest) -> Result; /// Retrieve the id of the key associated with the contract #[rpc(name = "private_contractKey")] - fn private_contract_key(&self, H160) -> Result; + fn private_contract_key(&self, _: H160) -> Result; } diff --git a/rpc/src/v1/traits/pubsub.rs b/rpc/src/v1/traits/pubsub.rs index c91b335613f..6cb97ec3a86 100644 --- a/rpc/src/v1/traits/pubsub.rs +++ b/rpc/src/v1/traits/pubsub.rs @@ -21,16 +21,16 @@ use jsonrpc_pubsub::{typed::Subscriber, SubscriptionId}; use jsonrpc_derive::rpc; /// Parity-specific PUB-SUB rpc interface. -#[rpc] +#[rpc(server)] pub trait PubSub { /// Pub/Sub Metadata type Metadata; /// Subscribe to changes of any RPC method in Parity. #[pubsub(subscription = "parity_subscription", subscribe, name = "parity_subscribe")] - fn parity_subscribe(&self, Self::Metadata, Subscriber, String, Option); + fn parity_subscribe(&self, _: Self::Metadata, _: Subscriber, _: String, _: Option); /// Unsubscribe from existing Parity subscription. #[pubsub(subscription = "parity_subscription", unsubscribe, name = "parity_unsubscribe")] - fn parity_unsubscribe(&self, Option, SubscriptionId) -> Result; + fn parity_unsubscribe(&self, _: Option, _: SubscriptionId) -> Result; } diff --git a/rpc/src/v1/traits/rpc.rs b/rpc/src/v1/traits/rpc.rs index 9600630fecd..b1faa3b118a 100644 --- a/rpc/src/v1/traits/rpc.rs +++ b/rpc/src/v1/traits/rpc.rs @@ -22,7 +22,7 @@ use jsonrpc_core::Result; use jsonrpc_derive::rpc; /// RPC Interface. -#[rpc] +#[rpc(server)] pub trait Rpc { /// Returns supported modules for Geth 1.3.6 /// @ignore diff --git a/rpc/src/v1/traits/secretstore.rs b/rpc/src/v1/traits/secretstore.rs index 6883753b4fa..2e355dd5641 100644 --- a/rpc/src/v1/traits/secretstore.rs +++ b/rpc/src/v1/traits/secretstore.rs @@ -25,37 +25,37 @@ use ethkey::Password; use v1::types::{Bytes, EncryptedDocumentKey}; /// Parity-specific rpc interface. -#[rpc] +#[rpc(server)] pub trait SecretStore { /// Generate document key to store in secret store. /// Arguments: `account`, `password`, `server_key_public`. #[rpc(name = "secretstore_generateDocumentKey")] - fn generate_document_key(&self, H160, Password, H512) -> Result; + fn generate_document_key(&self, _: H160, _: Password, _: H512) -> Result; /// Encrypt data with key, received from secret store. /// Arguments: `account`, `password`, `key`, `data`. #[rpc(name = "secretstore_encrypt")] - fn encrypt(&self, H160, Password, Bytes, Bytes) -> Result; + fn encrypt(&self, _: H160, _: Password, _: Bytes, _: Bytes) -> Result; /// Decrypt data with key, received from secret store. /// Arguments: `account`, `password`, `key`, `data`. #[rpc(name = "secretstore_decrypt")] - fn decrypt(&self, H160, Password, Bytes, Bytes) -> Result; + fn decrypt(&self, _: H160, _: Password, _: Bytes, _: Bytes) -> Result; /// Decrypt data with shadow key, received from secret store. /// Arguments: `account`, `password`, `decrypted_secret`, `common_point`, `decrypt_shadows`, `data`. #[rpc(name = "secretstore_shadowDecrypt")] - fn shadow_decrypt(&self, H160, Password, H512, H512, Vec, Bytes) -> Result; + fn shadow_decrypt(&self, _: H160, _: Password, _: H512, _: H512, _: Vec, _: Bytes) -> Result; /// Calculates the hash (keccak256) of servers set for using in ServersSetChange session. /// Returned hash must be signed later by using `secretstore_signRawHash` method. /// Arguments: `servers_set`. #[rpc(name = "secretstore_serversSetHash")] - fn servers_set_hash(&self, BTreeSet) -> Result; + fn servers_set_hash(&self, _: BTreeSet) -> Result; /// Generate recoverable ECDSA signature of raw hash. /// Passed hash is treated as an input to the `sign` function (no prefixes added, no hash function is applied). /// Arguments: `account`, `password`, `raw_hash`. #[rpc(name = "secretstore_signRawHash")] - fn sign_raw_hash(&self, H160, Password, H256) -> Result; + fn sign_raw_hash(&self, _: H160, _: Password, _: H256) -> Result; } diff --git a/rpc/src/v1/traits/signer.rs b/rpc/src/v1/traits/signer.rs index b5653eba635..ba84d850a0c 100644 --- a/rpc/src/v1/traits/signer.rs +++ b/rpc/src/v1/traits/signer.rs @@ -24,7 +24,7 @@ use jsonrpc_derive::rpc; use v1::types::{Bytes, TransactionModification, ConfirmationRequest, ConfirmationResponse, ConfirmationResponseWithToken}; /// Signer extension for confirmations rpc interface. -#[rpc] +#[rpc(server)] pub trait Signer { /// RPC Metadata type Metadata; @@ -35,19 +35,19 @@ pub trait Signer { /// Confirm specific request. #[rpc(name = "signer_confirmRequest")] - fn confirm_request(&self, U256, TransactionModification, String) -> BoxFuture; + fn confirm_request(&self, _: U256, _: TransactionModification, _: String) -> BoxFuture; /// Confirm specific request with token. #[rpc(name = "signer_confirmRequestWithToken")] - fn confirm_request_with_token(&self, U256, TransactionModification, String) -> BoxFuture; + fn confirm_request_with_token(&self, _: U256, _: TransactionModification, _: String) -> BoxFuture; /// Confirm specific request with already signed data. #[rpc(name = "signer_confirmRequestRaw")] - fn confirm_request_raw(&self, U256, Bytes) -> Result; + fn confirm_request_raw(&self, _: U256, _: Bytes) -> Result; /// Reject the confirmation request. #[rpc(name = "signer_rejectRequest")] - fn reject_request(&self, U256) -> Result; + fn reject_request(&self, _: U256) -> Result; /// Generates new authorization token. #[rpc(name = "signer_generateAuthorizationToken")] @@ -55,9 +55,9 @@ pub trait Signer { /// Subscribe to new pending requests on signer interface. #[pubsub(subscription = "signer_pending", subscribe, name = "signer_subscribePending")] - fn subscribe_pending(&self, Self::Metadata, Subscriber>); + fn subscribe_pending(&self, _: Self::Metadata, _: Subscriber>); /// Unsubscribe from pending requests subscription. #[pubsub(subscription = "signer_pending", unsubscribe, name = "signer_unsubscribePending")] - fn unsubscribe_pending(&self, Option, SubscriptionId) -> Result; + fn unsubscribe_pending(&self, _: Option, _: SubscriptionId) -> Result; } diff --git a/rpc/src/v1/traits/traces.rs b/rpc/src/v1/traits/traces.rs index 5308ed4c6c3..b33f94b21dd 100644 --- a/rpc/src/v1/traits/traces.rs +++ b/rpc/src/v1/traits/traces.rs @@ -23,44 +23,44 @@ use v1::types::{TraceFilter, LocalizedTrace, BlockNumber, Index, CallRequest, By TraceResultsWithTransactionHash, TraceOptions}; /// Traces specific rpc interface. -#[rpc] +#[rpc(server)] pub trait Traces { /// RPC Metadata type Metadata; /// Returns traces matching given filter. #[rpc(name = "trace_filter")] - fn filter(&self, TraceFilter) -> Result>>; + fn filter(&self, _: TraceFilter) -> Result>>; /// Returns transaction trace at given index. #[rpc(name = "trace_get")] - fn trace(&self, H256, Vec) -> Result>; + fn trace(&self, _: H256, _: Vec) -> Result>; /// Returns all traces of given transaction. #[rpc(name = "trace_transaction")] - fn transaction_traces(&self, H256) -> Result>>; + fn transaction_traces(&self, _: H256) -> Result>>; /// Returns all traces produced at given block. #[rpc(name = "trace_block")] - fn block_traces(&self, BlockNumber) -> Result>>; + fn block_traces(&self, _: BlockNumber) -> Result>>; /// Executes the given call and returns a number of possible traces for it. #[rpc(name = "trace_call")] - fn call(&self, CallRequest, TraceOptions, Option) -> Result; + fn call(&self, _: CallRequest, _: TraceOptions, _: Option) -> Result; /// Executes all given calls and returns a number of possible traces for each of it. #[rpc(name = "trace_callMany")] - fn call_many(&self, Vec<(CallRequest, TraceOptions)>, Option) -> Result>; + fn call_many(&self, _: Vec<(CallRequest, TraceOptions)>, _: Option) -> Result>; /// Executes the given raw transaction and returns a number of possible traces for it. #[rpc(name = "trace_rawTransaction")] - fn raw_transaction(&self, Bytes, TraceOptions, Option) -> Result; + fn raw_transaction(&self, _: Bytes, _: TraceOptions, _: Option) -> Result; /// Executes the transaction with the given hash and returns a number of possible traces for it. #[rpc(name = "trace_replayTransaction")] - fn replay_transaction(&self, H256, TraceOptions) -> Result; + fn replay_transaction(&self, _: H256, _: TraceOptions) -> Result; /// Executes all the transactions at the given block and returns a number of possible traces for each transaction. #[rpc(name = "trace_replayBlockTransactions")] - fn replay_block_transactions(&self, BlockNumber, TraceOptions) -> Result>; + fn replay_block_transactions(&self, _: BlockNumber, _: TraceOptions) -> Result>; } diff --git a/rpc/src/v1/traits/web3.rs b/rpc/src/v1/traits/web3.rs index dd464ee1c22..cdeab6d7c47 100644 --- a/rpc/src/v1/traits/web3.rs +++ b/rpc/src/v1/traits/web3.rs @@ -22,7 +22,7 @@ use jsonrpc_derive::rpc; use v1::types::Bytes; /// Web3 rpc interface. -#[rpc] +#[rpc(server)] pub trait Web3 { /// Returns current client version. #[rpc(name = "web3_clientVersion")] @@ -30,5 +30,5 @@ pub trait Web3 { /// Returns sha3 of the given data #[rpc(name = "web3_sha3")] - fn sha3(&self, Bytes) -> Result; + fn sha3(&self, _: Bytes) -> Result; } diff --git a/rpc/src/v1/types/receipt.rs b/rpc/src/v1/types/receipt.rs index f492ca98c52..bede7d5362f 100644 --- a/rpc/src/v1/types/receipt.rs +++ b/rpc/src/v1/types/receipt.rs @@ -43,12 +43,14 @@ pub struct Receipt { /// Logs pub logs: Vec, /// State Root - #[serde(rename = "root")] + // NOTE(niklasad1): EIP98 makes this optional field, if it's missing then skip serializing it + #[serde(skip_serializing_if = "Option::is_none", rename = "root")] pub state_root: Option, /// Logs bloom pub logs_bloom: H2048, /// Status code - #[serde(rename = "status")] + // NOTE(niklasad1): Unknown after EIP98 rules, if it's missing then skip serializing it + #[serde(skip_serializing_if = "Option::is_none", rename = "status")] pub status_code: Option, } @@ -91,8 +93,8 @@ impl From for Receipt { impl From for Receipt { fn from(r: RichReceipt) -> Self { Receipt { - from: None, - to: None, + from: Some(r.from), + to: r.to.map(Into::into), transaction_hash: Some(r.transaction_hash), transaction_index: Some(r.transaction_index.into()), block_hash: None, diff --git a/scripts/docker/README.md b/scripts/docker/README.md index 86b2fcb6aad..1b970699d60 100644 --- a/scripts/docker/README.md +++ b/scripts/docker/README.md @@ -8,7 +8,7 @@ Builds a lightweight non-root Parity docker image: ``` git clone https://github.com/paritytech/parity-ethereum.git cd parity-ethereum -./docker/centos/build.sh +./scripts/docker/centos/build.sh ``` Fully customised build: @@ -16,7 +16,7 @@ Fully customised build: PARITY_IMAGE_REPO=my-personal/parity \ PARITY_BUILDER_IMAGE_TAG=build-latest \ PARITY_RUNNER_IMAGE_TAG=centos-parity-experimental \ -./docker/centos/build.sh +./scripts/docker/centos/build.sh ``` Default values: diff --git a/scripts/docker/centos/build.sh b/scripts/docker/centos/build.sh index 7215e745f0e..df4796b9137 100755 --- a/scripts/docker/centos/build.sh +++ b/scripts/docker/centos/build.sh @@ -8,18 +8,18 @@ PARITY_BUILDER_IMAGE_TAG=${PARITY_BUILDER_IMAGE_TAG:-build} PARITY_RUNNER_IMAGE_TAG=${PARITY_RUNNER_IMAGE_TAG:-latest} echo Building $PARITY_IMAGE_REPO:$PARITY_BUILDER_IMAGE_TAG-$(git log -1 --format="%H") -docker build --no-cache -t $PARITY_IMAGE_REPO:$PARITY_BUILDER_IMAGE_TAG-$(git log -1 --format="%H") . -f docker/centos/Dockerfile.build +docker build --no-cache -t $PARITY_IMAGE_REPO:$PARITY_BUILDER_IMAGE_TAG-$(git log -1 --format="%H") . -f scripts/docker/centos/Dockerfile.build echo Creating $PARITY_BUILDER_IMAGE_TAG-$(git log -1 --format="%H"), extracting binary docker create --name extract $PARITY_IMAGE_REPO:$PARITY_BUILDER_IMAGE_TAG-$(git log -1 --format="%H") -mkdir docker/centos/parity -docker cp extract:/build/parity-ethereum/target/release/parity docker/centos/parity +mkdir scripts/docker/centos/parity +docker cp extract:/build/parity-ethereum/target/release/parity scripts/docker/centos/parity echo Building $PARITY_IMAGE_REPO:$PARITY_RUNNER_IMAGE_TAG -docker build --no-cache -t $PARITY_IMAGE_REPO:$PARITY_RUNNER_IMAGE_TAG docker/centos/ -f docker/centos/Dockerfile +docker build --no-cache -t $PARITY_IMAGE_REPO:$PARITY_RUNNER_IMAGE_TAG scripts/docker/centos/ -f scripts/docker/centos/Dockerfile echo Cleaning up ... -rm -rf docker/centos/parity +rm -rf scripts/docker/centos/parity docker rm -f extract docker rmi -f $PARITY_IMAGE_REPO:$PARITY_BUILDER_IMAGE_TAG-$(git log -1 --format="%H") diff --git a/scripts/gitlab/build-linux.sh b/scripts/gitlab/build-linux.sh index ebd65cd9b39..88dcffccdf0 100755 --- a/scripts/gitlab/build-linux.sh +++ b/scripts/gitlab/build-linux.sh @@ -3,6 +3,8 @@ set -e # fail on any error set -u # treat unset variables as error +export CC="sccache "$CC +export CXX="sccache "$CXX echo "__________Show ENVIROMENT__________" echo "CI_SERVER_NAME: " $CI_SERVER_NAME echo "CARGO_HOME: " $CARGO_HOME @@ -54,3 +56,5 @@ do echo "> ${binary} cannot be hashed with cross-compiled binary (keccak256)" fi done +#show sccache statistics +sccache --stop-server diff --git a/scripts/gitlab/test-cpp.sh b/scripts/gitlab/test-cpp.sh index 1cbd58a30cf..b61db1bb2f4 100755 --- a/scripts/gitlab/test-cpp.sh +++ b/scripts/gitlab/test-cpp.sh @@ -4,6 +4,8 @@ set -e # fail on any error set -u # treat unset variables as error #use nproc `linux only THREADS=$(nproc) +export CC="sccache gcc" +export CXX="sccache g++" echo "________Running the C++ example________" DIR=parity-clib/examples/cpp/build @@ -15,3 +17,5 @@ make VERBOSE=1 -j $THREADS # that to happen on CI cd - rm -rf $DIR +#show sccache statistics +sccache --stop-server diff --git a/scripts/gitlab/test-linux.sh b/scripts/gitlab/test-linux.sh index d7e6da0bb62..dc2c3f01180 100755 --- a/scripts/gitlab/test-linux.sh +++ b/scripts/gitlab/test-linux.sh @@ -5,8 +5,11 @@ echo "________Running test-linux.sh________" set -e # fail on any error set -u # treat unset variables as error -FEATURES="json-tests,ci-skip-tests" -OPTIONS="" +export CC="sccache gcc" +export CXX="sccache g++" +FEATURES="json-tests" + +OPTIONS="--release" #use nproc `linux only THREADS=$(nproc) @@ -16,3 +19,6 @@ rustup show echo "________Running Parity Full Test Suite________" # Why are we using RUSTFLAGS? See https://github.com/paritytech/parity-ethereum/pull/10719 CARGO_INCREMENTAL=0 RUSTFLAGS="-C opt-level=3 -C overflow-checks=on -C debuginfo=2" time cargo test $OPTIONS --features "$FEATURES" --locked --all --target $CARGO_TARGET --verbose --color=never -- --test-threads $THREADS + +#show sccache statistics +sccache --stop-server \ No newline at end of file diff --git a/scripts/gitlab/validate-chainspecs.sh b/scripts/gitlab/validate-chainspecs.sh index 58391e13126..cf5c126f7b3 100755 --- a/scripts/gitlab/validate-chainspecs.sh +++ b/scripts/gitlab/validate-chainspecs.sh @@ -15,5 +15,6 @@ done for spec in ethcore/res/ethereum/*.json; do if ! ./target/release/chainspec "$spec"; then ERR=1; fi done - +#show sccache statistics +sccache --stop-server exit $ERR diff --git a/secret-store/Cargo.toml b/secret-store/Cargo.toml index 6f5e16d7a52..4af2bf20120 100644 --- a/secret-store/Cargo.toml +++ b/secret-store/Cargo.toml @@ -32,10 +32,12 @@ serde = "1.0" serde_derive = "1.0" serde_json = "1.0" tiny-keccak = "1.4" -tokio = "~0.1.11" +tokio = "0.1.22" tokio-io = "0.1" tokio-service = "0.1" -url = "1.0" +url = "2" +percent-encoding = "2" +jsonrpc-server-utils = "14.0.3" [dev-dependencies] env_logger = "0.5" diff --git a/secret-store/src/key_server.rs b/secret-store/src/key_server.rs index 3f03e7e259d..98c2a11c224 100644 --- a/secret-store/src/key_server.rs +++ b/secret-store/src/key_server.rs @@ -78,6 +78,22 @@ impl ServerKeyGenerator for KeyServerImpl { .expect("when wait is called without timeout it always returns Some; qed") .map_err(Into::into) } + + fn restore_key_public(&self, key_id: &ServerKeyId, author: &Requester) -> Result { + // recover requestor' public key from signature + let address = author.address(key_id).map_err(Error::InsufficientRequesterData)?; + + // negotiate key version && retrieve common key data + let negotiation_session = self.data.lock().cluster.new_key_version_negotiation_session(*key_id)?; + negotiation_session.wait() + .and_then(|_| negotiation_session.common_key_data()) + .and_then(|key_share| if key_share.author == address { + Ok(key_share.public) + } else { + Err(Error::AccessDenied) + }) + .map_err(Into::into) + } } impl DocumentKeyServer for KeyServerImpl { @@ -237,6 +253,10 @@ pub mod tests { fn generate_key(&self, _key_id: &ServerKeyId, _author: &Requester, _threshold: usize) -> Result { unimplemented!("test-only") } + + fn restore_key_public(&self, _key_id: &ServerKeyId, _author: &Requester) -> Result { + unimplemented!("test-only") + } } impl DocumentKeyServer for DummyKeyServer { diff --git a/secret-store/src/key_server_cluster/admin_sessions/key_version_negotiation_session.rs b/secret-store/src/key_server_cluster/admin_sessions/key_version_negotiation_session.rs index 58801948664..93b5c72428c 100644 --- a/secret-store/src/key_server_cluster/admin_sessions/key_version_negotiation_session.rs +++ b/secret-store/src/key_server_cluster/admin_sessions/key_version_negotiation_session.rs @@ -26,7 +26,7 @@ use key_server_cluster::decryption_session::SessionImpl as DecryptionSession; use key_server_cluster::signing_session_ecdsa::SessionImpl as EcdsaSigningSession; use key_server_cluster::signing_session_schnorr::SessionImpl as SchnorrSigningSession; use key_server_cluster::message::{Message, KeyVersionNegotiationMessage, RequestKeyVersions, - KeyVersions, KeyVersionsError, FailedKeyVersionContinueAction}; + KeyVersions, KeyVersionsError, FailedKeyVersionContinueAction, CommonKeyData}; use key_server_cluster::admin_sessions::ShareChangeSessionMeta; // TODO [Opt]: change sessions so that versions are sent by chunks. @@ -97,8 +97,8 @@ struct SessionData { pub state: SessionState, /// Initialization confirmations. pub confirmations: Option>, - /// Key threshold. - pub threshold: Option, + /// Common key data that nodes have agreed upon. + pub key_share: Option, /// { Version => Nodes } pub versions: Option>>, /// Session result. @@ -167,12 +167,11 @@ pub struct LargestSupportResultComputer; impl SessionImpl where T: SessionTransport { /// Create new session. pub fn new(params: SessionParams) -> Self { - let threshold = params.key_share.as_ref().map(|key_share| key_share.threshold); SessionImpl { core: SessionCore { meta: params.meta, sub_session: params.sub_session, - key_share: params.key_share, + key_share: params.key_share.clone(), result_computer: params.result_computer, transport: params.transport, nonce: params.nonce, @@ -181,7 +180,12 @@ impl SessionImpl where T: SessionTransport { data: Mutex::new(SessionData { state: SessionState::WaitingForInitialization, confirmations: None, - threshold: threshold, + key_share: params.key_share.map(|key_share| DocumentKeyShare { + threshold: key_share.threshold, + author: key_share.author, + public: key_share.public, + ..Default::default() + }), versions: None, result: None, continue_with: None, @@ -195,12 +199,6 @@ impl SessionImpl where T: SessionTransport { &self.core.meta } - /// Return key threshold. - pub fn key_threshold(&self) -> Result { - self.data.lock().threshold.clone() - .ok_or(Error::InvalidStateForRequest) - } - /// Return result computer reference. pub fn version_holders(&self, version: &H256) -> Result, Error> { Ok(self.data.lock().versions.as_ref().ok_or(Error::InvalidStateForRequest)? @@ -229,6 +227,12 @@ impl SessionImpl where T: SessionTransport { .expect("wait_session returns Some if called without timeout; qed") } + /// Retrieve common key data (author, threshold, public), if available. + pub fn common_key_data(&self) -> Result { + self.data.lock().key_share.clone() + .ok_or(Error::InvalidStateForRequest) + } + /// Initialize session. pub fn initialize(&self, connected_nodes: BTreeSet) -> Result<(), Error> { // check state @@ -322,7 +326,11 @@ impl SessionImpl where T: SessionTransport { session: self.core.meta.id.clone().into(), sub_session: self.core.sub_session.clone().into(), session_nonce: self.core.nonce, - threshold: self.core.key_share.as_ref().map(|key_share| key_share.threshold), + key_common: self.core.key_share.as_ref().map(|key_share| CommonKeyData { + threshold: key_share.threshold, + author: key_share.author.into(), + public: key_share.public.into(), + }), versions: self.core.key_share.as_ref().map(|key_share| key_share.versions.iter().rev() .filter(|v| v.id_numbers.contains_key(sender)) @@ -357,12 +365,25 @@ impl SessionImpl where T: SessionTransport { // remember versions that sender have { - match message.threshold.clone() { - Some(threshold) if data.threshold.is_none() => { - data.threshold = Some(threshold); + match message.key_common.as_ref() { + Some(key_common) if data.key_share.is_none() => { + data.key_share = Some(DocumentKeyShare { + threshold: key_common.threshold, + author: key_common.author.clone().into(), + public: key_common.public.clone().into(), + ..Default::default() + }); + }, + Some(key_common) => { + let prev_key_share = data.key_share.as_ref() + .expect("data.key_share.is_none() is matched by previous branch; qed"); + if prev_key_share.threshold != key_common.threshold || + prev_key_share.author[..] != key_common.author[..] || + prev_key_share.public[..] != key_common.public[..] + { + return Err(Error::InvalidMessage); + } }, - Some(threshold) if data.threshold.as_ref() == Some(&threshold) => (), - Some(_) => return Err(Error::InvalidMessage), None if message.versions.is_empty() => (), None => return Err(Error::InvalidMessage), } @@ -388,7 +409,8 @@ impl SessionImpl where T: SessionTransport { let reason = "this field is filled on master node when initializing; try_complete is only called on initialized master node; qed"; let confirmations = data.confirmations.as_ref().expect(reason); let versions = data.versions.as_ref().expect(reason); - if let Some(result) = core.result_computer.compute_result(data.threshold.clone(), confirmations, versions) { + let threshold = data.key_share.as_ref().map(|key_share| key_share.threshold); + if let Some(result) = core.result_computer.compute_result(threshold, confirmations, versions) { // when the master node processing decryption service request, it starts with a key version negotiation session // if the negotiation fails, only master node knows about it // => if the error is fatal, only the master will know about it and report it to the contract && the request will never be rejected @@ -590,6 +612,7 @@ impl SessionResultComputer for LargestSupportResultComputer { mod tests { use std::sync::Arc; use std::collections::{VecDeque, BTreeMap, BTreeSet}; + use ethereum_types::{H512, H160, Address}; use ethkey::public_to_address; use key_server_cluster::{NodeId, SessionId, Error, KeyStorage, DummyKeyStorage, DocumentKeyShare, DocumentKeyShareVersion}; @@ -599,9 +622,14 @@ mod tests { use key_server_cluster::cluster_sessions::ClusterSession; use key_server_cluster::admin_sessions::ShareChangeSessionMeta; use key_server_cluster::decryption_session::create_default_decryption_session; - use key_server_cluster::message::{Message, KeyVersionNegotiationMessage, RequestKeyVersions, KeyVersions}; - use super::{SessionImpl, SessionTransport, SessionParams, FastestResultComputer, LargestSupportResultComputer, - SessionResultComputer, SessionState, ContinueAction, FailedContinueAction}; + use key_server_cluster::message::{ + Message, KeyVersionNegotiationMessage, RequestKeyVersions, + CommonKeyData, KeyVersions, + }; + use super::{ + SessionImpl, SessionTransport, SessionParams, FastestResultComputer, LargestSupportResultComputer, + SessionResultComputer, SessionState, ContinueAction, FailedContinueAction, + }; struct DummyTransport { cluster: Arc, @@ -756,7 +784,11 @@ mod tests { session: Default::default(), sub_session: math::generate_random_scalar().unwrap().into(), session_nonce: 0, - threshold: Some(10), + key_common: Some(CommonKeyData { + threshold: 10, + author: Default::default(), + public: Default::default(), + }), versions: Vec::new(), })), Err(Error::InvalidStateForRequest)); } @@ -772,7 +804,12 @@ mod tests { session: Default::default(), sub_session: math::generate_random_scalar().unwrap().into(), session_nonce: 0, - threshold: Some(0), + key_common: Some(CommonKeyData { + threshold: 0, + author: Default::default(), + public: Default::default(), + }), + versions: vec![version_id.clone().into()] })), Ok(())); assert_eq!(ml.session(0).data.lock().state, SessionState::Finished); @@ -781,32 +818,61 @@ mod tests { session: Default::default(), sub_session: math::generate_random_scalar().unwrap().into(), session_nonce: 0, - threshold: Some(0), + key_common: Some(CommonKeyData { + threshold: 0, + author: Default::default(), + public: Default::default(), + }), + versions: vec![version_id.clone().into()] })), Ok(())); assert_eq!(ml.session(0).data.lock().state, SessionState::Finished); } #[test] - fn negotiation_fails_if_wrong_threshold_sent() { - let ml = MessageLoop::empty(3); - ml.session(0).initialize(ml.nodes.keys().cloned().collect()).unwrap(); + fn negotiation_fails_if_wrong_common_data_sent() { + fn run_test(key_common: CommonKeyData) { + let ml = MessageLoop::empty(3); + ml.session(0).initialize(ml.nodes.keys().cloned().collect()).unwrap(); + + let version_id = (*math::generate_random_scalar().unwrap()).clone(); + assert_eq!(ml.session(0).process_message(ml.node_id(1), &KeyVersionNegotiationMessage::KeyVersions(KeyVersions { + session: Default::default(), + sub_session: math::generate_random_scalar().unwrap().into(), + session_nonce: 0, + key_common: Some(CommonKeyData { + threshold: 1, + author: Default::default(), + public: Default::default(), + }), + versions: vec![version_id.clone().into()] + })), Ok(())); + assert_eq!(ml.session(0).process_message(ml.node_id(2), &KeyVersionNegotiationMessage::KeyVersions(KeyVersions { + session: Default::default(), + sub_session: math::generate_random_scalar().unwrap().into(), + session_nonce: 0, + key_common: Some(key_common), + versions: vec![version_id.clone().into()] + })), Err(Error::InvalidMessage)); + } + + run_test(CommonKeyData { + threshold: 2, + author: Default::default(), + public: Default::default(), + }); - let version_id = (*math::generate_random_scalar().unwrap()).clone(); - assert_eq!(ml.session(0).process_message(ml.node_id(1), &KeyVersionNegotiationMessage::KeyVersions(KeyVersions { - session: Default::default(), - sub_session: math::generate_random_scalar().unwrap().into(), - session_nonce: 0, - threshold: Some(1), - versions: vec![version_id.clone().into()] - })), Ok(())); - assert_eq!(ml.session(0).process_message(ml.node_id(2), &KeyVersionNegotiationMessage::KeyVersions(KeyVersions { - session: Default::default(), - sub_session: math::generate_random_scalar().unwrap().into(), - session_nonce: 0, - threshold: Some(2), - versions: vec![version_id.clone().into()] - })), Err(Error::InvalidMessage)); + run_test(CommonKeyData { + threshold: 1, + author: H160::from(1).into(), + public: Default::default(), + }); + + run_test(CommonKeyData { + threshold: 1, + author: H160::from(2).into(), + public: Default::default(), + }); } #[test] @@ -819,7 +885,7 @@ mod tests { session: Default::default(), sub_session: math::generate_random_scalar().unwrap().into(), session_nonce: 0, - threshold: None, + key_common: None, versions: vec![version_id.clone().into()] })), Err(Error::InvalidMessage)); } @@ -829,9 +895,9 @@ mod tests { let nodes = MessageLoop::prepare_nodes(2); let version_id = (*math::generate_random_scalar().unwrap()).clone(); nodes.values().nth(0).unwrap().insert(Default::default(), DocumentKeyShare { - author: Default::default(), + author: H160::from(2), threshold: 1, - public: Default::default(), + public: H512::from(3), common_point: None, encrypted_point: None, versions: vec![DocumentKeyShareVersion { @@ -845,8 +911,13 @@ mod tests { // we can't be sure that node has given key version because previous ShareAdd session could fail assert!(ml.session(0).data.lock().state != SessionState::Finished); - // check that upon completion, threshold is known - assert_eq!(ml.session(0).key_threshold(), Ok(1)); + // check that upon completion, commmon key data is known + assert_eq!(ml.session(0).common_key_data(), Ok(DocumentKeyShare { + author: H160::from(2), + threshold: 1, + public: H512::from(3), + ..Default::default() + })); } #[test] diff --git a/secret-store/src/key_server_cluster/admin_sessions/servers_set_change_session.rs b/secret-store/src/key_server_cluster/admin_sessions/servers_set_change_session.rs index 18c63587959..a0d4acdc125 100644 --- a/secret-store/src/key_server_cluster/admin_sessions/servers_set_change_session.rs +++ b/secret-store/src/key_server_cluster/admin_sessions/servers_set_change_session.rs @@ -800,7 +800,7 @@ impl SessionImpl { .wait()? .expect("initialize_share_change_session is only called on share change master; negotiation session completes with some on master; qed"); let selected_version_holders = negotiation_session.version_holders(&selected_version)?; - let selected_version_threshold = negotiation_session.key_threshold()?; + let selected_version_threshold = negotiation_session.common_key_data()?.threshold; // prepare session change plan && check if something needs to be changed let old_nodes_set = selected_version_holders; diff --git a/secret-store/src/key_server_cluster/admin_sessions/share_add_session.rs b/secret-store/src/key_server_cluster/admin_sessions/share_add_session.rs index e2af7bc7fa2..b5195a62939 100644 --- a/secret-store/src/key_server_cluster/admin_sessions/share_add_session.rs +++ b/secret-store/src/key_server_cluster/admin_sessions/share_add_session.rs @@ -25,7 +25,7 @@ use key_server_cluster::cluster_sessions::ClusterSession; use key_server_cluster::math; use key_server_cluster::message::{Message, ShareAddMessage, ShareAddConsensusMessage, ConsensusMessageOfShareAdd, InitializeConsensusSessionOfShareAdd, KeyShareCommon, NewKeysDissemination, ShareAddError, - ConfirmConsensusInitialization}; + ConfirmConsensusInitialization, CommonKeyData}; use key_server_cluster::jobs::job_session::JobTransport; use key_server_cluster::jobs::dummy_job::{DummyJob, DummyJobTransport}; use key_server_cluster::jobs::servers_set_change_access_job::{ServersSetChangeAccessJob, ServersSetChangeAccessRequest}; @@ -469,9 +469,9 @@ impl SessionImpl where T: SessionTransport { // update data data.state = SessionState::WaitingForKeysDissemination; data.new_key_share = Some(NewKeyShare { - threshold: message.threshold, - author: message.author.clone().into(), - joint_public: message.joint_public.clone().into(), + threshold: message.key_common.threshold, + author: message.key_common.author.clone().into(), + joint_public: message.key_common.public.clone().into(), common_point: message.common_point.clone().map(Into::into), encrypted_point: message.encrypted_point.clone().map(Into::into), }); @@ -645,9 +645,11 @@ impl SessionImpl where T: SessionTransport { core.transport.send(new_node, ShareAddMessage::KeyShareCommon(KeyShareCommon { session: core.meta.id.clone().into(), session_nonce: core.nonce, - threshold: old_key_share.threshold, - author: old_key_share.author.clone().into(), - joint_public: old_key_share.public.clone().into(), + key_common: CommonKeyData { + threshold: old_key_share.threshold, + author: old_key_share.author.into(), + public: old_key_share.public.into(), + }, common_point: old_key_share.common_point.clone().map(Into::into), encrypted_point: old_key_share.encrypted_point.clone().map(Into::into), id_numbers: old_key_version.id_numbers.iter() diff --git a/secret-store/src/key_server_cluster/cluster_connections_net.rs b/secret-store/src/key_server_cluster/cluster_connections_net.rs index bda7f7dd283..43d61dc7ed8 100644 --- a/secret-store/src/key_server_cluster/cluster_connections_net.rs +++ b/secret-store/src/key_server_cluster/cluster_connections_net.rs @@ -467,10 +467,13 @@ fn net_maintain(data: Arc) { /// Send keep alive messages to remote nodes. fn net_keep_alive(data: Arc) { - let now = Instant::now(); let active_connections = data.active_connections(); for connection in active_connections { - let last_message_diff = now - connection.last_message_time(); + // the last_message_time could change after active_connections() call + // => we always need to call Instant::now() after getting last_message_time + let last_message_time = connection.last_message_time(); + let now = Instant::now(); + let last_message_diff = now - last_message_time; if last_message_diff > KEEP_ALIVE_DISCONNECT_INTERVAL { warn!(target: "secretstore_net", "{}: keep alive timeout for node {}", data.self_key_pair.public(), connection.node_id()); diff --git a/secret-store/src/key_server_cluster/message.rs b/secret-store/src/key_server_cluster/message.rs index 4b850ec3d3b..98520564fe8 100644 --- a/secret-store/src/key_server_cluster/message.rs +++ b/secret-store/src/key_server_cluster/message.rs @@ -970,12 +970,8 @@ pub struct KeyShareCommon { pub session: MessageSessionId, /// Session-level nonce. pub session_nonce: u64, - /// Key threshold. - pub threshold: usize, - /// Author of key share entry. - pub author: SerializableAddress, - /// Joint public. - pub joint_public: SerializablePublic, + /// Common key data. + pub key_common: CommonKeyData, /// Common (shared) encryption point. pub common_point: Option, /// Encrypted point. @@ -1026,12 +1022,23 @@ pub struct KeyVersions { pub sub_session: SerializableSecret, /// Session-level nonce. pub session_nonce: u64, - /// Key threshold. - pub threshold: Option, + /// Common key data, shared by all versions. + pub key_common: Option, /// Key versions. pub versions: Vec, } +/// Common key data. +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct CommonKeyData { + /// Key threshold. + pub threshold: usize, + /// Author of the key entry. + pub author: SerializableAddress, + /// Joint public. + pub public: SerializablePublic, +} + /// When key versions error has occured. #[derive(Clone, Debug, Serialize, Deserialize)] pub struct KeyVersionsError { diff --git a/secret-store/src/key_storage.rs b/secret-store/src/key_storage.rs index 36edae43ed5..396f2c7fb71 100644 --- a/secret-store/src/key_storage.rs +++ b/secret-store/src/key_storage.rs @@ -34,8 +34,7 @@ type CurrentSerializableDocumentKeyShare = SerializableDocumentKeyShareV3; type CurrentSerializableDocumentKeyVersion = SerializableDocumentKeyShareVersionV3; /// Encrypted key share, stored by key storage on the single key server. -#[derive(Debug, Clone, PartialEq)] -#[cfg_attr(test, derive(Default))] +#[derive(Debug, Default, Clone, PartialEq)] pub struct DocumentKeyShare { /// Author of the entry. pub author: Address, diff --git a/secret-store/src/lib.rs b/secret-store/src/lib.rs index a3c82991b1d..810b1da985e 100644 --- a/secret-store/src/lib.rs +++ b/secret-store/src/lib.rs @@ -29,6 +29,7 @@ extern crate parity_bytes as bytes; extern crate parity_crypto as crypto; extern crate parity_runtime; extern crate parking_lot; +extern crate percent_encoding; extern crate rustc_hex; extern crate serde; extern crate serde_json; diff --git a/secret-store/src/listener/http_listener.rs b/secret-store/src/listener/http_listener.rs index aa67ec5c662..47385a9fbd8 100644 --- a/secret-store/src/listener/http_listener.rs +++ b/secret-store/src/listener/http_listener.rs @@ -28,7 +28,7 @@ use tokio; use tokio::net::TcpListener; use parity_runtime::Executor; use futures::{future, Future, Stream}; -use url::percent_encoding::percent_decode; +use percent_encoding::percent_decode; use traits::KeyServer; use serialization::{SerializableEncryptedDocumentKeyShadow, SerializableBytes, SerializablePublic}; @@ -39,6 +39,7 @@ use types::{Error, Public, MessageHash, NodeAddress, RequestSignature, ServerKey /// To generate server key: POST /shadow/{server_key_id}/{signature}/{threshold} /// To store pregenerated encrypted document key: POST /shadow/{server_key_id}/{signature}/{common_point}/{encrypted_key} /// To generate server && document key: POST /{server_key_id}/{signature}/{threshold} +/// To get public portion of server key: GET /server/{server_key_id}/{signature} /// To get document key: GET /{server_key_id}/{signature} /// To get document key shadow: GET /shadow/{server_key_id}/{signature} /// To generate Schnorr signature with server key: GET /schnorr/{server_key_id}/{signature}/{message_hash} @@ -61,6 +62,8 @@ enum Request { StoreDocumentKey(ServerKeyId, RequestSignature, Public, Public), /// Generate encryption key. GenerateDocumentKey(ServerKeyId, RequestSignature, usize), + /// Request public portion of server key. + GetServerKey(ServerKeyId, RequestSignature), /// Request encryption key of given document for given requestor. GetDocumentKey(ServerKeyId, RequestSignature), /// Request shadow of encryption key of given document for given requestor. @@ -150,6 +153,15 @@ impl KeyServerHttpHandler { err })) }, + Request::GetServerKey(document, signature) => { + return_server_public_key(&req_uri, self.handler.key_server.upgrade() + .map(|key_server| key_server.restore_key_public(&document, &signature.into())) + .unwrap_or(Err(Error::Internal("KeyServer is already destroyed".into()))) + .map_err(|err| { + warn!(target: "secretstore", "GetServerKey request {} has failed with: {}", req_uri, err); + err + })) + }, Request::GetDocumentKey(document, signature) => { return_document_key(&req_uri, self.handler.key_server.upgrade() .map(|key_server| key_server.restore_document_key(&document, &signature.into())) @@ -343,8 +355,8 @@ fn parse_request(method: &HttpMethod, uri_path: &str, body: &[u8]) -> Request { return parse_admin_request(method, path, body); } - let (prefix, args_offset) = if &path[0] == "shadow" || &path[0] == "schnorr" || &path[0] == "ecdsa" - { (&*path[0], 1) } else { ("", 0) }; + let is_known_prefix = &path[0] == "shadow" || &path[0] == "schnorr" || &path[0] == "ecdsa" || &path[0] == "server"; + let (prefix, args_offset) = if is_known_prefix { (&*path[0], 1) } else { ("", 0) }; let args_count = path.len() - args_offset; if args_count < 2 || path[args_offset].is_empty() || path[args_offset + 1].is_empty() { return Request::Invalid; @@ -370,6 +382,8 @@ fn parse_request(method: &HttpMethod, uri_path: &str, body: &[u8]) -> Request { Request::StoreDocumentKey(document, signature, common_point, encrypted_key), ("", 3, &HttpMethod::POST, Some(Ok(threshold)), _, _, _) => Request::GenerateDocumentKey(document, signature, threshold), + ("server", 2, &HttpMethod::GET, _, _, _, _) => + Request::GetServerKey(document, signature), ("", 2, &HttpMethod::GET, _, _, _, _) => Request::GetDocumentKey(document, signature), ("shadow", 2, &HttpMethod::GET, _, _, _, _) => @@ -410,8 +424,11 @@ fn parse_admin_request(method: &HttpMethod, path: Vec, body: &[u8]) -> R #[cfg(test)] mod tests { use std::sync::Arc; + use std::str::FromStr; + use hyper::Method as HttpMethod; use ethkey::Public; + use ethereum_types::H256; use traits::KeyServer; use key_server::tests::DummyKeyServer; use types::NodeAddress; @@ -446,6 +463,10 @@ mod tests { Request::GenerateDocumentKey("0000000000000000000000000000000000000000000000000000000000000001".into(), "a199fb39e11eefb61c78a4074a53c0d4424600a3e74aad4fb9d93a26c30d067e1d4d29936de0c73f19827394a1dd049480a0d581aee7ae7546968da7d3d1c2fd01".parse().unwrap(), 2)); + // GET /server/{server_key_id}/{signature} => get public portion of server key + assert_eq!(parse_request(&HttpMethod::GET, "/server/0000000000000000000000000000000000000000000000000000000000000001/a199fb39e11eefb61c78a4074a53c0d4424600a3e74aad4fb9d93a26c30d067e1d4d29936de0c73f19827394a1dd049480a0d581aee7ae7546968da7d3d1c2fd01", Default::default()), + Request::GetServerKey(H256::from_str("0000000000000000000000000000000000000000000000000000000000000001").unwrap(), + "a199fb39e11eefb61c78a4074a53c0d4424600a3e74aad4fb9d93a26c30d067e1d4d29936de0c73f19827394a1dd049480a0d581aee7ae7546968da7d3d1c2fd01".parse().unwrap())); // GET /{server_key_id}/{signature} => get document key assert_eq!(parse_request(&HttpMethod::GET, "/0000000000000000000000000000000000000000000000000000000000000001/a199fb39e11eefb61c78a4074a53c0d4424600a3e74aad4fb9d93a26c30d067e1d4d29936de0c73f19827394a1dd049480a0d581aee7ae7546968da7d3d1c2fd01", Default::default()), Request::GetDocumentKey("0000000000000000000000000000000000000000000000000000000000000001".into(), diff --git a/secret-store/src/listener/mod.rs b/secret-store/src/listener/mod.rs index b28375d8ec2..0fde173c88e 100644 --- a/secret-store/src/listener/mod.rs +++ b/secret-store/src/listener/mod.rs @@ -75,6 +75,10 @@ impl ServerKeyGenerator for Listener { fn generate_key(&self, key_id: &ServerKeyId, author: &Requester, threshold: usize) -> Result { self.key_server.generate_key(key_id, author, threshold) } + + fn restore_key_public(&self, key_id: &ServerKeyId, author: &Requester) -> Result { + self.key_server.restore_key_public(key_id, author) + } } impl DocumentKeyServer for Listener { diff --git a/secret-store/src/traits.rs b/secret-store/src/traits.rs index fdfa0589795..e12c75e5ddd 100644 --- a/secret-store/src/traits.rs +++ b/secret-store/src/traits.rs @@ -40,6 +40,10 @@ pub trait ServerKeyGenerator { /// `threshold + 1` is the minimal number of nodes, required to restore private key. /// Result is a public portion of SK. fn generate_key(&self, key_id: &ServerKeyId, author: &Requester, threshold: usize) -> Result; + /// Retrieve public portion of previously generated SK. + /// `key_id` is identifier of previously generated SK. + /// `author` is the same author, that has created the server key. + fn restore_key_public(&self, key_id: &ServerKeyId, author: &Requester) -> Result; } /// Document key (DK) server. diff --git a/util/EIP-712/Cargo.toml b/util/EIP-712/Cargo.toml index baf0bfc89bc..ae03efe87ed 100644 --- a/util/EIP-712/Cargo.toml +++ b/util/EIP-712/Cargo.toml @@ -20,10 +20,9 @@ ethereum-types = "0.4" failure = "0.1" itertools = "0.7" lazy_static = "1.1" -toolshed = "0.4" regex = "1.0" validator = "0.8" validator_derive = "0.8" -lunarity-lexer = "0.1" +lunarity-lexer = "0.2" rustc-hex = "2.0" indexmap = "1.0.2" diff --git a/util/EIP-712/src/encode.rs b/util/EIP-712/src/encode.rs index f3c89840d64..29ae7b06fb7 100644 --- a/util/EIP-712/src/encode.rs +++ b/util/EIP-712/src/encode.rs @@ -23,7 +23,7 @@ use std::str::FromStr; use itertools::Itertools; use indexmap::IndexSet; use serde_json::to_value; -use crate::parser::{Parser, Type}; +use crate::parser::{parse_type, Type}; use crate::error::{Result, ErrorKind, serde_error}; use crate::eip712::{EIP712, MessageTypes}; use rustc_hex::FromHex; @@ -56,11 +56,16 @@ fn build_dependencies<'a>(message_type: &'a str, message_types: &'a MessageTypes deps.insert(item); for field in fields { + // check if this field is an array type + let field_type = if let Some(index) = field.type_.find('[') { + &field.type_[..index] + } else { + &field.type_ + }; // seen this type before? or not a custom type skip - if deps.contains(&*field.type_) || !message_types.contains_key(&*field.type_) { - continue; + if !deps.contains(field_type) || message_types.contains_key(field_type) { + types.insert(field_type); } - types.insert(&*field.type_); } } }; @@ -70,7 +75,8 @@ fn build_dependencies<'a>(message_type: &'a str, message_types: &'a MessageTypes fn encode_type(message_type: &str, message_types: &MessageTypes) -> Result { let deps = { - let mut temp = build_dependencies(message_type, message_types).ok_or_else(|| ErrorKind::NonExistentType)?; + let mut temp = build_dependencies(message_type, message_types) + .ok_or(ErrorKind::NonExistentType)?; temp.remove(message_type); let mut temp = temp.into_iter().collect::>(); (&mut temp[..]).sort_unstable(); @@ -99,7 +105,6 @@ fn type_hash(message_type: &str, typed_data: &MessageTypes) -> Result { } fn encode_data( - parser: &Parser, message_type: &Type, message_types: &MessageTypes, value: &Value, @@ -112,52 +117,70 @@ fn encode_data( length } => { let mut items = vec![]; - let values = value.as_array().ok_or_else(|| serde_error("array", field_name))?; + let values = value.as_array() + .ok_or(serde_error("array", field_name))?; // check if the type definition actually matches // the length of items to be encoded if length.is_some() && Some(values.len() as u64) != *length { let array_type = format!("{}[{}]", *inner, length.unwrap()); - return Err(ErrorKind::UnequalArrayItems(length.unwrap(), array_type, values.len() as u64))? + return Err( + ErrorKind::UnequalArrayItems(length.unwrap(), array_type, values.len() as u64) + )? } for item in values { - let mut encoded = encode_data(parser, &*inner, &message_types, item, field_name)?; + let mut encoded = encode_data( + &*inner, + &message_types, + item, + field_name + )?; items.append(&mut encoded); } +// keccak(items).as_ref().to_vec() keccak(items).to_vec() } Type::Custom(ref ident) if message_types.get(&*ident).is_some() => { - let type_hash = (&type_hash(ident, &message_types)?).to_vec(); + let type_hash = (&type_hash(ident, &message_types)?).0.to_vec(); let mut tokens = encode(&[EthAbiToken::FixedBytes(type_hash)]); for field in message_types.get(ident).expect("Already checked in match guard; qed") { let value = &value[&field.name]; - let type_ = parser.parse_type(&*field.type_)?; - let mut encoded = encode_data(parser, &type_, &message_types, &value, Some(&*field.name))?; + let type_ = parse_type(&*field.type_)?; + let mut encoded = encode_data( + &type_, + &message_types, + &value, + Some(&*field.name) + )?; tokens.append(&mut encoded); } +// keccak(tokens).as_ref().to_vec() keccak(tokens).to_vec() } Type::Bytes => { - let string = value.as_str().ok_or_else(|| serde_error("string", field_name))?; + let string = value.as_str() + .ok_or(serde_error("string", field_name))?; check_hex(&string)?; let bytes = (&string[2..]) .from_hex::>() .map_err(|err| ErrorKind::HexParseError(format!("{}", err)))?; +// let bytes = keccak(&bytes).as_ref().to_vec(); let bytes = keccak(&bytes).to_vec(); encode(&[EthAbiToken::FixedBytes(bytes)]) } Type::Byte(_) => { - let string = value.as_str().ok_or_else(|| serde_error("string", field_name))?; + let string = value.as_str() + .ok_or(serde_error("string", field_name))?; check_hex(&string)?; @@ -169,28 +192,35 @@ fn encode_data( } Type::String => { - let value = value.as_str().ok_or_else(|| serde_error("string", field_name))?; + let value = value.as_str() + .ok_or(serde_error("string", field_name))?; +// let hash = keccak(value).as_ref().to_vec(); let hash = keccak(value).to_vec(); encode(&[EthAbiToken::FixedBytes(hash)]) } - Type::Bool => encode(&[EthAbiToken::Bool(value.as_bool().ok_or_else(|| serde_error("bool", field_name))?)]), + Type::Bool => encode(&[EthAbiToken::Bool(value.as_bool() + .ok_or(serde_error("bool", field_name))?)]), Type::Address => { - let addr = value.as_str().ok_or_else(|| serde_error("string", field_name))?; + let addr = value.as_str() + .ok_or(serde_error("string", field_name))?; if addr.len() != 42 { return Err(ErrorKind::InvalidAddressLength(addr.len()))?; } - let address = EthAddress::from_str(&addr[2..]).map_err(|err| ErrorKind::HexParseError(format!("{}", err)))?; + let address = EthAddress::from_str(&addr[2..]) + .map_err(|err| ErrorKind::HexParseError(format!("{}", err)))?; encode(&[EthAbiToken::Address(address)]) } Type::Uint | Type::Int => { - let string = value.as_str().ok_or_else(|| serde_error("int/uint", field_name))?; + let string = value.as_str() + .ok_or(serde_error("int/uint", field_name))?; check_hex(&string)?; - let uint = U256::from_str(&string[2..]).map_err(|err| ErrorKind::HexParseError(format!("{}", err)))?; + let uint = U256::from_str(&string[2..]) + .map_err(|err| ErrorKind::HexParseError(format!("{}", err)))?; let token = if *message_type == Type::Uint { EthAbiToken::Uint(uint) @@ -200,7 +230,12 @@ fn encode_data( encode(&[token]) } - _ => return Err(ErrorKind::UnknownType(format!("{}", field_name.unwrap_or("")), format!("{}", *message_type)))? + _ => return Err( + ErrorKind::UnknownType( + format!("{}", field_name.unwrap_or("")), + format!("{}", *message_type) + ).into() + ) }; Ok(encoded) @@ -213,10 +248,19 @@ pub fn hash_structured_data(typed_data: EIP712) -> Result { // EIP-191 compliant let prefix = (b"\x19\x01").to_vec(); let domain = to_value(&typed_data.domain).unwrap(); - let parser = Parser::new(); let (domain_hash, data_hash) = ( - encode_data(&parser, &Type::Custom("EIP712Domain".into()), &typed_data.types, &domain, None)?, - encode_data(&parser, &Type::Custom(typed_data.primary_type), &typed_data.types, &typed_data.message, None)? + encode_data( + &Type::Custom("EIP712Domain".into()), + &typed_data.types, + &domain, + None + )?, + encode_data( + &Type::Custom(typed_data.primary_type), + &typed_data.types, + &typed_data.message, + None + )? ); let concat = [&prefix[..], &domain_hash[..], &data_hash[..]].concat(); Ok(keccak(concat)) @@ -359,9 +403,10 @@ mod tests { #[test] fn test_hash_data() { let typed_data = from_str::(JSON).expect("alas error!"); + let hash = hash_structured_data(typed_data).expect("alas error!"); assert_eq!( - hash_structured_data(typed_data).expect("alas error!").to_hex::(), - "be609aee343fb3c4b28e1df9e632fca64fcfaede20f02e86244efddf30957bd2" + &format!("{:x}", hash)[..], + "be609aee343fb3c4b28e1df9e632fca64fcfaede20f02e86244efddf30957bd2", ) } @@ -411,4 +456,196 @@ mod tests { ErrorKind::UnequalArrayItems(2, "Person[2]".into(), 1) ) } + + #[test] + fn test_typed_data_v4() { + let string = r#"{ + "types": { + "EIP712Domain": [ + { + "name": "name", + "type": "string" + }, + { + "name": "version", + "type": "string" + }, + { + "name": "chainId", + "type": "uint256" + }, + { + "name": "verifyingContract", + "type": "address" + } + ], + "Person": [ + { + "name": "name", + "type": "string" + }, + { + "name": "wallets", + "type": "address[]" + } + ], + "Mail": [ + { + "name": "from", + "type": "Person" + }, + { + "name": "to", + "type": "Person[]" + }, + { + "name": "contents", + "type": "string" + } + ], + "Group": [ + { + "name": "name", + "type": "string" + }, + { + "name": "members", + "type": "Person[]" + } + ] + }, + "domain": { + "name": "Ether Mail", + "version": "1", + "chainId": "0x1", + "verifyingContract": "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC" + }, + "primaryType": "Mail", + "message": { + "from": { + "name": "Cow", + "wallets": [ + "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826", + "0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF" + ] + }, + "to": [ + { + "name": "Bob", + "wallets": [ + "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB", + "0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57", + "0xB0B0b0b0b0b0B000000000000000000000000000" + ] + } + ], + "contents": "Hello, Bob!" + } + }"#; + + let typed_data = from_str::(string).expect("alas error!"); + let hash = hash_structured_data(typed_data.clone()).expect("alas error!"); + assert_eq!( + &format!("{:x}", hash)[..], + + "a85c2e2b118698e88db68a8105b794a8cc7cec074e89ef991cb4f5f533819cc2", + ); + } + + #[test] + fn test_typed_data_v4_custom_array() { + let string = r#"{ + "types": { + "EIP712Domain": [ + { + "name": "name", + "type": "string" + }, + { + "name": "version", + "type": "string" + }, + { + "name": "chainId", + "type": "uint256" + }, + { + "name": "verifyingContract", + "type": "address" + } + ], + "Person": [ + { + "name": "name", + "type": "string" + }, + { + "name": "wallets", + "type": "address[]" + } + ], + "Mail": [ + { + "name": "from", + "type": "Person" + }, + { + "name": "to", + "type": "Group" + }, + { + "name": "contents", + "type": "string" + } + ], + "Group": [ + { + "name": "name", + "type": "string" + }, + { + "name": "members", + "type": "Person[]" + } + ] + }, + "domain": { + "name": "Ether Mail", + "version": "1", + "chainId": "0x1", + "verifyingContract": "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC" + }, + "primaryType": "Mail", + "message": { + "from": { + "name": "Cow", + "wallets": [ + "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826", + "0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF" + ] + }, + "to": { + "name": "Farmers", + "members": [ + { + "name": "Bob", + "wallets": [ + "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB", + "0xB0BdaBea57B0BDABeA57b0bdABEA57b0BDabEa57", + "0xB0B0b0b0b0b0B000000000000000000000000000" + ] + } + ] + }, + "contents": "Hello, Bob!" + } + }"#; + let typed_data = from_str::(string).expect("alas error!"); + let hash = hash_structured_data(typed_data.clone()).expect("alas error!"); + + assert_eq!( + &format!("{:x}", hash)[..], + "cd8b34cd09c541cfc0a2fcd147e47809b98b335649c2aa700db0b0c4501a02a0", + ); + } } diff --git a/util/EIP-712/src/error.rs b/util/EIP-712/src/error.rs index 3ec1292bb56..0eaa8e7bd0f 100644 --- a/util/EIP-712/src/error.rs +++ b/util/EIP-712/src/error.rs @@ -67,7 +67,7 @@ pub(crate) fn serde_error(expected: &str, field: Option<&str>) -> ErrorKind { } impl Fail for Error { - fn cause(&self) -> Option<&Fail> { + fn cause(&self) -> Option<&dyn Fail> { self.inner.cause() } diff --git a/util/EIP-712/src/parser.rs b/util/EIP-712/src/parser.rs index c2c16cd599a..21415d11d54 100644 --- a/util/EIP-712/src/parser.rs +++ b/util/EIP-712/src/parser.rs @@ -17,7 +17,6 @@ //! Solidity type-name parsing use lunarity_lexer::{Lexer, Token}; use crate::error::*; -use toolshed::Arena; use std::{fmt, result}; #[derive(Debug, Clone, PartialEq)] @@ -68,81 +67,70 @@ impl fmt::Display for Type { } } -pub struct Parser { - arena: Arena, -} - -impl Parser { - pub fn new() -> Self { - Parser { - arena: Arena::new() - } - } - /// the type string is being validated before it's parsed. - pub fn parse_type(&self, field_type: &str) -> Result { - #[derive(PartialEq)] - enum State { Open, Close } - - let mut lexer = Lexer::new(&self.arena, field_type); - let mut token = None; - let mut state = State::Close; - let mut array_depth = 0; - let mut current_array_length: Option = None; - - while lexer.token != Token::EndOfProgram { - let type_ = match lexer.token { - Token::Identifier => Type::Custom(lexer.token_as_str().to_owned()), - Token::TypeByte => Type::Byte(lexer.type_size.0), - Token::TypeBytes => Type::Bytes, - Token::TypeBool => Type::Bool, - Token::TypeUint => Type::Uint, - Token::TypeInt => Type::Int, - Token::TypeString => Type::String, - Token::TypeAddress => Type::Address, - Token::LiteralInteger => { - let length = lexer.token_as_str(); - current_array_length = Some(length - .parse() - .map_err(|_| - ErrorKind::InvalidArraySize(length.into()) - )? - ); - lexer.consume(); +/// the type string is being validated before it's parsed. +pub fn parse_type(field_type: &str) -> Result { + #[derive(PartialEq)] + enum State { Open, Close } + + let mut lexer = Lexer::new(field_type); + let mut token = None; + let mut state = State::Close; + let mut array_depth = 0; + let mut current_array_length: Option = None; + + while lexer.token != Token::EndOfProgram { + let type_ = match lexer.token { + Token::Identifier => Type::Custom(lexer.slice().to_owned()), + Token::TypeByte => Type::Byte(lexer.extras.0), + Token::TypeBytes => Type::Bytes, + Token::TypeBool => Type::Bool, + Token::TypeUint => Type::Uint, + Token::TypeInt => Type::Int, + Token::TypeString => Type::String, + Token::TypeAddress => Type::Address, + Token::LiteralInteger => { + let length = lexer.slice(); + current_array_length = Some(length + .parse() + .map_err(|_| + ErrorKind::InvalidArraySize(length.into()) + )? + ); + lexer.advance(); + continue; + } + Token::BracketOpen if token.is_some() && state == State::Close => { + state = State::Open; + lexer.advance(); + continue; + } + Token::BracketClose if array_depth < 10 => { + if state == State::Open && token.is_some() { + let length = current_array_length.take(); + state = State::Close; + token = Some(Type::Array { + inner: Box::new(token.expect("if statement checks for some; qed")), + length, + }); + lexer.advance(); + array_depth += 1; continue; - }, - Token::BracketOpen if token.is_some() && state == State::Close => { - state = State::Open; - lexer.consume(); - continue - } - Token::BracketClose if array_depth < 10 => { - if state == State::Open && token.is_some() { - let length = current_array_length.take(); - state = State::Close; - token = Some(Type::Array { - inner: Box::new(token.expect("if statement checks for some; qed")), - length - }); - lexer.consume(); - array_depth += 1; - continue - } else { - return Err(ErrorKind::UnexpectedToken(lexer.token_as_str().to_owned(), field_type.to_owned()))? - } + } else { + return Err(ErrorKind::UnexpectedToken(lexer.slice().to_owned(), field_type.to_owned()))?; } - Token::BracketClose if array_depth == 10 => { - return Err(ErrorKind::UnsupportedArrayDepth)? - } - _ => return Err(ErrorKind::UnexpectedToken(lexer.token_as_str().to_owned(), field_type.to_owned()))? - }; - - token = Some(type_); - lexer.consume(); - } + } + Token::BracketClose if array_depth == 10 => { + return Err(ErrorKind::UnsupportedArrayDepth)?; + } + _ => return Err(ErrorKind::UnexpectedToken(lexer.slice().to_owned(), field_type.to_owned()))? + }; - Ok(token.ok_or_else(|| ErrorKind::NonExistentType)?) + token = Some(type_); + lexer.advance(); } + + Ok(token.ok_or(ErrorKind::NonExistentType)?) } #[cfg(test)] @@ -151,22 +139,19 @@ mod tests { #[test] fn test_parser() { - let parser = Parser::new(); let source = "byte[][][7][][][][][][][]"; - parser.parse_type(source).unwrap(); + parse_type(source).unwrap(); } #[test] fn test_nested_array() { - let parser = Parser::new(); let source = "byte[][][7][][][][][][][][]"; - assert_eq!(parser.parse_type(source).is_err(), true); + assert_eq!(parse_type(source).is_err(), true); } #[test] fn test_malformed_array_type() { - let parser = Parser::new(); let source = "byte[7[]uint][]"; - assert_eq!(parser.parse_type(source).is_err(), true) + assert_eq!(parse_type(source).is_err(), true) } } diff --git a/util/blooms-db/Cargo.toml b/util/blooms-db/Cargo.toml index c64721e6f4a..543a7987725 100644 --- a/util/blooms-db/Cargo.toml +++ b/util/blooms-db/Cargo.toml @@ -6,9 +6,10 @@ authors = ["Parity Technologies "] [dependencies] byteorder = "1.2" -ethbloom = "0.5" +ethbloom = "=0.5.0" parking_lot = "0.7" tiny-keccak = "1.4" [dev-dependencies] +criterion = "0.3.0" tempdir = "0.3" diff --git a/util/blooms-db/benches/blooms.rs b/util/blooms-db/benches/blooms.rs index 4a0c54fbdbc..190caca99ba 100644 --- a/util/blooms-db/benches/blooms.rs +++ b/util/blooms-db/benches/blooms.rs @@ -14,68 +14,78 @@ // You should have received a copy of the GNU General Public License // along with Parity Ethereum. If not, see . -#![feature(test)] - -extern crate test; +#[macro_use] +extern crate criterion; extern crate tempdir; extern crate blooms_db; extern crate ethbloom; use std::iter; -use test::Bencher; +use criterion::Criterion; use tempdir::TempDir; use blooms_db::Database; use ethbloom::Bloom; -#[bench] -fn blooms_filter_1_million_ok(b: &mut Bencher) { +criterion_group!( + blooms, + bench_blooms_filter_1_million_ok, + bench_blooms_filter_1_million_miss, + bench_blooms_filter_1_million_miss_and_ok, +); +criterion_main!(blooms); + +fn bench_blooms_filter_1_million_ok(c: &mut Criterion) { let tempdir = TempDir::new("").unwrap(); let database = Database::open(tempdir.path()).unwrap(); database.insert_blooms(999_999, iter::once(&Bloom::zero())).unwrap(); - let bloom = Bloom::from_low_u64_be(0x001); + let bloom = Bloom::from(0x001); database.insert_blooms(200_000, iter::once(&bloom)).unwrap(); database.insert_blooms(400_000, iter::once(&bloom)).unwrap(); database.insert_blooms(600_000, iter::once(&bloom)).unwrap(); database.insert_blooms(800_000, iter::once(&bloom)).unwrap(); - b.iter(|| { - let matches = database.filter(0, 999_999, Some(&bloom)).unwrap(); - assert_eq!(matches, vec![200_000, 400_000, 600_000, 800_000]); + c.bench_function("blooms_filter_1_million_ok", move |b| { + b.iter(|| { + let matches = database.filter(0, 999_999, Some(&bloom)).unwrap(); + assert_eq!(matches, vec![200_000, 400_000, 600_000, 800_000]); + }) }); } -#[bench] -fn blooms_filter_1_million_miss(b: &mut Bencher) { +fn bench_blooms_filter_1_million_miss(c: &mut Criterion) { let tempdir = TempDir::new("").unwrap(); let database = Database::open(tempdir.path()).unwrap(); database.insert_blooms(999_999, iter::once(&Bloom::zero())).unwrap(); - let bloom = Bloom::from_low_u64_be(0x001); - let bad_bloom = Bloom::from_low_u64_be(0x0001); + let bloom = Bloom::from(0x001); + let bad_bloom = Bloom::from(0x0001); database.insert_blooms(200_000, iter::once(&bloom)).unwrap(); database.insert_blooms(400_000, iter::once(&bloom)).unwrap(); database.insert_blooms(600_000, iter::once(&bloom)).unwrap(); database.insert_blooms(800_000, iter::once(&bloom)).unwrap(); - b.iter(|| { - let matches = database.filter(0, 999_999, Some(&bad_bloom)).unwrap(); - assert_eq!(matches, vec![200_000, 400_000, 600_000, 800_000]); + c.bench_function("blooms_filter_1_million_miss", move |b| { + b.iter(|| { + let matches = database.filter(0, 999_999, Some(&bad_bloom)).unwrap(); + assert_eq!(matches, vec![200_000, 400_000, 600_000, 800_000]); + }) }); } -#[bench] -fn blooms_filter_1_million_miss_and_ok(b: &mut Bencher) { +fn bench_blooms_filter_1_million_miss_and_ok(c: &mut Criterion) { let tempdir = TempDir::new("").unwrap(); let database = Database::open(tempdir.path()).unwrap(); database.insert_blooms(999_999, iter::once(&Bloom::zero())).unwrap(); - let bloom = Bloom::from_low_u64_be(0x001); - let bad_bloom = Bloom::from_low_u64_be(0x0001); + let bloom = Bloom::from(0x001); + let bad_bloom = Bloom::from(0x0001); database.insert_blooms(200_000, iter::once(&bloom)).unwrap(); database.insert_blooms(400_000, iter::once(&bloom)).unwrap(); database.insert_blooms(600_000, iter::once(&bloom)).unwrap(); database.insert_blooms(800_000, iter::once(&bloom)).unwrap(); - b.iter(|| { - let matches = database.filter(0, 999_999, &vec![bad_bloom, bloom]).unwrap(); - assert_eq!(matches, vec![200_000, 400_000, 600_000, 800_000]); + c.bench_function("blooms_filter_1_million_miss_and_ok", move |b| { + b.iter(|| { + let matches = database.filter(0, 999_999, &vec![bad_bloom, bloom]).unwrap(); + assert_eq!(matches, vec![200_000, 400_000, 600_000, 800_000]); + }) }); } diff --git a/util/fetch/Cargo.toml b/util/fetch/Cargo.toml index c45c2ca4f42..1348faf64dc 100644 --- a/util/fetch/Cargo.toml +++ b/util/fetch/Cargo.toml @@ -12,8 +12,8 @@ hyper = "~0.12.9" hyper-rustls = "0.16.0" http = "0.1" log = "0.4" -tokio = "~0.1.8" -url = "1" +tokio = "0.1.22" +url = "2" bytes = "0.4" [features] diff --git a/util/journaldb/Cargo.toml b/util/journaldb/Cargo.toml index 045b42d6628..71689966626 100644 --- a/util/journaldb/Cargo.toml +++ b/util/journaldb/Cargo.toml @@ -21,4 +21,4 @@ rlp = { version = "0.3.0", features = ["ethereum"] } [dev-dependencies] env_logger = "0.5" keccak-hash = "0.1" -kvdb-memorydb = "0.1" +kvdb-memorydb = "=0.1.0" diff --git a/util/network-devp2p/src/host.rs b/util/network-devp2p/src/host.rs index 572f073a0d4..338148af895 100644 --- a/util/network-devp2p/src/host.rs +++ b/util/network-devp2p/src/host.rs @@ -835,6 +835,7 @@ impl Host { if duplicate { trace!(target: "network", "Rejected duplicate connection: {}", token); session.lock().disconnect(io, DisconnectReason::DuplicatePeer); + drop(handlers); self.kill_connection(token, io, false); return; } diff --git a/util/patricia-trie-ethereum/Cargo.toml b/util/patricia-trie-ethereum/Cargo.toml index 8cb8664a5ed..205201a2db4 100644 --- a/util/patricia-trie-ethereum/Cargo.toml +++ b/util/patricia-trie-ethereum/Cargo.toml @@ -9,7 +9,7 @@ license = "GPL-3.0" trie-db = "0.11.0" keccak-hasher = { version = "0.1.1", path = "../keccak-hasher" } hash-db = "0.11.0" -rlp = "0.3.0" +rlp = { version = "0.3.0", features = ["ethereum"] } parity-bytes = "0.1" ethereum-types = "0.4" elastic-array = "0.10" diff --git a/util/runtime/Cargo.toml b/util/runtime/Cargo.toml index 084fef55a73..d22106c4927 100644 --- a/util/runtime/Cargo.toml +++ b/util/runtime/Cargo.toml @@ -8,4 +8,4 @@ authors = ["Parity Technologies "] [dependencies] futures = "0.1" -tokio = "~0.1.9" +tokio = "0.1.22" diff --git a/util/version/Cargo.toml b/util/version/Cargo.toml index b824894bfbc..4f5f943e886 100644 --- a/util/version/Cargo.toml +++ b/util/version/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "parity-version" # NOTE: this value is used for Parity Ethereum version string (via env CARGO_PKG_VERSION) -version = "2.5.9" +version = "2.5.10" authors = ["Parity Technologies "] build = "build.rs" diff --git a/whisper/Cargo.toml b/whisper/Cargo.toml index bc29051b237..a0d44d51dc9 100644 --- a/whisper/Cargo.toml +++ b/whisper/Cargo.toml @@ -26,6 +26,6 @@ smallvec = "0.6" tiny-keccak = "1.4" time-utils = { path = "../util/time-utils" } -jsonrpc-core = "10.0.1" -jsonrpc-derive = "10.0.2" -jsonrpc-pubsub = "10.0.1" +jsonrpc-core = "14.0.3" +jsonrpc-derive = "14.0.3" +jsonrpc-pubsub = "14.0.3" diff --git a/whisper/cli/Cargo.toml b/whisper/cli/Cargo.toml index 5ed38e47d71..253df7cef01 100644 --- a/whisper/cli/Cargo.toml +++ b/whisper/cli/Cargo.toml @@ -10,9 +10,9 @@ docopt = "1.0" env_logger = "0.5" ethcore-network = { path = "../../util/network" } ethcore-network-devp2p = { path = "../../util/network-devp2p" } -jsonrpc-core = "10.0.1" -jsonrpc-http-server = "10.0.1" -jsonrpc-pubsub = "10.0.1" +jsonrpc-core = "14.0.0" +jsonrpc-http-server = "14.0.0" +jsonrpc-pubsub = "14.0.0" log = "0.4" panic_hook = { path = "../../util/panic-hook" } parity-whisper = { path = "../" } diff --git a/whisper/src/rpc/mod.rs b/whisper/src/rpc/mod.rs index 03d98b51ff8..3aa7aca1c07 100644 --- a/whisper/src/rpc/mod.rs +++ b/whisper/src/rpc/mod.rs @@ -69,7 +69,7 @@ fn abridge_topic(topic: &[u8]) -> Topic { } /// Whisper RPC interface. -#[rpc] +#[rpc(server)] pub trait Whisper { /// Info about the node. #[rpc(name = "shh_info")] @@ -81,7 +81,7 @@ pub trait Whisper { /// Import the given SECP2561k private key and return an identity. #[rpc(name = "shh_addPrivateKey")] - fn add_private_key(&self, types::Private) -> Result; + fn add_private_key(&self, _:types::Private) -> Result; /// Generate a new symmetric key and return an identity. #[rpc(name = "shh_newSymKey")] @@ -89,57 +89,56 @@ pub trait Whisper { /// Import the given symmetric key and return an identity. #[rpc(name = "shh_addSymKey")] - fn add_sym_key(&self, types::Symmetric) -> Result; + fn add_sym_key(&self, _:types::Symmetric) -> Result; /// Get public key. Succeeds if identity is stored and asymmetric. #[rpc(name = "shh_getPublicKey")] - fn get_public(&self, types::Identity) -> Result; + fn get_public(&self, _: types::Identity) -> Result; /// Get private key. Succeeds if identity is stored and asymmetric. #[rpc(name = "shh_getPrivateKey")] - fn get_private(&self, types::Identity) -> Result; + fn get_private(&self, _: types::Identity) -> Result; #[rpc(name = "shh_getSymKey")] - fn get_symmetric(&self, types::Identity) -> Result; + fn get_symmetric(&self, _: types::Identity) -> Result; /// Delete key pair denoted by given identity. /// /// Return true if successfully removed, false if unknown, /// and error otherwise. #[rpc(name = "shh_deleteKey")] - fn remove_key(&self, types::Identity) -> Result; + fn remove_key(&self, _: types::Identity) -> Result; /// Post a message to the network with given parameters. #[rpc(name = "shh_post")] - fn post(&self, types::PostRequest) -> Result; + fn post(&self, _: types::PostRequest) -> Result; /// Create a new polled filter. #[rpc(name = "shh_newMessageFilter")] - fn new_filter(&self, types::FilterRequest) -> Result; + fn new_filter(&self, _: types::FilterRequest) -> Result; /// Poll changes on a polled filter. #[rpc(name = "shh_getFilterMessages")] - fn poll_changes(&self, types::Identity) -> Result, Error>; + fn poll_changes(&self, _: types::Identity) -> Result, Error>; /// Delete polled filter. Return bool indicating success. #[rpc(name = "shh_deleteMessageFilter")] - fn delete_filter(&self, types::Identity) -> Result; + fn delete_filter(&self, _: types::Identity) -> Result; } /// Whisper RPC pubsub. -#[rpc] +#[rpc(server)] pub trait WhisperPubSub { // RPC Metadata type Metadata; - /// Subscribe to messages matching the filter. #[pubsub(subscription = "shh_subscription", subscribe, name = "shh_subscribe")] - fn subscribe(&self, Self::Metadata, Subscriber, types::FilterRequest); + fn subscribe(&self, _: Self::Metadata, _: Subscriber, _: types::FilterRequest); /// Unsubscribe from filter matching given ID. Return /// true on success, error otherwise. #[pubsub(subscription = "shh_subscription", unsubscribe, name = "shh_unsubscribe")] - fn unsubscribe(&self, Option, SubscriptionId) -> Result; + fn unsubscribe(&self, _: Option, _: SubscriptionId) -> Result; } /// Something which can send messages to the network.